正在向home_url添加子域,以获取“Add_Menu_Page”

时间:2016-10-19 作者:Jay

我正在尝试添加Wordpress管理菜单项,该菜单项将指向

http://docs.[currentdomain]

我的插件代码当前为:

function user_manual() {
    add_menu_page(
        __( \'Custom Menu Title\', \'textdomain\' ),
        \'Manual\',
        \'manage_options\',
        \'http://docs\' . home_url(),
        \'\',
        \'dashicons-book-alt\',
        1
    );
}
add_action( \'admin_menu\', \'user_manual\' );
但我最终得到的是:http://docshttp/www.domain.com

如何在不硬编码域名的情况下实现这一点?

1 个回复
SO网友:bravokeyl

你的方法可以说是错误的。一个人不应该使用add_menu_page 对于外部链接,因为该函数不是为此目的创建的。添加菜单页面在管理区域中添加一个页面menu_slug 作为第四个论点。

如果我们看看add_menu_page/dev ref source,我们可以注意到,无论我们在函数中传递的URL是通过什么plugin_basename / dev ref 它规范化并替换路径,为我们提供相对于插件目录的路径。

相反,你可以把它挂到管理栏上,我认为这是放置外部链接的正确位置(如果这只是目的的话)

function wpse243214_user_manual($wp_admin_bar) {
    $wp_admin_bar->add_menu( array(
        //\'parent\'    => \'wpse-parent-id\', // parent if any
        \'id\'        => \'wpse243214_usermanual\',
        \'title\'     => __(\'User Manual\'),
        \'href\'      => \'http://docs.\'.basename(esc_url(home_url())),
    ) );
}
//change priority(15) accordingly
add_action( \'admin_bar_menu\', \'wpse243214_user_manual\', 15 );
这样我们就可以

WP Admin Bar

还请注意,我使用了basename 对于home_url 否则,我们将获得一个带有http或https方案的链接(http://www.example.com).