Walker上的START_LVEL不工作

时间:2019-08-31 作者:Lai32290

我正在为菜单创建一个自定义漫游器,我的代码如下:

<?php

class My_Walker extends Walker {
    function start_lvl( &$output, $depth = 0, $args = array() ) {
        $output .= "<nav>";
    }

    function end_lvl( &$output, $depth = 0, $args = array() ) {
        $output .= "</nav>";
    }

    function start_el( &$output, $object, $depth = 0, $args = array(), $current_object_id = 0 ) {
        $output .= "<li>My Item</li>";  //This is just a sample <li>
    }
}
Thestart_el 工作正常,但是start_lvlend_lvl 根本不起作用。

呈现的HTML如下所示:

list code sample

为什么我的start_lvlend_lvl 不工作?

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

您的菜单似乎没有任何级别。start_lvlend_lvl 用于子菜单包装器。菜单的外包装<ul> 由定义items_wrap 的参数wp_nav_menu():

wp_nav_menu(
    [
        \'walker\'     => new My_Walker(),
        \'items_wrap\' => \'<nav id="%1$s" class="%2$s">%3$s</nav>\',
    ]
);

相关推荐

使用自定义对象而不是WordPress数据库对象实现Walker

我正在尝试实现一个自定义的Walker,以便在对象的层次结构中导航。当我做var_dump 在$item 中的变量start_el 函数我看到的是wordpress数据库对象(博客、页面等),而不是我的自定义数据对象。如何设置Walker以接受菜单层次结构和导航的自定义对象?谢谢Dave