PHP / Wordpress - добавить стрелки в родительские меню - PullRequest
7 голосов
/ 24 августа 2010

возможно ли добавить какой-нибудь класс, например, «стрелка» или интервал внутри меню с подменю (в Wordpress)?кажется, что вы можете сделать это с помощью JavaScript, но я хочу знать, есть ли решение PHP ...

в WP 3.0, я видел, что активные меню имеют классы "родитель" или "предок"их, но это только для активного меню, и оно мне нужно и для неактивных

Ответы [ 6 ]

12 голосов
/ 29 августа 2010

Эта функциональность действительно должна быть в ядре 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...]))
?>

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

3 голосов
/ 15 июля 2013

Если вы похожи на меня и хотите добавить HTML-стрелку в промежутке к вашему родительскому пункту меню, добавьте такую ​​строку в класс ходунков клиентов Дональда Харви:

$element->title .= '<span class="caret down-caret">&#x25BC;</span>'; 

Вы можететакже добавьте этот HTML-код непосредственно к метке меню на странице меню WP admin>, но это не лучший способ сделать это.

Я немного написал об этом здесь http://cameronnokes.com/blog/adding-an-icon-to

3 голосов
/ 24 августа 2010

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

<script type="text/javascript">
$("#menu-id ul li:has(ul)").addClass("parent");
</script>
2 голосов
/ 30 июля 2016

Просто вставьте это в ваш 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

0 голосов
/ 27 марта 2014

Я не знаю, что это за вопрос, но мы можем добавить стрелку в меню на css, например:

.menu li > a:after {
    color: #fff;
    content: ' ▾';
}

.menu li > a:only-child:after {
    content: '';
}
0 голосов
/ 28 января 2013

Простой и скромный способ добавить родительский класс в главное меню, если у него есть подменю

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...