使用php

时间:2017-11-02 10:31:35

标签: php

我在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>

1 个答案:

答案 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/