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_idnameslugterm_groupterm_taxonomy_idtaxonomydescriptionparentcount( 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. |