首页 > 解决方案 > 向 WordPress 导航项目添加额外的 div

问题描述

什么是更改我的 wp-menu 生成的输出的最简单方法

<ul class="primary-menu">
<li class="menu-item">
    <a href="">nav link</a>
    <ul class="sub-menu"></ul>
</li>
</ul>

<ul class="primary-menu">
<li class="menu-item">
    <div class="alignme">
        <button></button><a href=""></a><button></button>
    </div>
    <ul class="sub-menu"></ul>
</li>
</ul>

?

我需要这种“辅助 div”,因为我必须以某种方式对齐三个元素,并且独立于 li 中可能的附加内容(例如子菜单)。

我正在使用默认的 wp_nav_menu() 并且作为第一次主题构建器,我不知道在哪里可以找到菜单的“设置”。知道我应该在哪里仔细看看吗?

标签: wordpresswordpress-themingwp-nav-menu-item

解决方案


在 wp_nav_menu "new Add_Div_Walker" 中添加 walker 类。检查我下面的代码。

$menu = array(
    'theme_location'  => 'primary',
    'items_wrap'      => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'walker'          => new Add_Div_Walker
);
wp_nav_menu( $menu );

// add this below code in your functions.php file.
class Add_Div_Walker extends Walker_Nav_Menu {
    function start_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\t", $depth);
        $output .= "\n$indent<div class='alignme'>
            <button></button><a href=''></a><button></button>
        </div><ul class='submenu'>\n";
    }
    function end_lvl( &$output, $depth = 0, $args = array() ) {
        $indent = str_repeat("\t", $depth);
        $output .= "$indent</ul>\n";
    }
}

推荐阅读