2016-10-25 3 views
0

В прошлом году мне удалось добавить дополнительные элементы в мое меню Wordpress с помощью ходунки. (How can I add parent menu description to my Wordpress menu?)Wordpress walker работает, но не правильно

В настоящее время, ходунки выглядеть slike это в моей функции файла:

// Submenu walker to add image 
class submenu_walker extends Walker_Nav_Menu { 
    function start_lvl(&$output, $depth = 0, $args = array()) { 
     $indent = str_repeat("\t", $depth); 
     global $description; 
     $output .= "<ul class='sub-menu'><li class='menu-image-container'><div class='menu-image'></div><div class='menu-description'>".$description."</div></li>"; 
    } 
    function end_lvl(&$output, $depth = 0, $args = array()) { 
     $indent = str_repeat("\t", $depth); 
     $output .= "<li><div class='clear'></div></li></ul>"; 
    } 
} 

По существу, то, что я хотел сделать, это добавить изображение и краткое описание для каждого подменю первого уровня, расположенных на сайт: www.bellavou.co.uk

Если вы посетите этот сайт, вы увидите, что он выглядит хорошо, потому что я использовал CSS, чтобы скрыть все другие экземпляры, которые мне не нужны. Но если вы проверите, вы увидите, что контейнер меню-изображения добавляется для каждого подменю в родительских элементах меню.

Внутри «Лица» есть подменю «Элемент» в подменю «Лицо», «Глаз» и «Ухо», а также та, которая отображается в главном подменю.

Мне нужен только основной, и я думаю, что это достигается путем изменения настроек глубины, но я пробовал и не вносил никаких изменений.

Что можно сделать, чтобы создать новое подменю только в главном подменю верхнего уровня?

UPDATE & РЕШИТЬ:

Оказывается, я думал в правильном направлении, с точки зрения глубины, где правила применяются получить. Но не думал о существующих подменю, которые у меня есть.

// Submenu walker to add image 
class submenu_walker extends Walker_Nav_Menu { 
    function start_lvl(&$output, $depth = 0, $args = array()) { 
     $indent = str_repeat("\t", $depth); 
     if(0 == $depth) { 
      global $description; 
      $output .= "<ul class='sub-menu'><li class='menu-image-container'><div class='menu-image'></div><div class='menu-description'>".$description."</div></li>"; 
     } else { 
      $output .= "<ul class='sub-menu'>"; 
     } 
    } 
    function end_lvl(&$output, $depth = 0, $args = array()) { 
     $indent = str_repeat("\t", $depth); 
     if(0 == $depth) { 
      $output .= "<li><div class='clear'></div></li></ul>"; 
     } else { 
      $output .= "</ul>"; 
     } 
    } 
} 

Это теперь установил его с только ДИВ изображения появляются один раз в самом верху подменю родительского, а другие просто отображать их дочерние элементы.

ответ

0

Надеюсь, я правильно понял ваш вопрос. Если вы хотите это изображение контейнера только для одного уровня, то вы можете проверить if ($depth == $desired_level)

// Submenu walker to add image 
class submenu_walker extends Walker_Nav_Menu { 
    function start_lvl(&$output, $depth = 0, $args = array()) { 
     $indent = str_repeat("\t", $depth); 
     if ($depth == 0) { 
      global $description; 
      $output .= "<ul class='sub-menu'><li class='menu-image-container'><div class='menu-image'></div><div class='menu-description'>".$description."</div></li>"; 
     } else { 
      $output .= "<ul class='sub-menu'>"; 
     } 

    } 
    function end_lvl(&$output, $depth = 0, $args = array()) { 
     $indent = str_repeat("\t", $depth); 
     if ($depth == 0) { 
      $output .= "<li><div class='clear'></div></li></ul>"; 
     } else { 
      $output .= "</ul>"; 
     } 
    } 
} 

я не уверен, следует ли $ глубина быть 0 или 1 в вашем случае, попробуйте.

+0

Это то, что я пытался, и, хотя кажется, что он меняет изменения, это неправильно. Самое близкое, что я получаю, это именно то, что вы положили, но затем он избавляется от подменю в основном подменю, например «Лицо», «Ухо», «Глаз» .. что происходит с заголовками и ссылками меню? все индивидуальные вещи 'li' – Lee

+0

Говоря это, я понял, почему. Но ваш комментарий действительно помог мне понять это, поэтому я добавлю дополнительную часть к моему вопросу, а затем буду отмечать ваше мнение. – Lee

+0

Конечно, вы правы. Я исправлю свой ответ соответственно. Спасибо. –