wp_dropdown_categories() WP 2.1.0

Відображає або отримує список категорій у форматі 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(з версії WP 4.2)

За замовчуванням: ‘term_id’

required
(логічний)
Чи додавати
<select> атрибут HTML5 ‘required’. З версії 4.6.


Типово: false

Приклади

2

#1 Додамо параметр multiple

// Цей 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,
]);

Отримаємо:

Оригінальний код знаходиться тут .

0

#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>
0

#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>
0

#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.0Introduced the value_field argument.
З версії 4.6.0Запроваджено потрібний argument.

wp dropdown categories WP 6.0.2

function wp_dropdown_categories( $args = '' ) {
	$defaults = array(
		'show_option_all' => '',
		'show_option_none' => '',
		'orderby' => 'id',
		'order' => 'ASC',
		'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,
		'option_none_value' => -1,
		'value_field' => 'term_id',
		'required' => false,
	);

	$defaults['selected'] = (is_category())? get_query_var('cat'): 0;

	// Back compat.
	if ( isset( $args['type'] ) && 'link' === $args['type'] ) {
		_deprecated_argument(
			__FUNCTION__,
			'3.0.0',
			sprintf(
				/* translators: 1: "type => link", 2: "taxonomy => link_category" */
				__( '%1$s is deprecated. Use %2$s instead.' ),
				'<code>type => link</code>',
				'<code>taxonomy => link_category</code>'
			)
		);
		$args['taxonomy'] = 'link_category';
	}

	// Parse incoming $args into array and merge it with $defaults.
	$parsed_args = wp_parse_args($args, $defaults);

	$option_none_value = $parsed_args['option_none_value'];

	if ( ! isset( $parsed_args['pad_counts'] ) && $parsed_args['show_count'] && $parsed_args['hierarchical'] ) {
		$parsed_args['pad_counts'] = true;
	}

	$tab_index = $parsed_args['tab_index'];

	$tab_index_attribute = '';
	if ((int) $tab_index > 0) {
		$tab_index_attribute = "tabindex="$tab_index";
	}

	// Avoid clashes with the 'name' param of get_terms().
	$get_terms_args = $parsed_args;
	unset( $get_terms_args['name'] );
	$categories = get_terms( $get_terms_args );

	$name = esc_attr($parsed_args['name']);
	$class = esc_attr( $parsed_args['class'] );
	$id = $parsed_args['id'] ? esc_attr( $parsed_args['id'] ) : $name;
	$required = $parsed_args['required'] ? 'required' : '';

	if ( ! $parsed_args['hide_if_empty'] || ! empty( $categories ) ) {
		$output = "<select $required name='$name' id='$id' class='$class' $tab_index_attribute>n";
	} else {
		$output = '';
	}
	if ( empty( $categories ) && ! $parsed_args['hide_if_empty'] && ! empty( $parsed_args['show_option_none'] ) ) {

		/**
		 * Filters a taxonomy drop-down display element.
		 *
		 * A variation of taxonomy drop-down display elements can be modified
		 * Just prior to display via this filter. Filterable arguments include
		 * 'show_option_none', 'show_option_all', і різні форми
		 * Term name.
		 *
		 * @ Since 1.2.0
		 *
		 * @see wp_dropdown_categories()
		 *
		 * @param string $element Category name.
		 * @param WP_Term|null $category категорія об'єкта, або null, якщо вони не відповідають категорії.
		 */
		$show_option_none = apply_filters( 'list_cats', $parsed_args['show_option_none'], null );
		$output .= "t<option value='" . esc_attr($option_none_value). "' selected='selected'>$show_option_none</option>n";
	}

	if ( ! empty( $categories ) ) {

		if ( $parsed_args['show_option_all'] ) {

			/** Цей filter is documented в wp-includes/category-template.php */
			$show_option_all = apply_filters( 'list_cats', $parsed_args['show_option_all'], null );
			$selected = ( '0' === (string) $parsed_args['selected'] ) ? "selected='selected'" : '';
			$output .= "t<option value='0'$selected>$show_option_all</option>n";
		}

		if ( $parsed_args['show_option_none'] ) {

			/** Цей filter is documented в wp-includes/category-template.php */
			$show_option_none = apply_filters( 'list_cats', $parsed_args['show_option_none'], null );
			$ selected = selected ($ option_none_value, $ parsed_args ['selected'], false);
			$output .= "t<option value='" . esc_attr($option_none_value). "'$selected>$show_option_none</option>n";
		}

		if ( $parsed_args['hierarchical'] ) {
			$depth = $parsed_args['depth']; // Walk the full depth.
		} else {
			$ depth = -1; // Flat.
		}
		$output .= walk_category_dropdown_tree( $categories, $depth, $parsed_args );
	}

	if ( ! $parsed_args['hide_if_empty'] || ! empty( $categories ) ) {
		$output .= "</select>n";
	}

	/**
	 * Filters taxonomy drop-down output.
	 *
	 * @ Since 2.1.0
	 *
	 * @param string $output HTML output.
	 * @param array $parsed_args Arguments використані для зведення drop-down.
	 */
	$output = apply_filters( 'wp_dropdown_cats', $output, $parsed_args);

	if ( $parsed_args['echo'] ) {
		echo $output;
	}

	return $output;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *