wp_terms_checklist() WP 3.0.0

Виводить UL список із input checkbox полів, заголовком яких є назви елементів зазначеної таксономії.

Ця функція є основою аналогічної функції для виведення списку категорій wp_category_checklist() .

Для роботи функцій на фронті, потрібно підключити файл:

require_once ABSPATH .'/wp-admin/includes/template.php';

1 раз – 0.000455 сек
(швидко) | 50000 разів – 10.85 сек
(повільно)

Хуки з функції

Повертає

Строку. Виводить на екран HTML код.

Шаблон використання

wp_terms_checklist( $post_id, [
	'descendants_and_self' => 0,
	'selected_cats' => false,
	'popular_cats' => false,
	//'walker' => null,
	'taxonomy' => 'category',
	'checked_ontop' => true,
	'echo' => true,
]);

Використання

wp_terms_checklist($post_id, $args);
$post_id
(число)
ID поста, для якого вибудовується список елементів таксономії.


За замовчуванням: 0
$args
(масив/рядок)

Масив параметрів для створення списку. Можливі значення:

  • descendants_and_self (число)
    ID елемента таксономії, коли потрібно вивести дочірні елементи таксономії зазначеного елемента. 0 – виведе всі елементи.
    За замовчуванням: 0

  • selected_cats (масив)
    Список елементів таксономії, які потрібно відзначити галочками. Якщо $post_id зазначений, то за замовчуванням будуть виділені елементи таксономії, в яких є вказаний пост.
    Типово: false

  • popular_cats (масив)
    Список елементів таксономії, які отримають клас “popular-category” (атрибут тега class).
    Типово: false

  • walker (об’єкт)
    Примірник класу, який робитиме висновок.
    Типово: new Walker_Category_Checklist

  • taxonomy (рядок)
    Назва таксономії елементи якої будуть виведені в чеклісті.
    Типово: ‘category’

  • checked_ontop (логічний)
    true – помістити виділені елементи до списку. Елементи будуть поміщені вгору, навіть якщо вони є вкладеними елементами іншого елемента (деревовидність порушується).
    Типово: true

  • echo (логічний)
    true – виводити на екран. false – повертати для обробки. З версії 4.4.
    Типово: true

Приклади

0

#1 Отримаємо чекліст елементів таксономії

Припустимо, у нас є таксономія ‘wpfunc’ і нам потрібно вивести список чекбоксів елемента 51 і всіх його дочірніх елементів. Також вкажемо виділені та популярні елементи.

require_once ABSPATH .'/wp-admin/includes/template.php';

$ args = array (
	'descendants_and_self' => 51,
	'selected_cats' => array(219, 52),
	'popular_cats' => array(219, 52),
	'taxonomy' => 'wpfunc',
	'checked_ontop' => true
);

echo '<ul>';
wp_terms_checklist(0, $ args);
echo '</ul>';

Виведе:

<ul>
	<li id='wpfunc-52' class="popular-category">
		<label class="selectit"><input value="52" type="checkbox" name="tax_input[wpfunc][]" id="in-wpfunc-52" checked='checked' /> Коментарі</label >
	</li>

	<li id='wpfunc-219' class="popular-category">
		<label class="selectit"><input value="219" type="checkbox" name="tax_input[wpfunc][]" id="in-wpfunc-219" checked='checked' /> Пагінація коментарів</ label>
	</li>

	<li id='wpfunc-51'>
		<label class="selectit"><input value="51" type="checkbox" name="tax_input[wpfunc][]" id="in-wpfunc-51" /> Коментарі, Пінги...</label >
		<ul class='children'>
			<li id='wpfunc-218'>
				<label class="selectit"><input value="218" type="checkbox" name="tax_input[wpfunc][]" id="in-wpfunc-218" /> Цикли коментарів</label>
			</li>
		</ul>
	</li>
</ul>

список змін

З версії 3.0.0Введено.
З версії 4.4.0Introduced the $echo argument.

Код wp_terms_checklist() WP 6.0.2

function wp_terms_checklist( $post_id = 0, $args = array() ) {
	$defaults = array(
		'descendants_and_self' => 0,
		'selected_cats' => false,
		'popular_cats' => false,
		'walker' => null,
		'taxonomy' => 'category',
		'checked_ontop' => true,
		'echo' => true,
	);

	/**
	 * Filters the taxonomy terms checklist arguments.
	 *
	 * @ Since 3.4.0
	 *
	 * @see wp_terms_checklist()
	 *
	 * @param array|string $args Ан array або string of arguments.
	 * @param int $post_id The post ID.
	 */
	$params = apply_filters( 'wp_terms_checklist_args', $args, $post_id );

	$parsed_args = wp_parse_args($params, $defaults);

	if ( empty( $parsed_args['walker'] ) || ! ( $parsed_args['walker'] instanceof Walker ) ) {
		$walker = новий Walker_Category_Checklist;
	} else {
		$walker = $parsed_args['walker'];
	}

	$taxonomy = $parsed_args['taxonomy'];
	$descendants_and_self = (int) $parsed_args['descendants_and_self'];

	$args = array( 'taxonomy' => $taxonomy );

	$tax = get_taxonomy( $taxonomy );
	$args['disabled'] = ! current_user_can($tax->cap->assign_terms);

	$args['list_only'] = ! empty( $parsed_args['list_only'] );

	if ( is_array( $parsed_args['selected_cats'] ) ) {
		$args['selected_cats'] = array_map( 'intval', $parsed_args['selected_cats'] );
	} elseif ($post_id) {
		$args['selected_cats'] = wp_get_object_terms( $post_id, $taxonomy, array_merge( $args, array( 'fields' => 'ids' ) ) ));
	} else {
		$args['selected_cats'] = array();
	}

	if ( is_array( $parsed_args['popular_cats'] ) ) {
		$args['popular_cats'] = array_map( 'intval', $parsed_args['popular_cats'] );
	} else {
		$args['popular_cats'] = get_terms(
			array(
				'taxonomy' => $taxonomy,
				'fields' => 'ids',
				'orderby' => 'count',
				'order' => 'DESC',
				'number' => 10,
				'hierarchical' => false,
			)
		);
	}

	if ($ descendants_and_self) {
		$categories = (array) get_terms(
			array(
				'taxonomy' => $taxonomy,
				'child_of' => $descendants_and_self,
				'hierarchical' => 0,
				'hide_empty' => 0,
			)
		);
		$self = get_term($descendants_and_self, $taxonomy);
		array_unshift($categories, $self);
	} else {
		$categories = (array) get_terms(
			array(
				'taxonomy' => $taxonomy,
				'get' => 'all',
			)
		);
	}

	$output = '';

	if ( $parsed_args['checked_ontop'] ) {
		// Post-process $categories , що не збираються exclude to the get_terms() query
		// для клопоту над кожним повідомленням (для будь-якої автівки).
		$checked_categories = array();
		$ keys = array_keys ($ categories);

		foreach ( $keys as $k ) {
			if ( in_array( $categories[ $k ]->term_id, $args['selected_cats'], true ) ) {
				$checked_categories[] = $categories[ $k ];
				unset($categories[$k]);
			}
		}

		// Put checked categories on top.
		$output .= $walker->walk( $checked_categories, 0, $args );
	}
	// Then the rest of them.
	$output .= $walker->walk( $categories, 0, $args );

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

	return $output;
}

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

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