如何在WordPress中制作菜单的动态URL?

时间:2020-01-31 作者:Hrvoje Batrnek

我的网站地址(URL)是http://something.ddns.net/PS. 我有一个标题自定义链接菜单URL,如“/#服务”。这会将我带到当前页面上的位置,但我希望它会将我带到根页面上的位置。我是否可以使用一个变量来表示站点地址(URL)或WordPress地址(URL),例如“[站点URL]/#服务”?

我之所以需要这个,是因为我想在不浏览所有菜单和更改URL的情况下更改网站的URL。我希望菜单能够反映Wordpress设置中的站点根目录。

相关问题:当我第一次单击链接时,它不会跳转到页面上的#服务,为什么我需要在行中单击它两次?

编辑:为什么有人希望链接是相对于根而不是相对于网站地址(URL)?

1 个回复
SO网友:Vitauts Stočka

如果您的自定义链接URL与示例中所写的完全相同,那么它应该可以正常工作。开头的“/”已经表示“站点根目录”,它应该在单次(第一次)单击时起作用。也许你已经安装了一些与菜单相关的插件,或者你的主题以某种方式改变了菜单URL。或者涉及客户端javascript。

当您将鼠标悬停在自定义菜单链接上时,在浏览器状态栏(左下角)中会看到什么URL?应该是这样的[site_root]/#services.

UPDATE:

当WordPress安装在子目录中时/#services 将链接到错误的页面。无法添加[site_root] 菜单URL中的前缀,因此您可以使用或必须使用真实URL/PS/#services (并且在更改网站根目录后必须全部更改)或者您可以添加过滤器,以自动为所有菜单项添加前缀,开头为/. 请记住,如果您需要添加链接到real 站点根目录,必须使用完整URLhttp://something.ddns.net/ 而不是/.

function my_nav_menu_link_attributes( $atts ) {
    if ( \'/\' == substr( $atts[\'href\'], 0, 1 ) ) {
        $atts[\'href\'] = site_url() . $atts[\'href\'];
    }
    return $atts;
}
add_filter( \'nav_menu_link_attributes\', \'my_nav_menu_link_attributes\', 20 );

相关推荐

Ajax WordPress pass post URLs

我正在使用wp_localize_script 将post数据发送到ajax。wp_localize_script( \'my-script.js\', \'ajax_object\', array(\'ajax_url\' => admin_url(\'admin-ajax.php\')) ); add_action( \'wp_ajax_load_more_posts\', \'ajax_posts\' ); 将post数据发送到ajax:function ajax_posts