Привіт @Tom ,
Якщо я правильно розумію ваше запитання, вам не так багато потрібно знати, як додати посилання в меню (здається, ви це вже знаєте), а натомість потрібно навчитися отримувати ваше посилання для переадресації правильно, правда?
Перенаправлення на зовнішню URL-адресу з пункту меню адміністратора
Якщо так, то вам потрібно не використовувати функцію пункту меню, а замість того, щоб «зачепити» WordPress досить рано, щоб він не виводив нічого, крім можливих заголовків HTTP. Найдавніший гак під час дзвінка /wp-admin/themes.php
здається, after_setup_theme
і він, здається, працює добре.
Використовуйте "Меню слизька", щоб ви могли його перевірити на гачку
Але для того, щоб він працював, спершу нам потрібно змінити ваш дзвінок add_theme_page
у admin_menu
гачку / вашій create_theme_style_page()
функції. Ми скинули п’ятий параметр (функція викликати для реалізації параметра адміністрування), оскільки він нам не потрібен, і змінили четвертий параметр ( "меню слугу" ) на themes.php?goto=build-styleguide-page
.
Хоча ми могли вибрати майже буквально що-небудь для четвертого параметра, враховуючи, що ми будемо переспрямовувати, я перенаправляв на ту ж сторінку ( themes.php
), що й інші варіанти зовнішності для послідовності. Я також просто довільно придумав цю назву, goto
оскільки WordPress не використовує її, і, здається, це має сенс.
add_action('admin_menu', 'create_theme_style_page');
function create_theme_style_page() {
add_theme_page(
'Theme Styleguide',
'Theme Styleguide',
'administrator',
'themes.php?goto=build-styleguide-page'
);
}
До речі, ми позбулися вашої build_styleguide_page()
функції, оскільки нам це не потрібно для цього рішення.
Перенаправлення на найдавніший гачок на themes.php
:after_setup_theme
Як наш останній біт коду, ми реалізуємо наш after_setup_theme
гак у своїй redirect_from_admin_menu()
функції. У нас є тест, щоб перевірити, чи є поточна сторінка, themes.php
і переконатися, що URL-адресу goto
було передано параметр URL-адреси. Потім він перевіряє значення goto
використання switch
/ case
оператора, щоб перевірити, чи має він значення 'build-styleguide-page'
; якщо так, то він переспрямовує на вашу заявлену гіпотетичну форму, наприклад, Google, інакше ми просто перенаправляємося назад на панель адміністратора:
add_action('after_setup_theme', 'redirect_from_admin_menu');
function redirect_from_admin_menu($value) {
global $pagenow;
if ($pagenow=='themes.php' && !empty($_GET['goto'])) {
switch ($_GET['goto']) {
case 'build-styleguide-page':
wp_redirect("http://www.google.com");
break;
default:
wp_safe_redirect('/wp-admin/');
break;
}
exit;
}
}
Примітки:
Я вирішив використовувати switch
/ case
оператор у after_setup_theme
гачку / redirect_from_admin_menu()
функції, щоб було легше додати додаткові goto
переадресації, якщо вам потрібно; просто додайте більше тверджень справи.
wp_redirect()
і wp_safe_redirect()
функції фактично не припиняється; вам потрібно явно видати заяву про вихід, щоб змусити WordPress зупинятись і не змінювати переадресацію.
Сподіваюся, це допомагає!
'-5'
і ні-5
, інакше ключ вважається недійсним (я думаю) .. (негативні рядки працюють, хоча, якщо я не помиляюся) ..