我使用add_menu_page添加了一个菜单,所有菜单都正常工作,但点击后我希望此菜单页面打开特定帖子ID的帖子编辑器。
作为一个概念验证,我试图将javascript重定向回到do函数中,就像这样......
// Load up the menu page
function register_availability_custom_menu_page() {
add_menu_page('custom menu title', 'Availability', 'add_users', 'options', 'options_do_page');
}
function options_do_page() {
echo "<script type=\"text/javascript\">";
echo "window.location = '/whatever_page.php';";
echo "</script>";
}
这种方法确实有效,但我想知道这是否是最好的方法,是否有更好的方法重定向到我追求的页面?
我现在也尝试使用wp_redirect和这段代码......
add_action( 'admin_menu' , 'admin_menu_new_items' );
function admin_menu_new_items() {
wp_redirect( home_url() );
exit;
}
这给了我一个Headers已发送的错误,有人可以建议我哪里出错吗?
答案 0 :(得分:0)
如果我理解正确,您不需要重定向。不要在函数add_menu_page
中使用$menu_slug
,而是放置目标页面的地址,例如:
$the_post_title = 'The Portfolio';
add_action( 'admin_menu', 'wpse_59050_add_menu' );
function wpse_59050_add_menu()
{
global $the_post_title;
$our_page = get_page_by_title( $the_post_title );
$settings_page = add_menu_page(
'Edit '.$our_page->post_title,
'Edit '.$our_page->post_title,
'add_users',
'/post.php?post='.$our_page->ID.'&action=edit',
'',
'',
2
);
}
此功能来自以下WordPress答案:Highlighting a Menu Item by Post Name。你需要一些jQuery来正确突出这个顶级菜单,检查那个Q中的my和TheDeadMedic答案。
答案 1 :(得分:0)
我找到了一个不使用JS / JQ的两步解决方案。
第1步:
在脚本顶部附近,放置以下PHP以显示隐藏第一页的CSS:
add_action('admin_head', 'hide_my_first_page');
function hide_my_first_page(){
echo '<style>
a[href="admin.php?page=admin_menu_slug"] + ul > li.wp-first-item{
display: none;
}
</style>';
}
admin_menu_slug
是传递给add_menu_page();
的第四个参数。
第2步:
获取您要运行的页面的功能,并将其作为add_menu_page();
答案 2 :(得分:0)
最近为pootle page builder做了这个,而这个AFAIK是最好的方式,
/**
* Redirecting from Page Builder > Add New page
* @since 0.1.0
*/
function add_new() {
global $pagenow;
if ( 'admin.php' == $pagenow && 'page_builder_add' == filter_input( INPUT_GET, 'page' ) ) {
header( 'Location: ' . admin_url( 'whatever-page.php' ) );
die();
}
}
add_action( 'admin_init', 'add_new' );
将page_builder_add
替换为您的页面slug,将admin_url( 'whatever-page.php' )
替换为您想要重定向到的网址。
我们总是使用scrutinizer-ci来获得最佳代码实践并保持代码分数大于9.5 / 10,因此所有代码(包括此代码)都是安全和优化的;)
Lemme知道它是如何起作用的。
干杯