为自定义导航步行者WordPress清点1级儿童

时间:2015-06-09 作者:Adeel

我在custom walker类中创建了三级菜单。输出如下:

家庭(家长)关于(家长)第1项(1级孩子)第1-1项(2级孩子)第1-2项(2级孩子)第2项(1级子项)第2-1项(2级子项)(2级子项)我只想单独计算每个父项的start\\u lvl()内的“1级子项”。

在上面的示例中,输出应该用于about(1)和services(2),因为“about”对于级别1只有一个子级,而services对于级别1有两个子级

请有人帮忙,我已经搜索了很多,并尝试了几乎所有可用的堆栈交换、溢出等方法。。。

1 个回复
SO网友:Adeel

我试着把我的逻辑变成这样:

内部调用以下代码

function start_el( &$output, $item, $depth, $args ) {
$this->sub_items = 0; // declared variable as private $sub_items = 0 above inside class 
            if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $args->theme_location ] ) ) {
                $menu = wp_get_nav_menu_object( $locations[ $args->theme_location ] );
                $menu_items = wp_get_nav_menu_items($menu->term_id);
                foreach( $menu_items as $menu_item ) {

                        if( $menu_item->menu_item_parent == $item->ID ) {
                            $this->sub_items++; 
                        }
                }
           } 
}
我想每次$this->sub\\u items返回一级child的计算值时,我都可以在里面访问它

function start_lvl( &$output, $depth ) {
     echo $this->sub_items;
}
但不幸的是,它不能正确输出:(

结束