WP_REDIRECT在管理菜单页面上不起作用

时间:2013-10-08 作者:730wavy

我试图在后端仪表板上创建一个管理菜单链接,将用户带到他们站点的前端。我正在尝试使用此代码,但由于某些原因,重定向无法工作。

// 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;
}
用户单击菜单链接并转到web\\u menu\\u页面,并且不会重定向到主url。

我不知道为什么它没有重定向,有什么帮助吗?

2 个回复
最合适的回答,由SO网友:gmazzap 整理而成

问题是,您使用的函数在发送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\', 然后使用另一个函数重定向到主页,如果$_GET[\'page\'] is=到admin init上的菜单slug(在发送标题之前):

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();
    }
}

SO网友:vee

您可以使用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());
}

结束

相关推荐

Copy Root Multisite Site

我在WordPress中创建了一个多站点安装,位于example.com 网站位于example.com/site1, example.com/site2 等是否可以创建example.com 在example.com/site3?Blog Copier 和NS cloner 由于某种原因,不允许您创建根站点的副本。这背后的技术限制是什么?