Wordpress Menu Walker Class

202
30 июля 2018, 18:10

У меня есть небольшая проблема с 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;
}

Буду благодарен за любую подсказку как возможно решить эту проблему.

READ ALSO
Регулярное выражение на php

Регулярное выражение на php

Не получается составить регулярное выражение такого вида xxxx

208
Как сделать вывод для каждой страницы на WordPress

Как сделать вывод для каждой страницы на WordPress

Есть несколько страниц на WordpressДля каждой странице нужно вывести несколько полей

163
Ошибка запроса fetch_array

Ошибка запроса fetch_array

Пишет, что ждал параметр, а получил обьектРезульт запроса потом мне еще в переменную скинуть надо

147
Не выходит сделать запрос

Не выходит сделать запрос

Доброго времени суток есть таблица допустим tabel(id,name,color,price), хочу сделать запрос фильтрации по цвету и цене

172