2013-07-29 2 views
0

я это function:Как добавить уникальный класс в якорь в Wordpress?

function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) { 
    // you can put your if statements in here (use item, depth and args in conditions) 
    $item_output = preg_replace('/<a /', '<a class="your-class" ', $item_output, 1); 
    return $item_output; 
} 
add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4); 

Который работает нормально, потому что установка класс на все мои anchors в меню. Проблема в том, что он устанавливает один и тот же класс на всех якорях. Я хочу разные классы на якорь. Это возможно? Если да, то как я могу это сделать?

Edit -> Я хочу, чтобы это так:

<li><a class="icon-bird"></a></li> 
<li><a class="icon-book"></a></li> 
<li><a class="icon-red"></a></li> 
+0

Если все классы должны быть уникальными, используйте 'id' атрибут вместо:'

  • ' –

    +0

    Я использую значок-шрифты, поэтому он должен быть классом .... Если добавить определенный класс , он добавляет значок перед якорем, поэтому я использую классы. – user1770896

    ответ

    0

    Предполагая, что $item содержит ваши ценности (птицы, книги, красный, и т.д.):

    function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) { 
        $item_output = preg_replace('/<a /', '<a class="item-' . $item . '"', $item_output, 1); 
        return $item_output; 
    } 
    add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4); 
    
    +0

    Спасибо, но разве это не добавляет тот же класс на всех этих якорях? Где я могу выбрать второй и третий якорь, чтобы поставить другой класс? – user1770896

    +0

    Мне кажется, что 'my_walker_nav_menu_start_el' вызывается для каждого элемента в коллекции, который является внешним по отношению к коду, который вы предоставили. Сама функция не создает сразу все ваши пункты меню, а вместо этого создает один для каждого вызова. –

    +0

    Это правда ... Но как мы можем это сделать? Можете ли вы мне помочь? Это единственное, что у меня есть. – user1770896

    0

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

    вы можете выполнить следующие шаги:

    Шаг 1: В wp-admin перейдите к Внешний вид -> Меню, поместите класс в пункт меню здесь «CSS-классы (необязательно)». Если вы не видите «CSS-классы (необязательно)» в элементе меню, в правой верхней части экрана есть «Экранная опция», и в разделе «Показать расширенные свойства меню» есть опции «CSS-класс»,.

    Шаг 2: Под вашим им папке/function.php добавить ниже код:

    function my_walker_nav_menu_start_el($item_output, $item, $depth, $args) { 
        $class= $item->classes['0']; 
        $item_output = preg_replace('/<a /', '<a class="'.$class.'"', $item_output, 1); 
        return $item_output; 
    } 
    add_filter('walker_nav_menu_start_el', 'my_walker_nav_menu_start_el', 10, 4); 
    

    Надежда выше код работает для вас, дайте мне знать, если до сих пор не работает.

    Смежные вопросы