Проблема с областью администрирования WordPress - меню отображается, текст страницы не отображается - PullRequest
0 голосов
/ 04 марта 2019

Wordpress 5.1, Ubuntu 18.04 VBox на хосте Windows

Я создал плагин «Пример страницы администратора»

Я получил пункты меню, но страницы отображаются пустыми, скореечем показ HTML-текста "Welcome ...", предложенного ниже в коде.Я знаю, что это проблема масштаба, но я не совсем уверен, как к ней подойти.Да, я мог бы вынести все это за пределы класса, и он рендерится, но это хорошая практика для использования классов, поэтому я бы предпочел сделать это таким образом.Я был бы признателен за метод, как действовать правильно.

class EAP_Example_Widget {

    function __construct() {
        add_action( 'admin_menu', array($this,'my_admin_menu'));
    }

    function my_admin_menu() {
        add_menu_page( 'Example Admin Page', 'EAP Menu', 'manage_options', 'eap-plugin/eap-admin-page.php', 'eap_admin_page', 'dashicons-tickets', '9999' );
        add_submenu_page( 'eap-plugin/eap-admin-page.php', 'Example Admin Sub Page', 'EAP Sub Menu', 'manage_options', 'eap-plugin/eap-admin-sub-page.php', 'eap_admin_sub_page' ); 
    }

    function eap_admin_page(){
        echo '<h2>Welcome To Example Admin Page</h2>';
    }

    function eap_admin_sub_page(){
        echo '<h2>Welcome To Example Admin Sub Page</h2>';
    }

}

// Setup and initialize the admin page.
$eap_admin_page_startup = new EAP_Example_Widget();

1 Ответ

0 голосов
/ 05 марта 2019

Это была абсолютно проблема с областью действия.

Чтобы вызвать функцию из другой функции, мне пришлось самостоятельно ссылаться на класс EAP_Example_Widget.

Например, вместо 'eap_admin_page 'для вызываемой функции, должно быть:

__CLASS__ .'::eap_admin_page'.

См. фиксированный пример ниже.Теперь это работает.

class EAP_Example_Widget {

    function __construct() {
        add_action( 'admin_menu', array($this,'my_admin_menu'));
    }

    function my_admin_menu() {
        add_menu_page( 'Example Admin Page', 'EAP Menu', 'manage_options', 'eap-plugin/eap-admin-page.php', __CLASS__ .'::eap_admin_page', 'dashicons-tickets', '9999' );
        add_submenu_page( 'eap-plugin/eap-admin-page.php', 'Example Admin Sub Page', 'EAP Sub Menu', 'manage_options', 'eap-plugin/eap-admin-sub-page.php', __CLASS__ .'::eap_admin_sub_page' ); 
    }

    function eap_admin_page(){
        echo '<h2>Welcome To Example Admin Page</h2>';
    }

    function eap_admin_sub_page(){
        echo '<h2>Welcome To Example Admin Sub Page</h2>';
    }

}

// Setup and initialize the admin page.
$eap_admin_page_startup = new EAP_Example_Widget();
...