PHP / Wordpress-добавление стрелок в родительские меню
можно ли добавить какой-то класс, например "стрелка" или промежуток внутри меню, которые имеют подменю (в Wordpress)? кажется, что вы можете сделать это с помощью javascript, но я хочу знать, есть ли решение PHP...
в WP 3.0 я видел, что активные меню имеют классы" родитель "или" предок " на них, но это только для активного меню, и мне это нужно для неактивных, а также
6 ответов
эта функция действительно должна быть в ядре WordPress!
Во всяком случае, я посмотрел на источник шаблона меню, который вы отправили в комментарии к другому ответу, и нашел (довольно хакерский) способ добавить класс в пункты меню с детьми. Он в основном подклассы по умолчанию walker, чтобы расширить его поведение по умолчанию. Вероятно, лучше всего, если вы поместите его в свою тему 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>
Если вы похожи на меня и хотите добавить стрелку HTML в промежуток к родительскому пункту меню, добавьте строку, подобную этой внутри класса ходока клиента Дональда Харви:
$element->title .= '<span class="caret down-caret">▼</span>';
вы также можете добавить этот HTML непосредственно в метку меню на странице WP admin > menu, но это не лучший способ сделать это.
Я немного написал об этом здесь http://cameronnokes.com/blog/adding-an-icon-to
просто вставьте это в свой код css, и он будет работать так, как ожидалось.
.nav-menu li > a:after {
color: #888;
content: ' ▾';
}
.nav-menu li > a:hover:after {
color: #444;
content: ' ▾';
}
.nav-menu li > a:only-child:after {
content: '';
}
Ps. Не забудьте установить свою страницу UTF-8
простой и скромный способ добавить родительский класс в Главное меню, если он имеет подменю
<script type="text/javascript">
jQuery(document).ready(function($) {
$("ul.sub-menu").parents().addClass('parent');
});
</script>
и
<style type="text/css">
.main-navigation .parent > a, .main-navigation .parent > a:hover {
background-image: url("images/arrow.png");
background-position: right center;
background-repeat: no-repeat;
}
</style>
Я не знаю, что это вопрос, но мы можем добавить стрелку в меню css
такой:
.menu li > a:after {
color: #fff;
content: ' ▾';
}
.menu li > a:only-child:after {
content: '';
}