можно ли добавить какой-то класс, например, «стрелка» или диапазон внутри меню, которые имеют подменю (в Wordpress )? кажется, что вы можете сделать это, используя javascript, но я хочу знать, есть ли решение PHP ...
в WP 3.0 я видел, что активные меню имеют классы "parent" или "ancestor", но это только для активного меню, и оно мне нужно и для неактивных
Эта функциональность действительно должна быть в ядре WordPress!
Во всяком случае, я просмотрел исходный код шаблона меню, который вы отправили в комментарии к другому ответу, и нашел (довольно хакерский) способ добавить класс в пункты меню с детьми. По сути, это подкласс ходока по умолчанию, чтобы расширить его поведение по умолчанию. Вероятно, будет лучше, если вы поместите его в functions.php
вашей темы. Вот код:
<?php
class Arrow_Walker_Nav_Menu extends Walker_Nav_Menu {
function display_element($element, &$children_elements, $max_depth, $depth=0, $args, &$output) {
$id_field = $this->db_fields['id'];
if (!empty($children_elements[$element->$id_field])) {
$element->classes[] = 'arrow'; //enter any classname you like here!
}
Walker_Nav_Menu::display_element($element, $children_elements, $max_depth, $depth, $args, $output);
}
}
?>
Чтобы вызвать его, вам нужно добавить аргумент walker
при вызове wp_nav_menu()
в вашей теме, например:
<?php
wp_nav_menu(array('walker' => new Arrow_Walker_Nav_Menu, [other arguments...]))
?>
Надеюсь, что работает для вас! Я проверил это только поверхностно, но, похоже, это работает. Сообщите мне, есть ли крайние случаи, когда добавление класса не удается.
Я не знаю ни одной встроенной поддержки WordPress для этого, но вы могли бы легко сделать это с помощью некоторого jQuery .
<script type="text/javascript">
$("#menu-id ul li:has(ul)").addClass("parent");
</script>