Мы на самом деле имели дело с подобной проблемой. Наличие сотен терминов таксономии, заставляющих редактора загружаться целую вечность. Это проблема иерархических таксономий (например, категорий), а не одноуровневых (например, тегов).
Первое, что вы можете рассмотреть, это удалить метабокс с remove_meta_box()
функция. Вы можете удалить метабокс по его дескриптору, который должен быть taxonomy-slugdiv
:
add_action( 'admin_menu', 'so60570776_remove_metaboxes', 100 );
function so60570776_remove_metaboxes(){
remove_meta_box( 'my-custom-taxonomy-slugdiv', 'post', 'side' );
remove_meta_box( 'anothertaxonomydiv', 'post', 'side' );
}
Теперь это позволит вам загружать редактор без огромного времени загрузки иерархического списка флажков таксономии.
Теперь самая сложная часть - это . Как вы хотите реализовать, позволяя людям добавлять / удалять термины (или категории) таксономии - это до вас . Вы можете создать список доступных для поиска флажков, вы можете автоматически добавлять термины, основанные на текущем пользователе, независимо от того, что лучше всего подходит для вашего конкретного сценария.
В моем конкретном случае я создал собственный метабокс, который позволяет пользователям искать термин таксономии и будет применять все термины таксономии предков по пути, используя пару AJAX функций. Вот как это выглядит:
У меня есть этот набор, так что при вводе текста запускается JavaScript функция с именем termQueryAdvanced
, которая запускается PHP функция с именем term_query_advanced
и возвращает результат через AJAX. Затем, если щелкнуть по окрестности (например, «Большая область Ньюпорта»), он добавляет ее в фиолетовый флажок под заголовком «Текущие окрестности».
В основном он использует WP_Term_Query()
* 1033. * Класс с вводом текста, обеспечивающий параметр name__like
для поиска. Когда выбирается нужный, он использует get_ancestors()
и wp_set_object_terms()
, чтобы применить этот термин и все родительские термины (в моем случае, иерархически, neighborhood
> city
> state
> country
) автоматически.
У меня также есть некоторые CSS на фиолетовых тегах, которые показывают «X» при наведении, который при нажатии будет использовать wp_remove_object_terms()
, который уберет этот термин.
Все это обрабатывается из метабокса, который я добавил с помощью функции add_meta_box()
на хуке add_meta_boxes
.
Моя реализация, вероятно, на намного более сложна, чем требовалось бы большинству людей (и потребовала бы много манипуляций, чтобы даже показать ее здесь), но я специально адаптировал ее для своего точного использования - дело. Опять же, это you , как вы хотите позволить людям добавлять термины таксономии после удаления метабокса, и, честно говоря, могут даже быть плагины, которые могут справиться с этим для вас, но я лично не знаком с есть.