在wp_NAV_MENU中的li元素之后添加另一个html标记

时间:2021-03-28 作者:DaF-Student

我在页脚有一个导航菜单。我只想把它并排展示<p> tag我是说这样的

<ul>
<li>
<p>copyright C 2021</p>
</li>
<li>
contact
</li>
<li>
blog
</li>
</ul>
这是我的菜单功能

if ( function_exists( \'register_nav_menus\' ) ) {
    register_nav_menus(
        array(
          \'top_nav_menu\' => \'My Footer Menu\'
        )
    );
我把它叫做页脚

<?php if ( has_nav_menu( \'top_nav_menu\' ) ) { ?>
            <?php wp_nav_menu( array(
                \'menu\' => \'Footer Navigation Menu\', 
                \'theme_location\' => \'top_nav_menu\', 
                \'menu_class\' => \'footer-links\'
                )); 
            ?>
            <?php } else {?>
            <ul class="sf-menu">
                <?php wp_list_pages( array(\'title_li\' => \'\',\'sort_column\' => \'menu_order\')); ?>
            </ul>
            <?php } ?>
如何插入额外的<li> 第一个元素之前的元素<li> 并添加<p> 之后添加的标签<li> 要素

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

使用时wp_nav_menu() 您可以排除<ul> 通过设置items_wrap 仅包括列表项(%3$s), 然后您可以添加自己的<li> 在那之前或之后,用<ul> 您自己:

<ul class="footer-links">
    <li>
        <p>copyright C 2021</p>
    </li>

    <?php
    wp_nav_menu( 
        array(
            \'menu\'           => \'Footer Navigation Menu\', 
            \'theme_location\' => \'top_nav_menu\', 
            \'items_wrap\'     => \'%3$s\',
        )
    );
    ?>
</ul>

SO网友:Pat J

您可以使用wp_nav_menu 滤器使用preg_replace():

add_action( \'wp_nav_menu\', \'wpse_385827_filter_nav_menu\' );
function wpse_385827_filter_nav_menu( $menu ) {
    $menu = preg_replace(
               \'|<li>|\',
               \'<li><p>Your inserted content here</li><li>\', 
               $menu, 
               1
    );

    return $menu;
}
Note: 这个1 中的参数preg_replace() 调用确保只有第一个<li> 标签受影响。