Я пытаюсь создать ссылку меню администратора на панели управления бэкэнд, которая приведет пользователей к интерфейсу своего сайта. Я пытаюсь использовать этот код, но по какой-то причине перенаправление не работает.
// Custom Menus add_action('admin_menu', 'register_web_menu_page'); function register_web_menu_page() { add_menu_page('View My Website', 'View My Website', 'add_users', 'web_menu_page', 'web_menu_page', '', null, 9); } function web_menu_page(){ wp_redirect( home_url() ); exit; }
Пользователь нажимает ссылку меню и берет веб-страницу и не перенаправляется на домашний URL-адрес.
Я не уверен, почему он не перенаправляет, никакой помощи?
Проблема в том, что функция, которую вы используете, запускается после HTTP-заголовка, отправляется, поэтому она не может перенаправляться.
Вы должны использовать другой способ.
Один из методов может перехватить глобальную переменную menu
и добавить новый пункт меню со всеми свойствами:
add_action( 'admin_menu', 'register_web_menu_page', 999); function register_web_menu_page () { global $menu; $menu[9] = array ( 'View My Website', // menu title 'add_users', // capability home_url(), // menu item url null, 'menu-top menu-icon-generic toplevel_page_web_menu_page', // menu item class 'View My Website', // page title false // menu function ); }
Это не исключает стандартный путь, потому что вы знаете стандартный способ добавления пунктов меню – использовать функцию add_menu_page
.
Если вы хотите использовать только стандартные методы, настройте меню, используя функцию '__return_false'
-nothing, точно так же, как '__return_false'
, а затем используйте другую функцию для перенаправления на домашнюю страницу, если $_GET['page']
= для вашего меню. admin init (перед отправкой заголовков):
add_action('admin_menu', 'register_web_menu_page'); function register_web_menu_page() { add_menu_page('View My Website', 'View My Website', 'add_users', 'web_menu_page', '__return_false', null, 9); } add_action('admin_init', 'redirect_to_site', 1); function redirect_to_site() { if ( isset($_GET['page']) && $_GET['page'] == 'web_menu_page' ) { wp_redirect( home_url() ); exit(); } }
Вы можете использовать load-(page)
( reference )
Из исходного кода.
add_action('admin_menu', 'register_web_menu_page'); function register_web_menu_page() { $hook = add_menu_page('View My Website', 'View My Website', 'add_users', 'web_menu_page', 'web_menu_page', '', null, 9); add_action('load-' . $hook, 'redirectNiceUrl'); } function redirectNiceUrl() { wp_redirect(home_url()); }