WordPress показывает страницу меню при подключении к admin_menu, но не admin_init - PullRequest
0 голосов
/ 03 июля 2019

Я создал плагин и писал код для страницы в меню администратора.Ссылка в бэкэнд-меню появилась и работала нормально (ссылка на левой панели инструментов).Однако, когда я попытался щелкнуть по нему, URL-адрес загрузился, но я получил сообщение на странице «Извините, у вас нет доступа к этой странице».

Мой начальный код был ниже:

add_action('admin_init', 'settings_menu_page');

function settings_menu_page() {

    add_menu_page( 
    __('Settings Page', 'wpplugin'),
    __('Custom Settings', 'wpplugin'),
    'manage_options',
    'wpplugin',
    'settings_page_callback',
    '',
    85
 );

}

function settings_page_callback() {
    esc_html_e( 'Settings page text', 'wpplugin' );
}

И тогда я решил изменить хук действия на 'admin_menu', чтобы код выглядел так:

add_action('admin_menu', 'settings_menu_page');

function settings_menu_page() {

    add_menu_page( 
    __('Settings Page', 'wpplugin'),
    __('Custom Settings', 'wpplugin'),
    'manage_options',
    'wpplugin',
    'settings_page_callback',
    '',
    85
 );

}

function settings_page_callback() {
    esc_html_e( 'Settings page text', 'wpplugin' );
}

И с этим кодом я могу видеть страницу.Единственное, что изменилось, это хук.

Я ссылался на документы для admin_menu и admin_init , и я немного растерялся относительно того, чтоРазница между ними заключается в том, что они разрешают одно с разрешениями, но не другое.

Примечание: я был одним и тем же пользователем WordPress для обоих из них с правами администратора.

Кто-нибудь знаеткакая тут разница?

1 Ответ

0 голосов
/ 03 июля 2019

Разница между двумя крючками в том, когда они срабатывают. admin_menu срабатывает, когда имеется базовая структура меню и инициализирована базовая административная панель.

Хук admin_init, с другой стороны, запускается перед любыми другими хуками на стороне администратора, которые срабатывают, когда пользователь получает доступ к области администратора. Кроме того, admin_init hook не работает на экранах администратора, обращенных к пользователю . Он работает на admin-ajax.php и admin-post.php

Подробнее об этих хуках и последовательности выполнения вы можете прочитать по ссылкам, указанным ниже:

admin_init

admin_menu

Действия по умолчанию Запускать впереди и администрировать

Удачи !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...