wp_dropdown_categories()
Отображает или получает выпадающий список категорий в HTML формате. Вместо рубрик можно указать название произвольной таксономии.
Хуки из функции
Возвращает
Строку
. HTML код выпадающего списка категорий (<select>
).
Шаблон использования
$args = array( 'show_option_all' => '', 'show_option_none' => '', 'option_none_value' => -1, 'orderby' => 'ID', 'order' => 'ASC', 'show_last_update' => 0, 'show_count' => 0, 'hide_empty' => 1, 'child_of' => 0, 'exclude' => '', 'echo' => 1, 'selected' => 0, 'hierarchical' => 0, 'name' => 'cat', 'id' => 'name', 'class' => 'postform', 'depth' => 0, 'tab_index' => 0, 'taxonomy' => 'category', 'hide_if_empty' => false, 'value_field' => 'term_id', 'required' => false, ); wp_dropdown_categories( $args );
Использование
wp_dropdown_categories( $args );
- $args(строка/массив)
- Массив аргументов которые нужно изменить. Можно указать как строку запроса.
По умолчанию: массив аргументов по умолчанию
Аргументы параметра $args
Кроме этих параметров можно указать еще и от функции get_terms().
- show_option_all(строка)
- Текст для показа всех категорий. Будет начальным текстом в списке.
По умолчанию: '' - show_option_none(строка)
- Текст для показа <option> пункта "без категорий" (когда ничего не выбрано). Будет начальным <option> в списке или вторым, если установлен параметр show_option_all.
По умолчанию: '' - option_none_value(строка)
- Значение для <option> если установлен параметр show_option_none.
По умолчанию: -1 - orderby(строка)
Сортировка списка по определенным критериям. Например по количеству постов в каждой категории или по названию категорий. Доступны следующие критерии:
ID
- сортировка по ID;name
- сортировка по названию (по умолчанию);slug
- сортировка по алт. имени (slug);count
- по количеству записей в категории;term_group
- по группе.
По умолчанию: 'ID'
- order(строка/массив)
Направление сортировки:
ASC
- по порядку, от меньшего к большему (1, 2, 3; a, b, c);DESC
- в обратном порядке, от большего к меньшему (3, 2, 1; c, b, a).
По умолчанию: 'ASC'
- show_last_update(строка/массив)
- Показать последнее обновление категории 1 - да, 0 - нет (у меня при изменении параметра ничего не поменялось).
По умолчанию: false - show_count(логический)
Показывать (1) или нет (0) количество записей в категории. Число записей будет показано после названия категории в скобках (например, Психология (16)).
1 (true)
- показывать количество записей;0 (false)
- не показывать количество записей.
- hide_empty(Логический)
Показывать (0) или нет (1) категории не имеющие записей (пустые категории).
0 (true)
- показывать пустые;1 (false)
- не показывать пустые категории.
По умолчанию: 1
- child_of(строка/массив)
- Показать дочерние категории. В параметре указывается ID родительской категории (категория, вложенные категории которой нужно показать).
По умолчанию: '' - exclude(строка/число)
- ID категорий, которые нужно исключить. Указывать через запятую.
По умолчанию: '' - exclude_tree(строка/массив)
- ID родительской категории, дерево которой не нужно показывать. Дерево категории - это категория и все в нее вложенные категории.
- echo(логический)
- 1 - выводить результат на экран. 0 - возвращать для обработки.
По умолчанию: 1 - depth(число)
- Глубина вложенности дочерних категорий. Игнорируется если параметр hierarchical отключен.
По умолчанию: 0 - tab_index(строка)
- Значение атрибута tabindex у HTML тега <select>
- name(строка)
- Значение атрибута name у HTML тега <select>
По умолчанию: cat - id(строка)
- Значение атрибута ID у тега <select>
По умолчанию: как у name - class(строка)
- Атрибут class для select элемента.
По умолчанию: 'postform' - selected(число/строка)
- Какой элемент нужно выделить. Сравнивается со значением value_field. Обычно тут указывается ID категории, которая должна быть выделена.
По умолчанию: выставляется ID просматриваемой категории, если юзер на странице категории. - hierarchical(число|логический)
- Выводить категории в виде дерева. 1 - да, показать как дерево, 0 - вывести сплошным списком.
По умолчанию: 0 - pad_counts(логический)
- Подсчитывать количество постов для родительских категорий, как сумма всех постов во вложенных категориях. Если параметры
show_counts
иhierarchical
включены, этот параметр включается автоматически (становится true).
По умолчанию: false - taxonomy(строка)
- Название таксономии с которой будет работать функция.
По умолчанию: 'category' - hide_if_empty(логический)
- Прятать выпадающий список если вернулся пустой результат? true - да, не показывать список, если нет категорий. false - показывать пустой список.
По умолчанию: false - value_field(строка)
Поле термина, которое будет выводиться в value у <option>. Может быть:
term_id
name
slug
term_group
term_taxonomy_id
taxonomy
description
parent
count
( c версии WP 4.2 )
По умолчанию: 'term_id'
- required(логический)
- Добавлять ли к <select> атрибут HTML5 'required'. С версии 4.6.
По умолчанию: false - aria_describedby(строка) (WP 6.1)
- 'id' элемента, который содержит описательный текст для выбора.
По умолчанию: ''
Примеры
#1 Добавим параметр multiple
// This filter allow a wp_dropdown_categories select to return multiple items add_filter( 'wp_dropdown_cats', 'willy_wp_dropdown_cats_multiple', 10, 2 ); function willy_wp_dropdown_cats_multiple( $output, $r ) { if ( ! empty( $r['multiple'] ) ) { $output = preg_replace( '/<select(.*?)>/i', '<select multiple="multiple">', $output ); $output = preg_replace( '/name=([\'"]{1})(.*?)/i', 'name=[]', $output ); } return $output; }
Теперь используем функцию с параметром multiple
wp_dropdown_categories( [ 'taxonomy' => 'category', 'multiple' => true, 'selected' => '10, 12', // selected terms… 'hide_empty' => false, ] );
Получим:
Оригинальный код находится здесь.
#2 Выпадающий список с кнопкой Submit
Пример вывода выпадающего списка категорий с кнопкой сабмита:
<h2>Категории:</h2> <form action="<?php bloginfo('url'); ?>" method="get"> <?php wp_dropdown_categories('show_count=1&hierarchical=1'); ?> <input type="submit" name="submit" value="view" /> </form>
#3 Выпадающий список с использованием Javascript (без кнопки Сабмита)
Пример, демонстрирующий использование аргумента show_option_none:
<h2>Категории:</h2> <?php wp_dropdown_categories('show_option_none=Select category'); ?> <script> var dropdown = document.getElementById("cat"); function onCatChange() { if ( dropdown.options[dropdown.selectedIndex].value > 0 ) { location.href = "<?php echo get_option('home'); ?>/?cat="+dropdown.options[dropdown.selectedIndex].value; } } dropdown.onchange = onCatChange; </script>
#4 Выпадающий список с использованием Javascript (2) (без кнопки Сабмита)
<h2><?php _e('Posts by Category'); ?></h2> <form action="<?php bloginfo('url'); ?>/" method="get"> <div> <?php $select = wp_dropdown_categories('show_option_none=Select category&show_count=1&orderby=name&echo=0'); $select = preg_replace("#<select([^>]*)>#", "<select onchange='return this.form.submit()'>", $select); echo $select; ?> <noscript><div><input type="submit" value="View" /></div></noscript> </div> </form>
Список изменений
С версии 2.1.0 | Введена. |
С версии 4.2.0 | Introduced the value_field argument. |
С версии 4.6.0 | Introduced the required argument. |
С версии 6.1.0 | Introduced the aria_describedby argument. |