Ограничить просмотр списка категорий в WordPress Post edit - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь скрыть список категорий в WP admin, когда вы редактируете свое сообщение. Поскольку у меня есть сотни категорий, веб-сайт заморожен, пока список категорий не будет полностью загружен. Я хотел бы ограничить количество отображаемых или просто не отображаемых категорий и вручную назвать категорию, в которую необходимо добавить сообщение.

(у меня есть пользовательская категория с именем авторов, но она такая же)

descriptive image

1 Ответ

1 голос
/ 07 марта 2020

Мы на самом деле имели дело с подобной проблемой. Наличие сотен терминов таксономии, заставляющих редактора загружаться целую вечность. Это проблема иерархических таксономий (например, категорий), а не одноуровневых (например, тегов).

Первое, что вы можете рассмотреть, это удалить метабокс с 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 функций. Вот как это выглядит:

Image of my neighborhood custom taxonomy selector

У меня есть этот набор, так что при вводе текста запускается 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 , как вы хотите позволить людям добавлять термины таксономии после удаления метабокса, и, честно говоря, могут даже быть плагины, которые могут справиться с этим для вас, но я лично не знаком с есть.

...