Wie kann man auf eine function außerhalb einer class innerhalb dieser class im WP-Plugin zugreifen?

Ich entwickle ein WP-Plugin namens DD_Awesome_Plugin und dies ist mein Code bisher (vereinfachte Version ohne zusätzliche Code-Logik innerhalb der classnfunktionen):

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('Ymd H:i:s', time()); wp_mail('info@example.com', 'DD success message', "Success at $str." ); } 

Solutions Collecting From Web of "Wie kann man auf eine function außerhalb einer class innerhalb dieser class im WP-Plugin zugreifen?"

Erstellen Sie einen statischen Getter für Ihre classninstanz:

 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' ) ); } } 

Und jetzt erhalten Sie die Plugin-Instanz mit:

 add_action('admin_menu', function() { DD_Awesome_Plugin::get_instance()->add_menu_page(); }); 

Oder:

 add_action( 'admin_menu', array( DD_Awesome_Plugin::get_instance(), 'add_menu_page' ) );