将菜单固定链接/超链接仅替换为菜单名称/插件

时间:2015-11-01 作者:Tauras

我不知道我问的是否正确,但我会试试。I am doing this for history pushstate purpose.

Code 要获取菜单,无需ulli:

$topmenu= array(
  \'container\'       => false,
  \'echo\'            => false,
  \'items_wrap\'      => \'%3$s\',
  \'depth\'           => 0
);

echo strip_tags(wp_nav_menu( $topmenu), \'<a>\');
目前,它只提供mes<a> 标记为href 正如所料。

For example:

<a href="http://example.com/page1">Page 1</a>
<a href="http://example.com/page2">Page 2</a>
<a href="http://example.com/page3">Page 3</a>
// etc

My question:

如何在中禁用/隐藏完整永久链接/超链接href 属性,但是否继续显示页段塞?

What i need for example:

<a href="/page1"></a>
// etc
我试着让它改变nav-menu-template.php, 但我失败了。

谢谢你的回答。

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

首先-

我试着让它改变nav-menu-template.php

永远不要编辑核心文件!这总是个坏主意。充其量,当核心更新时,您将丢失更改。

为此,您可以使用nav_menu_link_attributes 过滤器以修改href 属性此过滤器将分别应用于每个菜单项。

在本例中,我们将一个函数挂接到过滤器上str_replace 这个home_url 使用空字符串。所以如果我们的主页URL是http://example.com, URL为http://example.com/something, 的新值href 将是/something. 那么我们return 修改的属性。

function wpdev_remove_home_url_from_menu_items( $atts, $item, $args ) {
    $atts[\'href\'] = str_replace( home_url(), \'\', $atts[\'href\'] );
    return $atts;
}
add_filter( \'nav_menu_link_attributes\', \'wpdev_remove_home_url_from_menu_items\', 10, 3 );
我们只使用了$atts 参数,但您会注意到还有另外两个参数-菜单项对象和菜单参数,以防您需要对特定菜单项或菜单进行任何检查以决定如何修改属性。

您还可以使用此过滤器添加其他属性,如data, rel, 和target.

相关推荐

Wordpress Permalinks

我在最近建立的网站上使用Wordpress Sydney主题。如果我将永久链接更改为post选项,我的网页链接将中断。对于不是技术大师的人来说,有没有简单的方法来解决这个问题。任何(详细的)帮助都将不胜感激。