嗨@汤姆,
如果我正确理解了您的问题,那么您就不需要了解如何向菜单添加链接(似乎您已经知道),而是需要学习如何使链接正确重定向,对吗?
从管理菜单项重定向到外部URL
如果是这样,您需要做的是不使用菜单项功能,而应尽早“钩住” WordPress,以使它除了可能输出HTTP标头外,没有输出任何内容。呼叫时最早/wp-admin/themes.php
出现的异常显示after_setup_theme
似乎有效。
使用“菜单条”,以便可以在挂钩中对其进行测试
但是要使其正常工作,我们首先需要add_theme_page
在admin_menu
hook /您的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,否则我们将重定向回管理控制台:
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;
}
}
笔记:
我选择在hook / 函数中使用switch
/ case
语句,以便在需要时添加其他重定向更加容易。只需添加更多的case语句。after_setup_theme
redirect_from_admin_menu()
goto
在wp_redirect()
与wp_safe_redirect()
功能并不会真正结束; 您需要明确发出退出语句,以使WordPress停止并且不覆盖您的重定向。
希望这可以帮助!
'-5'
而不是-5
,否则,该键就被认为是无效的(我认为)..(但是,如果我没记错的话,负字符串也可以工作)..