Описание пунктов меню?Пользовательский Walker для wp_nav_menu ()
3 ответ
- голосов
-
- 2015-02-23
Начиная с WordPress 3.0 ,вам не нужен пользовательский ходунок. больше!
Есть фильтр
walker_nav_menu_start_el
,см. https://developer.wordpress.org/reference/hooks/walker_nav_menu_start_el/Пример:
function add_description_to_menu($item_output, $item, $depth, $args) { if (strlen($item->description) > 0 ) { // append description after link $item_output .= sprintf('<span class="description">%s</span>', esc_html($item->description)); // insert description as last item *in* link ($input_output ends with "</a>{$args->after}") //$item_output = substr($item_output, 0, -strlen("</a>{$args->after}")) . sprintf('<span class="description">%s</span >', esc_html($item->description)) . "</a>{$args->after}"; } return $item_output; } add_filter('walker_nav_menu_start_el', 'add_description_to_menu', 10, 4);
Since WordPress 3.0, you don't need a custom walker anymore!
There is the
walker_nav_menu_start_el
filter, see https://developer.wordpress.org/reference/hooks/walker_nav_menu_start_el/Example:
function add_description_to_menu($item_output, $item, $depth, $args) { if (strlen($item->description) > 0 ) { // append description after link $item_output .= sprintf('<span class="description">%s</span>', esc_html($item->description)); // insert description as last item *in* link ($input_output ends with "</a>{$args->after}") //$item_output = substr($item_output, 0, -strlen("</a>{$args->after}")) . sprintf('<span class="description">%s</span >', esc_html($item->description)) . "</a>{$args->after}"; } return $item_output; } add_filter('walker_nav_menu_start_el', 'add_description_to_menu', 10, 4);
-
Ницца!Я использовал решениеnav walker от @toscho,но оно намного чище и проще в обслуживании. Это должен быть принятый ответ,гораздо лучшая практика.Nice! I was using the nav walker solution by @toscho, but this is much cleaner and easier to maintain.This should be the accepted answer, much better practice.
- 1
- 2015-07-08
- Ronaldt
-
- 2012-04-18
Это не лучше и не хуже других предложений;это просто другое.Это тоже коротко и мило.
Вместо того,чтобы использовать поле описания,как предлагает @toscho ,вы можете заполнить поле "Заголовок" накаждый пункт меню с нужным текстом,а затем используйте этот CSS:
.menu-item a:after { content: attr(title); }
Также было бы легко добавить его с помощью jQuery ,но текст достаточно декоративен,поэтому CSS кажется подходящим.
This isn't better or worse than other suggestions; it's just different. It's short and sweet too.
Rather than using the description field as @toscho suggests, you could fill in the "Title" field on each menu item with the text you want, and then use this CSS:
.menu-item a:after { content: attr(title); }
It would also be easy to use jQuery to append it, but the text is ornamental enough that CSS seems appropriate.
-
- 2011-09-08
Вы также можете написать элемент
<span>
после метки навигации в меню и использовать следующее правило CSS,чтобы изменить его настройкуdisplay
(этоinline
по умолчанию):span {display:block}
You can also write a
<span>
element after the navigation label in menus and use the following CSS rule to change itsdisplay
setting (it'sinline
by default):span {display:block}
-
Что ж,это простое и легкое решение,но зачем использовать `span`,если вы все равно блокируете его?xhtml/html4 не допускает блочных элементов внутри ссылок,однако html5 допускает,поэтому просто используйте `div` и никаких CSS!Well its a simple and easy solution but why use `span` if you make it block anyway? xhtml/html4 not allows block elements inside links, html5 however does, so just use `div`, and no need for any css!
- 2
- 2013-03-05
- James Mitch
Обычное меню Wordpress выглядит так:
<цитата>На главную|Блог|О нас|Связаться
Но я видел много страниц с описаниями по этим ссылкам:
<цитата>Домашняя страница|Наши блоги|О нас |Контакты
.... встречайте нас ...|читать дальше|основная информация|контактная форма
Как этого добиться?
(Я хочу,чтобы это была основная функция для всех моих тем,поэтому никаких плагинов,пожалуйста,я просто хочу знать,как это делается)