У меня есть небольшая проблема с Walker Class'ом в wordpress.
Мой walker:
<?php
class Walker_Nav_Primary extends Walker_Nav_menu {
public $isMegaMenu;
function __construct()
{
$this->isMegaMenu = 0;
}
function start_lvl( &$output, $depth = 0, $args = array() ){ //ul
$indent = str_repeat("\t",$depth);
$submenu = ($depth > 0) ? ' sub-menu' : '';
$output .= "\n$indent<ul class=\"dropdown-menu$submenu
depth_$depth\">\n";
if($this->isMegaMenu != 0){
$output .= "<li class=\"col-md-3\"><ul>\n";
}
}
function end_lvl( &$output, $depth = 0, $args = array() ){
if($this->isMegaMenu != 0){
$output .= "</ul></li>";
}
$output .= "</ul>";
}
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ){
$indent = ( $depth ) ? str_repeat("\t",$depth) : '';
$li_attributes = '';
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes[] = ($args->walker->has_children) ? 'dropdown' : '';
$classes[] = ($item->current || $item->current_item_ancestor) ? 'active' : '';
$classes[] = 'menu-item-' . $item->ID;
if( $depth && $args->walker->has_children ){
$classes[] = 'dropdown-submenu';
}
if(array_search('SomeClass', $classes) !== false ){
$classes[] = 'NewClass';
}
if(array_search('NewClass', $classes) != false){
$this->isMegaMenu = $item->ID;
} // ОБРАТИТЕ ВНИМАНИЕ НА ЭТУ ЧАСТЬ КОДА
$class_names = join(' ', apply_filters('nav_menu_css_class', array_filter( $classes ), $item, $args ) );
$class_names = ' class="' . esc_attr($class_names) . '"';
$id = apply_filters('nav_menu_item_id', 'menu-item-'.$item->ID, $item, $args);
$id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';
$output .= $indent . '<li' . $id . $value . $class_names . $li_attributes . '>';
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr($item->attr_title) . '"' : '';
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr($item->target) . '"' : '';
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr($item->xfn) . '"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr($item->url) . '"' : '';
$attributes .= ( $args->walker->has_children ) ? ' class="dropdown-toggle" data-toggle="dropdown"' : '';
$item_output = $args->before;
$item_output .= '<a' . $attributes . '>';
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
$item_output .= ( $depth == 0 && $args->walker->has_children ) ? ' <b class="caret"></b></a>' : '</a>';
$item_output .= $args->after;
$output .= apply_filters ( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
}
Мне нужно чтобы элемент <li class="col-md-3"><ul></ul></li>
выводился только тогда, когда присутствует класс NewClass
, если же его нету, то не нужно выводить этот элемент.
Проблема заключается в том, что он выводится даже если этот класс отсутствует, т.е элемент выводится на каждый dropdown, который есть в меню, не зависимо от того, присутствует там класс NewClass
или же нет.
Я не понимаю почему эти строки кода просто игнорируются
if(array_search('NewClass', $classes) != false){
$this->isMegaMenu = $item->ID;
}
Буду благодарен за любую подсказку как возможно решить эту проблему.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть несколько страниц на WordpressДля каждой странице нужно вывести несколько полей
Пишет, что ждал параметр, а получил обьектРезульт запроса потом мне еще в переменную скинуть надо
Доброго времени суток есть таблица допустим tabel(id,name,color,price), хочу сделать запрос фильтрации по цвету и цене