Вывод произвольной таксономии в виде чекбоксов или выпадающего списка
Я зарегистрировал произвольную таксономию для своего произвольного типа записи. На экране редактирования метабокс таксономии отображается с полем автозаполнения.
Возможно ли отобразить её в виде чекбоксов или выпадающего списка?
Начиная с WordPress 3.7 (https://core.trac.wordpress.org/ticket/14206) вы можете добавить этот аргумент в register_taxonomy:
'meta_box_cb' => 'post_categories_meta_box'
чтобы получить встроенный метабокс с чекбоксами в стиле категорий, без необходимости делать вашу таксономию иерархической.
Также вы можете вместо этого указать свою callback-функцию для создания собственного метабокса (например, с выпадающим списком).
Отлично, именно это мне и нужно было, без необходимости делать таксономию иерархической. Спасибо
Alexander Holsgrove
Проблема в том, что неиерархические и иерархические таксономии имеют разную структуру данных, которую нужно сохранять. Как исправить эту проблему, смотрите здесь https://gist.github.com/gschoppe/29ba81a1f676d7802cb8#file-cat-like-custom-taxonomy-php
P. Galbraith
Это потрясающе! Спасибо... Я даже не знал, что такое существует
Sam Holguin
Где я могу изменить информацию, как предложил Джастин Фауэлл? Извините, если это очевидно для всех, я только учусь. Эмили
Emily Wilding
В вызове register_taxonomy() для вашей пользовательской таксономии. Как вы настраиваете таксономию?
Rup
Возможно, вы не установили аргумент 'hierarchical' в значение true при регистрации таксономии с помощью register_taxonomy. Это означает, что по умолчанию используется false, что дает интерфейс, похожий на теги.
Добавьте 'hierarchical' => true в вашу функцию register_taxonomy.
О да... Спасибо! НО Можно ли теперь изменить это на чекбоксы или даже выпадающий список? Я хочу иметь возможность добавить это как настройку в параметры моего плагина.
Julian F. Weinert
Изменение hierarchical на true должно изменить интерфейс на чекбоксы на экране редактирования вашего CPT.
vancoder
Да, это так — но я хочу иметь возможность переключаться между этими вариантами. Я не думаю, что хорошей практикой будет переключать hierarchical. Это ведь изменяет не только интерфейс, верно?
Julian F. Weinert
Ну, иерархическая делает её... иерархической :) Насколько мне известно, переключение между двумя интерфейсами невозможно.
vancoder
Если вы хотите изменить тип выбора существующей таксономии плагина на чекбоксы, вам нужно отредактировать существующий register_taxonomy().
add_action( 'init', 'change_room_term_to_checkbox', 999);
function change_room_term_to_checkbox()
{
$tax = get_taxonomy('roomtype');
$tax->meta_box_cb = 'post_categories_meta_box';
$tax->hierarchical = true;
}
'roomtype' - это название таксономии, используемое в register_taxonomy('roomtype', array(.....