Когда на своем блоге вы выстраиваете иерархическую структуру рубрик, то они отобразятся на странице редактирования записи в виде списка с чекбоксами, отражая родительские/дочерние элементы. Это позволит вам выбрать рубрику, которую нужно назначить записи.
В сегодняшней статье мы рассмотрим способ создания собственного списка с чекбоксами как в админке, чтобы его можно было использовать на фронтенде сайта или на собственной странице опций/настроек для своих собственных таксономий.
Получаем список рубрик
В WordPress уже есть функция, которая позволяет вам получить список рубрик и вывести их на странице, эта функция — wp_list_categories(). Она возвращает список элементов рубрик со ссылками на страницу рубрики.
<ul> <?php wp_list_categories('orderby=name'); ?> </ul>
На текущий момент она возвращает только список элементов, но существует целый ряд параметров, которые можно передать функции и изменить ее поведение. Самым важным параметром в этой статье является параметр walker.
Параметр walker позволяет вам определить класс Walker, который будет обрабатывать вывод рубрик. Класс Walker обработает результаты запроса и позволит их вывести различными способами.
Ниже представлен перечень Walkers, доступных для использования в WordPress:
- Walker_Nav_Menu_Edit
- Walker_Nav_Menu_Checklist
- Walker_Category_Checklist
- Walker_Category
- Walker_CategoryDropdown
- Walker_Comment
- Walker_Nav_Menu
- Walker_Page
- Walker_PageDropdown
Можно использовать любой из них для передачи параметра для настройки различных способов вывода, или же можно создать собственный класс Walker самостоятельно, расширив основной класс Walker в WordPress.
В нашей статье мы будем использовать класс Walker Walker_Category_Checklist, передавая его в качестве параметра и получая вывод рубрик в виде списка с чекбоксами и отображения родительских/дочерних элементов.
<?php $args = array( 'taxonomy' => 'custom-taxonomy', 'walker' => new Walker_Category_Checklist ); ?> <ul class="categorychecklist"> <?php wp_list_categories( $args ); ?> </ul>
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.