Intereting Posts
Как сделать несколько проверок_nonce в одной функции? ссылка на главную страницу (для wp multisite) Категория сообщения и удалить любой почтовый идентификатор класс меню отсутствует в меню wordpress Как использовать current_post для открытия нового неупорядоченного списка каждые пять сообщений Как вставить данные в таблицу базы данных, когда поле еще не создано? Доступ к форме через JS и отправку в MySQL Как создать ссылку, чтобы перейти к части «Оставить комментарий»? Переадресация на Style.css на страницу 404 не найдена Минимизация проблем производительности MultiSite Большое количество созданных таблиц Должен ли я использовать пользовательские таксономии или нет? Запрос MySQL для извлечения категории из wp_posts создавать пользователей на сайте с определенным языком Многопроцессор с пользовательским сайтом магазина для каждого поставщика customize_preview_init: прослушивание любых изменений из области предварительного просмотра настроек

Получите таксономию, которая прикреплена к почте со всеми ее родителями

$locations = get_the_terms( $post_id, 'location' ); foreach ( $locations as $location ) { echo '<a href="'.site_url().'/location/'.$location->slug.'">'. $location->name .'</a>'; break; } 

Как получить все родительские таксономии, если они есть?

Например:

  1. Текущий код выводит London в интерфейсе.

  2. Что мне нужно для вывода Europe > England > London .


То, что мне удалось выкопать или попробовал, состоит в том, что get_the_terms() также имеет parent свойство, которое может использоваться как $location->parent . У этого свойства есть только идентификатор, мне не удалось сжать имя или пробить его. Также нет способа использовать его для извлечения его родителя, если он есть.


Обновление после некоторых экспериментов:

 //Parent if( $location->parent != "" ) { $location_parent_id = $location->parent; $location_parent = get_term_by( 'id', $location_parent_id, 'location' ); echo $location_parent->name; //Here it is } //If I need parent of parent if( $location_parent->parent != "" ) { $location_parent_parent_id = $location_parent->parent; $location_parent_parent = get_term_by( 'id', $location_parent_parent_id, 'location' ); echo $location_parent_parent->name; //Here it is } //etc 

Это очень грациозный подход?

Solutions Collecting From Web of "Получите таксономию, которая прикреплена к почте со всеми ее родителями"

Вы хотите get_ancestors() . Это довольно грубо, но …

 $locations = get_the_terms( $post->ID, 'category' ); // var_dump($locations); $pat = '<a href="'.site_url().'/location/%s">%s</a>'; foreach ( $locations as $location ) { printf($pat,$location->slug,$location->name); $anc = get_ancestors($location->term_id,'category'); if (!empty($anc)) { foreach ($anc as $term) { $t = get_term_by( 'term_id', $term, 'category'); printf($pat,$t->slug,$t->name); } } break; } 

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

 // Get all taxonomies that do not have a parent/top level taxonomies $parents = get_terms( $taxonomy, array( 'hide_empty' => true, 'parent' => 0 ) ); foreach ( $parents as $parent ) { echo $parent->name . ': '; $child_terms = array(); // Get all post terms for this post and use the parent ID to grab the children $children = wp_get_post_terms( get_the_ID(), $taxonomy, array( 'hide_empty' => true, 'parent' => $parent->term_id ) ); foreach ( $children as $child ) { // build a link to the children taxonomy archive $child_terms[] = sprintf( '<a href="%s">%s</a>', get_term_link($child, $taxonomy), $child->name ); } echo implode( ', ', $child_terms) . '<br>'; }