我在wordpress上构建自己的主题,现在我希望我的菜单项在活动时添加“活动”类。
<div class="top-nav">
<ul class="memenu skyblue">
<li class="active"><a href="index.php">Home</a></li>
<?php wp_list_pages( '&title_li=' ); ?>
在我的functions.php中,我添加了这段代码。
add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
if( in_array('current_page_parent', $classes) ){
$classes[] = 'active ';
}
return $classes;
}
现在这段代码不会将活动类添加到li中。有谁知道代码有什么问题?或者我需要添加到代码中吗?
如果我试试这个我得到这个输出
<ul class="memenu skyblue">
<li class="active"><a href="index.php">Home</a></li>
<li class="page_item page-item-2 current_page_item"><a href="#">About</a></li>
<li class="page_item page-item-13"><a href="#">Contact</a></li>
答案 0 :(得分:0)
您正在使用wp_list_pages()
功能,同时过滤了由nav_menu_css_class
仅被调用<{1}}的{{1}}挂钩,而不是您的功能使用(wp_list_pages)。
您可以使用带Walker_Nav_Menu
参数的函数返回HTML输出而不是打印它。然后,寻找那个css类并采取相应的行动。
echo
注意:使用preg_replace和正则表达式会更好。
<强>更新强>
由于没有页面是当前页面,因此不会添加$list = wp_list_pages( 'echo=0' );
$list = str_replace('current_page_parent', 'current_page_parent active', $list);
echo $list;
类。根据手册:
以下类适用于菜单项,即HTML
active
标签,由wp_list_pages()生成。注意:wp_list_pages()和 wp_page_menu()函数输出相同的CSS类。.current_page_item 此类已添加到对应的菜单项中 到当前呈现的静态页面。
.current_page_parent 此类将添加到对应的菜单项中 到当前呈现的静态页面的分层父级。
.current_page_ancestor 此类已添加到菜单项中 对应于当前渲染的静态的分层祖先 页。
它们中没有出现在输出中,因此这些页面都不是当前页面,因此“活动”类不会附加到其中任何页面。
https://developer.wordpress.org/reference/functions/wp_list_pages/