Функция wp_terms_checklist
в WordPress позволяет создать ненумерованный список чекбоксов для терминов, связанных с определенной таксономией. Эта функция является универсальной, что делает её полезной для работы с любыми таксономиями, а не только с категориями.
wp_terms_checklist( int $post_id, array|string $args = array() ): string
Описание
Функция wp_terms_checklist
используется для вывода списка чекбоксов, который отображает названия терминов указанной таксономии. Она предоставляет гибкие параметры для настройки вывода, включая возможность выбора, какие термины должны быть отмечены.
Параметры функции
- $post_id (int): ID поста, для которого создается список. По умолчанию равен 0.
- $args (array|string): Массив или строка с аргументами для генерации чеклиста терминов. Возможные значения:
- descendants_and_self (int): ID термина, для которого необходимо вывести дочерние элементы. По умолчанию 0.
- selected_cats (int[]): Массив ID терминов, которые нужно отметить. По умолчанию
false
. - popular_cats (int[]): Массив ID терминов, которые получат класс «popular-category». По умолчанию
false
. - walker (object): Объект для построения вывода. По умолчанию используется экземпляр
Walker_Category_Checklist
. - taxonomy (string): Название таксономии для генерации чеклиста. По умолчанию ‘category’.
- checked_ontop (bool): Перемещать ли отмеченные элементы вверх списка. По умолчанию
true
. - echo (bool): Нужно ли выводить результат на экран. Если
false
, функция вернет результат в виде строки. По умолчаниюtrue
.
Пример 1: Создание чеклиста терминов
Допустим, у нас есть таксономия с названием wp_tags
, и мы хотим отобразить список чекбоксов для термина с ID 35 и всех его дочерних элементов. Мы также хотим выделить некоторые термины.
require_once ABSPATH . '/wp-admin/includes/template.php';
$args = array(
'descendants_and_self' => 35,
'selected_cats' => array(12, 20),
'popular_cats' => array(12, 20),
'taxonomy' => 'wp_tags',
'checked_ontop' => true,
);
echo '<ul>';
wp_terms_checklist( 0, $args );
echo '</ul>';
Результат выполнения данного кода может выглядеть следующим образом:
<ul>
<li id='wp_tags-20' class="popular-category">
<label class="selectit"><input value="20" type="checkbox" name="tax_input[wp_tags][]" id="in-wp_tags-20" checked='checked' /> Технологии</label>
</li>
<li id='wp_tags-12' class="popular-category">
<label class="selectit"><input value="12" type="checkbox" name="tax_input[wp_tags][]" id="in-wp_tags-12" checked='checked' /> Научные открытия</label>
</li>
<li id='wp_tags-35'>
<label class="selectit"><input value="35" type="checkbox" name="tax_input[wp_tags][]" id="in-wp_tags-35" /> Научные исследования</label>
<ul class='children'>
<li id='wp_tags-40'>
<label class="selectit"><input value="40" type="checkbox" name="tax_input[wp_tags][]" id="in-wp_tags-40" /> Проектирование</label>
</li>
</ul>
</li>
</ul>
Пример 2: Чеклист для произвольной таксономии
Теперь представим, что у нас есть произвольная таксономия под названием product_category
, и мы хотим вывести чеклист для терминов, используя разные параметры.
require_once ABSPATH . '/wp-admin/includes/template.php';
$args = array(
'descendants_and_self' => 5, // Выводим термин с ID 5 и его потомков
'selected_cats' => array(3, 8), // Отмечаем термины с ID 3 и 8
'taxonomy' => 'product_category',
'checked_ontop' => false, // Не перемещаем отмеченные элементы вверх
);
echo '<ul>';
wp_terms_checklist( 0, $args );
echo '</ul>';
В этом примере будет создан список чекбоксов, который включает термин с ID 5 и его дочерние термины, при этом термины с ID 3 и 8 будут отмечены.
Пример 3: Использование функции с возвратом результата
Если мы хотим получить результат в виде строки, а не выводить его на экран, мы можем установить параметр echo
в false
.
require_once ABSPATH . '/wp-admin/includes/template.php';
$args = array(
'taxonomy' => 'post_tag',
'selected_cats' => array(15, 42), // Отмечаем термины
'echo' => false // Возвращаем строку вместо вывода
);
$terms_checklist = wp_terms_checklist( 0, $args );
echo '<div class="terms-checklist">' . $terms_checklist . '</div>';
В этом случае результат будет возвращен в переменной $terms_checklist
, и его можно использовать для дальнейшей обработки или стилизации.
Заключение
Функция wp_terms_checklist
— это мощный инструмент для создания списков чекбоксов терминов в WordPress. Благодаря своей универсальности и гибкости, она позволяет легко интегрировать функционал таксономий в различные части вашего проекта. Используя эту функцию, вы можете создать интуитивно понятный интерфейс для управления терминами в админ-панели WordPress.