自动将#添加到子菜单URL

时间:2014-04-14 作者:Tom

我正在尝试替换所有子页面URL以自动包含#

示例:http://www.website.com/parentfoo/#childfoo

我试过使用wp_setup_nav_menu_item 运行所有子菜单项并向其中添加“#”,但现在$menu\\u item->post\\u name会显示ID,因此我不知道如何正确替换字符串。

目前为止我拥有的:

function auto_hashtag( $menu_item ) {
    if ( ! is_admin() && $menu_item->post_parent > 0) {

        // url
        $url = $menu_item->url;
        // slug
        $slug = $menu_item->post_name;
        $menu_item->url = str_replace($slug, "#"+$slug, $url);
    }

    return $menu_item;
}
add_filter( \'wp_setup_nav_menu_item\', \'auto_hashtag\' );

2 个回复
SO网友:Tom

这最终起了作用。

function auto_hashtag( $menu_item ) {
    if ( ! is_admin() && $menu_item->post_parent > 0) {

        // url
        $url = $menu_item->url;
        $menu_item->url = preg_replace(\'!/([^/]+)/$!\', "/#\\\\1", $url);
    }

    return $menu_item;
}
add_filter( \'wp_setup_nav_menu_item\', \'auto_hashtag\' );

SO网友:Douglas.Sesar

你想做的似乎是个坏主意;这个# URL末尾使用符号表示网站滚动到的定位点位置。

以这个链接的页面为例:

Add # to submenu URLs automatically

单击时,它会将屏幕向下移动到<div> 标记为id 属于post-form.

在您给出的示例中http://www.website.com/parentfoo/#childfoo , 浏览器将转到“parentfoo”页面,并查找带有id 属于childfoo.

将所有默认URL重写更改为您想要的URL结构是一个坏主意。

换句话说,如果继续,子页面URL将不再是子页面URL。

也许我只是不明白你想做什么??

结束

相关推荐

Rewriting WordPress URLs

我有一个插件,它通过一个短代码通过GET请求获取输入。快捷码放在带有地址/搜索的页面上,用于执行此特定搜索的查询是/搜索/?VenuName=。这很好用。但是,我需要重写它,以便当用户转到/地点/时,它加载上述搜索。This gist 包含我的原始代码(失败),以及Pippin关于我应该在哪里的建议(也失败)。我已经尝试了我能想到的一切,它总是导致404错误,或者重定向到主页(这毫无意义)。我还尝试了通过Rewrite plugin, 结果是一样的。如果您能提供任何帮助,我们将不胜感激。不幸的是,我在这个