Intereting Posts
wp_nav_menu: проверьте, имеет ли элемент списка дочерние элементы и добавляет ссылку на привязку класса Обновление WP CLI в основных и подпапках Область пользователей с проверкой подлинности htaccess / htpasswd извне? Как показать второе название страницы на странице htaccess – Защита паролем подкаталога Пользовательские таксономии в классе тела с родительским пугом Вход Api с Meta_key и Meta_value Автоматически установите изображение первой публикации в качестве предпочтительного изображения Как выполнить WordPress, как если бы он был в корневой папке, пока он установлен в подкаталоге? Журнал изменений в блоге Печать имени файла (ов) шаблона WordPress для отладки Почему переходные процессы могут работать неправильно? Подключение таблицы стилей в WordPress с использованием меньших стилей Получение и вставка данных в пользовательские поля Поиск системных диаграмм WordPress

Добавить меню администратора внутри объекта Construct или Init

Я думал, что продвигаюсь в своем развитии WordPress Development, пока не наткнулся на плагины Boilerplate для WordPress, и он использует объект класса. Я в порядке с этим и понимаю эти концепции, и я разработчик .Net. Но по какой-то причине я не могу заставить обратный вызов функционировать должным образом. Все, что я хочу в этот момент, – это меню администратора, и когда вы нажимаете на этот пункт меню, он отображает что-то вроде «ПОЖАЛУЙСТА, ПОМОГИТЕ МЕНЯ !!!». Посмотрите, что у меня внизу, и может ли кто-нибудь объяснить, что у меня не так?

class school_manager { function __construct() { add_action( 'init', array( $this, 'init' ) ); } public function init(){ add_action('admin_menu', array(&$this, 'add_admin_menu')); } public function add_admin_menu(){ add_menu_page( 'School Manager Settings', 'School Manager', 'administrator', 'school-manager-settings', 'show_admin_settings_page', null ); } public function show_admin_settings_page(){ echo '<p>This is a test for the admin settings page. Please work!</p>'; } } 

Мой новый пункт меню появляется (как это было, когда я не использовал объект класса в моей плагиновой архитектуре. Но когда я нажимаю на элемент меню, я получаю следующую ошибку:

Предупреждение: call_user_func_array () [function.call-user-func-array]: ожидается, что первый аргумент будет действительным обратным вызовом, «school_manager :: create_admin_page» был указан в H: \ root \ home \ xxxxx \ wp-includes \ plugin .php в строке 406

Я пытаюсь создать плагин, который имеет не только меню администратора и подменю, но также хочет использовать API настроек, пытаясь следовать этой серии . Таким образом, это один из важных моментов, чтобы получить что-то простое, как пункт меню для работы, прежде чем я смогу продолжить.

Обратный вызов, который вы add_menu_page() в add_menu_page() является статической функцией, а не методом класса. Должен быть:

 add_menu_page( 'School Manager Settings', 'School Manager', 'administrator', 'school-manager-settings', array ( $this, 'show_admin_settings_page' ) ); 

И, пожалуйста, не используйте &$this больше, это PHP 4. 🙂

Мой демонстрационный плагин T5 Admin Menu Demo может помочь понять, как это работает.