Intereting Posts
Активировать другую тему для предварительного просмотра Виджеты Wp-admin не имеют заголовков Я хочу получить все сообщения в блоге без имени пользователя и пароля Настройка цикла блога BuddyPress Как избежать конфликта wp_nav_menu () ID? Включите чат (HTML, js, css) на всех страницах WordPress Почему wp_enqueue_style () добавляет класс CSS? Как сделать страницу моего архива похожим на популярные сайты для просмотра (например, Polygon и Gamespot) Как удалить ВСЕ виджетов из панели мониторинга? Как добавить время публикации в список сообщений на странице администрирования? Неустранимая ошибка: вызов неопределенной функции get_users () Можно ли использовать add_filter из темы для изменения функции плагина? API-интерфейс WordPress и функция обратного вызова для шрифтов (все шрифты Google через API) Как проверить почту через jquery keyup ()? Использование get_terms для пользовательской таксономии в functions.php

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

$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>'; }