Проверьте, есть ли меню id = $ specific_id – затем вставьте конкретный <img>

В настоящее время у меня есть структура меню:

<ul class="level-1" id="menu-menu1"> <li id="menu-item-411"> <a href="http://www.link.com">Frontpage</a> </li> <li id="menu-item-425"></li> <li id="menu-item-80"></li> </ul> 

Что им нужно сделать, это хардкор немного изображения иконки меню для каждого другого идентификатора меню , однако я не уверен, как манипулировать wp_nav_menu чтобы вставить что-то «обычай», как это? В идеале то, что я хочу сделать, это что-то вроде: if($menu_id == 411) { //insert specific <img> – с некоторым результатом:

  <li id="menu-item-411"> <img src="my-specific-img-for-this-menu-id.gif" /> <a href="http://www.link.com">Frontpage</a> </li> 

Сейчас мое меню распечатывается с помощью:

  $nav_args = array( 'theme_location' => 'nav', 'container' => 'none', 'menu_class' => 'level-1', 'depth' => 3, ); wp_nav_menu( $nav_args ); 

Есть идеи?

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

Доказательство концепции:

 function insert_image_wpse_130477($item_output) { remove_filter('walker_nav_menu_start_el','insert_image_wpse_130477'); $prepend = apply_filters('my_item_prepend',''); return $prepend.$item_output; } function check_id_wpse_130477($id, $item, $args) { if ('menu-item-6' == $id) { // edit for your circumstances add_filter( 'my_item_prepend', function() use ($id) { // add logic to conditionally add your images based on the ID return '##'.$id.'##'; } ); add_filter( 'walker_nav_menu_start_el', 'insert_image_wpse_130477' ); } return $id; } add_filter('nav_menu_item_id','check_id_wpse_130477',1,3); 

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

Вам нужно сделать пользовательский ходок в меню ( ссылку ), которое позволит вам переписать код навигации в соответствии с вашими потребностями.