你好@Tom,
如果我正确理解了你的问题,你就不需要知道如何在菜单中添加链接(似乎你已经知道了),而是需要学习如何让链接正确重定向,对吗?
从管理菜单项重定向到外部URL如果是这样,您需要做的是不要使用菜单项功能,而是尽早使用“hook”WordPress,这样它就不会输出任何内容,除了可能的HTTP头。呼叫时最早的钩子/wp-admin/themes.php
似乎是after_setup_theme
而且似乎效果很好。
使用“Menu-Slug”,这样您就可以在钩子中测试它,但要使其正常工作,我们首先需要修改您的调用add_theme_page
在admin_menu
挂钩/您的create_theme_style_page()
作用我们删除了第五个参数(调用以实现admin选项的函数),因为我们不需要它,并将第四个参数(menu slug)更改为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,否则我们只会重定向回admin dashboard:
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;
}
}
Notes:
<我选择使用
switch
/
case
中的声明
after_setup_theme
挂钩/
redirect_from_admin_menu()
功能,以便更容易添加其他
goto
如果需要,重定向;只需添加更多case语句。
在wp_redirect()
和wp_safe_redirect()
函数实际上不会终止;您需要显式发出exit语句以使WordPress停止,而不是覆盖重定向。
希望这有帮助!