Je développe un plug-in WP appelé par exemple. DD_Awesome_Plugin et ceci est mon code jusqu'à présent (version simplifiée sans logique de code supplémentaire dans les fonctions de classe):
class DD_Awesome_PLugin {
public function __construct()
{
}
public function add_menu_page()
{
add_options_page('DD Awesome PLugin', 'DD Awesome PLugin', 'administrator', __FILE__, array('DD_Awesome_PLugin', 'display_options_page'));
}
public function display_options_page()
{
$plugin_options = get_option('dd_my_awesome_plugin');
echo "Here we go admin!";
/* and after echo I need to triger a function "trigger_me_from_class()" that is located outside of the class. */
}
}
add_action('admin_menu', function() {
DD_Awesome_PLugin::add_menu_page();
});
add_action('admin_init', function() {
new DD_Awesome_PLugin();
include_once dirname(__FILE__) . ('/simple_html_dom.php');
});
/* just trigger this function "trigger_me_from_class" from "display_options_page" function (situated in DD_Awesome_plugin class above) */
public function trigger_me_from_class()
{
$str = date('Y-m-d H:i:s', time());
wp_mail('[email protected]', 'DD success message', "Success at $str." );
}
Créez un getter statique pour votre instance de classe:
class DD_Awesome_Plugin
{
/**
* Plugin main instance.
*
* @type object
*/
protected static $instance = NULL;
/**
* Access plugin instance. You can create further instances by calling
* the constructor directly.
*
* @wp-hook wp_loaded
* @return object T5_Spam_Block
*/
public static function get_instance()
{
if ( NULL === self::$instance )
self::$instance = new self;
return self::$instance;
}
public function add_menu_page()
{
add_options_page(
'DD Awesome PLugin',
'DD Awesome PLugin',
'administrator',
__FILE__,
array( $this, 'display_options_page' )
);
}
}
Et maintenant, vous obtenez l'instance de plugin avec:
add_action('admin_menu', function() {
DD_Awesome_Plugin::get_instance()->add_menu_page();
});
Ou:
add_action(
'admin_menu',
array( DD_Awesome_Plugin::get_instance(), 'add_menu_page' )
);