Описание
Выводит на экран выпадающий список категорий.
Функция возвращает HTML код выпадающего списка категорий (<select>).
Использование
<?php wp_dropdown_categories( $args ); ?>
Шаблон использования
<?php $args = array(
'show_option_all' => '',
'show_option_none' => '',
'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 );
wp_dropdown_categories( $args ); ?>
Параметры
- $args (строка/массив)
- Массив аргументов которые нужно изменить. Можно указать как строку запроса.
По умолчанию: массив аргументов по умолчанию
Аргументы параметра $args
- show_option_all (строка)
- Текст для показа всех категорий. Будет начальным текстом в списке.
По умолчанию: '' - show_option_none (строка/массив)
- Текст для показа пункта списка "без категорий". Будет начальным текстом в списке или вторым, если установлен параметр show_option_all.
По умолчанию: '' - 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) - не показывать количество записей.
По умолчанию: 0
- hide_empty (Логический)
- Показывать (0) или нет (1) категории не имеющие записей (пустые категории).
- 0 (true) - показывать пустые;
- 1 (false) - не показывать пустые категории.
- По умолчанию: 1
- child_of (строка/массив)
- Показать дочерние категории. В параметре указывается ID родительской категории (категория, вложенные категории которой нужно показать).
По умолчанию: '' - exclude (строка/число)
- ID категорий, которые нужно исключить. Указывать через запятую.
По умолчанию: '' - exclude_tree (строка/массив)
- ID родительской категории, дерево которой не нужно показывать. Дерево категории - это категория и все в нее вложенные категории.
По умолчанию: 0 - echo (логический)
- 1 - выводить результат на экран. 0 - возвращать для обработки.
По умолчанию: 1 - depth (число)
- Глубина вложенности дочерних категорий. Игнорируется если параметр hierarchical отключен.
По умолчанию: 0/flase - tab_index (строка)
- Значение атрибута tabindex у HTML тега <select>
- name (строка)
- Значение атрибута name у HTML тега <select>
По умолчанию: cat - id (строка)
- Значение атрибута ID у тега <select>
По умолчанию: как у name - class (строка)
- Аттрибут class для select элемента.
По умолчанию: 'postform' - selected (логический)
- ID категории, которая должна быть выделена.
По умолчанию: 0 - hierarchical (логический)
- Выводить категории в виде дерева. 1 - да, показать как дерево, 0 - вывести сплошным списком.
По умолчанию: 0 - pad_counts (логический)
- Подсчитывать количество постов для родительских категорий, как сумма всех постов во вложенных категориях. Если параметры show_counts и hierarchical включены, этот параметр включается автоматически (становится true).
По умолчанию: false - taxonomy (строка)
- Название таксономии с которой будет работать функция.
По умолчанию: 'category' - hide_if_empty (логический)
- Прятать выпадающий список если вернулся пустой результат? true - да, не показывать список, если нет категорий. false - показывать пустой список.
По умолчанию: false
Примеры
1. Выпадающий список с кнопкой Submit.
Пример вывода выпадающего списка категорий с кнопкой сабмита:
<h2>Категории:</h2>
<form action="<?php bloginfo('url'); ?>" method="get">
<div>
<?php wp_dropdown_categories('show_count=1&hierarchical=1'); ?>
<input type="submit" name="submit" value="view" />
</div>
</form>
2. Выпадающий список с использованием Javascript (без кнопки Сабмита).
Пример, демонстрирующий использование аргумента show_option_none:
<h2>Категории:</h2>
<?php wp_dropdown_categories('show_option_none=Select category'); ?>
<script type="text/javascript"><!--
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>
2.1. Выпадающий список с использованием 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$1 onchange='return this.form.submit()'>", $select);
echo $select;
?>
<noscript><div><input type="submit" value="View" /></div></noscript>
</div></form>
wp_dropdown_categories()
из файла: /wp-includes/category-template.php WP 3.3.2function wp_dropdown_categories( $args = '' ) {
$defaults = array(
'show_option_all' => '', 'show_option_none' => '',
'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' => '',
'class' => 'postform', 'depth' => 0,
'tab_index' => 0, 'taxonomy' => 'category',
'hide_if_empty' => false
);
$defaults['selected'] = ( is_category() ) ? get_query_var( 'cat' ) : 0;
// Back compat.
if ( isset( $args['type'] ) && 'link' == $args['type'] ) {
_deprecated_argument( __FUNCTION__, '3.0', '' );
$args['taxonomy'] = 'link_category';
}
$r = wp_parse_args( $args, $defaults );
if ( !isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] ) {
$r['pad_counts'] = true;
}
$r['include_last_update_time'] = $r['show_last_update'];
extract( $r );
$tab_index_attribute = '';
if ( (int) $tab_index > 0 )
$tab_index_attribute = " tabindex=\"$tab_index\"";
$categories = get_terms( $taxonomy, $r );
$name = esc_attr( $name );
$class = esc_attr( $class );
$id = $id ? esc_attr( $id ) : $name;
if ( ! $r['hide_if_empty'] || ! empty($categories) )
$output = "<select name='$name' id='$id' class='$class' $tab_index_attribute>\n";
else
$output = '';
if ( empty($categories) && ! $r['hide_if_empty'] && !empty($show_option_none) ) {
$show_option_none = apply_filters( 'list_cats', $show_option_none );
$output .= "\t<option value='-1' selected='selected'>$show_option_none</option>\n";
}
if ( ! empty( $categories ) ) {
if ( $show_option_all ) {
$show_option_all = apply_filters( 'list_cats', $show_option_all );
$selected = ( '0' === strval($r['selected']) ) ? " selected='selected'" : '';
$output .= "\t<option value='0'$selected>$show_option_all</option>\n";
}
if ( $show_option_none ) {
$show_option_none = apply_filters( 'list_cats', $show_option_none );
$selected = ( '-1' === strval($r['selected']) ) ? " selected='selected'" : '';
$output .= "\t<option value='-1'$selected>$show_option_none</option>\n";
}
if ( $hierarchical )
$depth = $r['depth']; // Walk the full depth.
else
$depth = -1; // Flat.
$output .= walk_category_dropdown_tree( $categories, $depth, $r );
}
if ( ! $r['hide_if_empty'] || ! empty($categories) )
$output .= "</select>\n";
$output = apply_filters( 'wp_dropdown_cats', $output );
if ( $echo )
echo $output;
return $output;
}Связанные Функции
Ещё из раздела
Смотрите также: Функции WordPress и Теги Шаблона.