user1147
  • 0
Новичок

Применение моих собственных классов css в wp_menus 3?

  • 0

Есть эта функция:

class my_walker extends Walker_Nav_Menu {

        function start_el(&$output, $item, $depth, $args) {

            global $wp_query;
            $indent = ( $depth ) ? str_repeat("\t", $depth) : '';

            $class_names = $value = '';

            $classes = empty($item->classes) ? array() : (array) $item->classes;
            $classes[] = 'menu-item-' . $item->ID;

            $class_names = join(' ', apply_filters('nav_menu_css_class', array_filter($classes), $item));
            $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 . '>';

            $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) . '"' : '';

            $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 .= '</a>';
            $item_output .= $args->after;

            $output .= apply_filters('walker_nav_menu_start_el', $item_output, $item, $depth, $args);
        }

    }

Мне нужно добавить свой собственный счетчик вместо item->ID, чтобы добавить $myCounter (который будет увеличиваться).

Этот :

$id = apply_filters('nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args);

К этому :

$id = apply_filters('nav_menu_item_id', 'menu-item-' . $myCounter, $item, $args);

Я хочу настроить сумасшедшее меню css. Как мне это сделать?

Заранее спасибо.

Share
  1. Привет , @ user1147. Не могли бы вы изменить заголовок этого поста, чтобы описать, о чем вопрос? Ответы на сайте принесут пользу гораздо большему количеству людей, если они увидят из названий вопросов, совпадает ли вопрос с проблемой, с которой они сталкиваются, или нет. Основываясь на вашем текущем заголовке, я действительно понятия не имею, о чем этот вопрос, и сейчас у меня нет времени читать код, чтобы понять это. Заранее спасибо.

    • 0
  2. Вам нужно модифицировать ходок или подключиться к нему без изменений?

    Поскольку для этого идентификатора предусмотрен фильтр, его легко подключить. Попробуй это:

    add_filter( 'nav_menu_item_id', 'modify_menu_item_id' );
    
    function modify_menu_item_id( $text ) {
    
        static $myCounter;
    
        if( !isset( $myCounter ) )
             $myCounter = 0;
    
        return 'menu-item-' . ++$myCounter;
    }
    

    Обновление Смена ходока

     // add to start of start_el method
            static $myCounter;
            if( !isset( $myCounter ) )
                $myCounter = 0;
    

    а также

    // change id lines to this
            $id = $args->depth ? 'menu-item-' . $item->ID : 'menu-item-' . ++$myCounter;
            $id = apply_filters('nav_menu_item_id', $id, $item, $args);
            $id = strlen($id) ? ' id="' . esc_attr($id) . '"' : '';
    

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

    • 0

Оставить ответ

You must login to add an answer.