Допустим нужно настроить выпадающее меню 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-скрипте проверять, есть ли подменю на данном уровне вложенности.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стала задача отсортировать массив, приходящий из БДОдин элелемент из этого массива выглядит так:
Как в первом случае обновить в элементе offer_text секцию <![CDATA[ ]]> на содержимое переменной $text, а во втором добавить ее?