我们如何更新菜单以获取页面的slug而不是整个链接?
默认使用以下代码
的functions.php
function register_my_menu() {
register_nav_menu('header-menu',__( 'Header Menu' ));
}
add_action( 'init', 'register_my_menu' );
的header.php
wp_nav_menu( array( 'theme_location' => 'header-menu' ) );
Outpu HTML看起来像这样:
<ul>
<li class="page_item page-item-4 current_page_item"><a href="http://localhost/wordpress_tester/first-page/">First
page</a></li>
<li class="page_item page-item-2"><a href="http://localhost/wordpress_tester/second-page/">Second Page</a></li>
<li class="page_item page-item-9"><a href="http://localhost/wordpress_tester/third-page/">Third Page</a></li>
</ul>
正如我所见&#34;首页&#34;,&#34;第二页&#34;和&#34;第三页&#34;是一堆页。 如何更新菜单链接
<a href="#first-page">First Page</a>
而不是
<a href="http://localhost/wordpress_tester/first-page/">First Page</a>
看起来default arguments之一没有提供此解决方案
答案 0 :(得分:0)
您可以使用nav_menu_link_attributes
过滤器:nav_menu_link_attributes。使用此过滤器时,您会收到每个菜单项的链接属性,您可以更改它们。
链接的属性如下所示:
array (size=4)
'title' => string '' (length=0)
'target' => string '' (length=0)
'rel' => string '' (length=0)
'href' => string '#menu-item-1' (length=37)
正如您所看到的,其中一个属性是href
属性,因此您可以像这样更改它:
add_filter( 'nav_menu_link_attributes', function($atts, $item, $args, $depth) {
$atts['href'] = '#' . $item->post_name; //or what you want, here you have all WP_Post menu object
return $atts;
}, 10, 4 );
答案 1 :(得分:0)
也许您需要使用Wordpress菜单的自定义链接。 Read this