Intereting Posts
Использование имени темы в функциях Пользователи оценивают собственные комментарии Как запрашивать страницу, получать данные, затем запрашивать дочерние страницы этой страницы Как добавить связанное имя в структуре постоянной позиции? Копировать / Переместить выбранные таксономические термины в другую таксономию для должностей Проблемы с функциями. Php визуально сортировать порядок «пользовательских типов сообщений» для конечных пользователей Как получить список вспомогательных блогов без использования get_blog_list ()? Как я могу оптимизировать этот код? тот же шаблон для нескольких пользовательских типов сообщений Некоторые изображения не появляются после переключения с AWS S3 на локальный Шаблоны плагинов против родительской темы как открыть мой существующий сайт на маме Показывать только детей и внуков определенной должности в админ Лучшее место для хранения файлов, вызываемых заданиями cron?

Иерархическое отображение пользовательской таксономии

Я создаю тему свойства, и у меня есть иерархическая таксономия «property_location», зарегистрированная для пользовательского типа «Тип». Каждому имуществу будет назначено местоположение через этот налог, который может иметь одного или нескольких родителей в иерархическом порядке. Так, например, если я назначаю термин местоположения «Спрингс» в свойство, которое является дочерним термином «Гаутенг», оно должно дать мне

Springs, Gauteng 

И если Гаутенг является детским термином «Южная Африка», он должен дать мне

 Springs, Gauteng, South Africa 

Но если я просто назначу термин «Гаутенг» (если предположить, что это дочерний термин «Южной Африки», он должен дать мне

 Gauteng, South Africa 

Поэтому мой вопрос заключается в том, как написать функцию достаточно умную, чтобы найти место определения местоположения самого низкого уровня, присвоенное свойству, и получить его родительские условия в порядке? Есть ли какие-либо функции WordPress, которые помогут?

Функция wpse244577_list_terms() ниже использует wp_list_categories() для тяжелого подъема, а затем изменяет результаты, чтобы термины находились в обратном порядке иерархии.

Поместите этот код в плагин или файл functions.php вашей темы:

 /** * Lists term links for a taxonomy in reverse order of hierarchy * * Based on https://developer.wordpress.org/reference/functions/wp_list_categories/#comment-1169 * @param $taxonomy string taxonomy name * @param $separator string separator for terms */ function wpse244577_list_terms( $taxonomy, $separator = ', ' ) { // Get the term IDs assigned to post. $post_terms = wp_get_object_terms( get_the_ID(), $taxonomy, [ 'fields' => 'ids' ] ); if ( ! empty( $post_terms ) && ! is_wp_error( $post_terms ) ) { $terms = wp_list_categories( [ 'title_li' => '', 'style' => 'none', 'echo' => false, 'taxonomy' => $taxonomy, 'include' => $post_terms, 'separator' => $separator, ] ); $terms = rtrim( trim( str_replace( $separator, $separator, $terms ) ), ', ' ); $terms = explode( $separator, $terms ); $terms = array_reverse( $terms ); $terms = implode( $separator, $terms ); echo $terms; } } 

Чтобы использовать эту функцию, вызовите ее в цикле вашей темы, передав имя нужной таксономии в качестве первого параметра:

 wpse244577_list_terms( 'property_location' );