Свои стили для выпадающего меню

249
10 марта 2017, 00:52

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

register_nav_menus(array(
    ... ,
    'sidebar_menu' => 'Боковое меню'
));

Потом переопределяется класс Walker_Nav_Menu

class My_Walker_Nav_Menu extends Walker_Nav_Menu {
    public function start_lvl( &$output, $depth = 0, $args = array() ) {
        ...
        if ($depth != 0) {
            $output .= "{$n}{$indent}<ul class=\"sub-menu\">{$n}";
        } else {
            $output .= "{$n}{$indent}<ul class=\"cat-drop-menu\">{$n}";
        }
    }
    public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
        ...
        $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) );
        if($depth == 0){
            $class_names .= " arrow-plus";
        } elseif ($depth == 1) {
            $class_names .= " cat-drop-menu-left";
        }
        $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
        ...
        /**
         * Filters a menu item's starting output.
         */
        $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    }
}

Подскажите, как сделать, чтобы если в определённой категории есть подкатегории, тогда задать один стиль, а если нет подкатегорий, тогда другой стиль? т.е. навели на боковое меню, выпадает список, меню многоуровневое, может быть разной вложенности, в зависимости от количества подкатегорий.

Дополню вопрос, тут не так всё просто, одними стилями не обойтись. Тут php имеет прямое отношение! На 1м рисунке видно, что если в выпадающем меню есть подменю, тогда пункт TITLE расположен горизонтально, т.е. обтекает другой пункт, (float:left). На 2м рисунке видно, что если у пунктов TITLE нет подменю, тогда эти пункты TITLE нужно расположить один под другим.

Тут наверно нужно в момент формирования меню в php-скрипте проверять, есть ли подменю на данном уровне вложенности.

READ ALSO
Лог нанесённого урона

Лог нанесённого урона

Добрый день

243
Нужно смешать 2 массива определенным образом

Нужно смешать 2 массива определенным образом

Есть 2 массива c названиями животных:

444
Сортировка массивов php

Сортировка массивов php

Стала задача отсортировать массив, приходящий из БДОдин элелемент из этого массива выглядит так:

246
Добавить CDATA в xml?

Добавить CDATA в xml?

Как в первом случае обновить в элементе offer_text секцию <![CDATA[ ]]> на содержимое переменной $text, а во втором добавить ее?

224