Могу ли я добавить разделитель <li>после тега привязки в WordPress wp_nav_menu ()? - PullRequest
2 голосов
/ 19 апреля 2011

Мне нужно добавить <li> разделитель после тега привязки следующим образом:

   <li id="menu-item-27" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"><a href="services">Services</a></li>
<li class="separator>//</li>
<li id="menu-item-28" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-27"><a href="gallery">Gallery</a></li>  
<li class="separator>//</li>

Ответы [ 2 ]

5 голосов
/ 03 апреля 2013

Это старый вопрос, но я наткнулся на ту же проблему и решил ее с помощью пользовательского Уокера.

Сначала ходок добавляет разделитель после каждого <li> на верхнем уровне:

class Main_Menu_Walker extends Walker_Nav_Menu{

    function end_el( &$output, $item, $depth = 0, $args = array() ) {
        $output .= "</li>\n";

        if ($depth == 0)
            $output .="<li class='separator'>|</li>\n";        
    }
}

Тогда вы можете использовать li:last-child и скрыть последний разделитель или использовать фильтр и удалить его, если вам нужна поддержка ie7. Вот мой фильтр:

function menu_remove_last_separator($items){

    $separator = "<li class='separator'>|</li>";
    $pos = strrpos($items, $separator);

    if ($pos) 
        $items = substr_replace($items, '', $pos, strlen($separator));

    return $items;
}

add_filter( 'wp_nav_menu_items','menu_remove_last_separator');

Теперь вы должны использовать свой ходунок как и аргумент для wp_nav_menu:

wp_nav_menu(array(
        'theme_location' => 'navigation',
        'container'      => false,
        'menu_class'     => 'inline',
        'walker'         => new main_menu_walker()
        )
);
4 голосов
/ 19 апреля 2011

Да, пару разных способов. Проверьте кодекс , но помогут следующие $ arg.

$ до того (строка) (необязательно) Вывести текст перед ссылкой

    Default: None 

$ после (строка) (необязательно) Вывод текста после ссылки

    Default: None 

$ link_before (строка) (необязательно) Вывести текст перед текстом ссылки

    Default: None 

$ link_after (строка) (необязательно) Вывести текст после текста ссылки

    Default: None

Попробуйте

$args = array('after'=>'<li>//</li>');
wp_nav_menu($args);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...