2016-07-21 8 views
3

Я хочу показать на сайте родителя выбранной таксономии. Для этого у меня есть код выше, но проблема заключается в том, что он отображает всю выбранную таксономию в списке, который теперь имеет структуру.Как отобразить родителя таксономии для выбранной таксономии

global $post; 
$features = get_the_terms($post->ID, 'property-feature'); 

if (!empty($features) && is_array($features) && !is_wp_error($features)) { 
?> 
<div class="property-features"> 
    <?php 
    global $inspiry_options; 
    $property_features_title = $inspiry_options[ 'inspiry_property_features_title' ]; 
    if(!empty($property_features_title)) { 
     ?><h4 class="fancy-title"><?php echo esc_html($property_features_title); ?></h4><?php 
    } 
    ?> 
    <ul class="property-features-list clearfix"> 
     <?php 

     foreach($parent_term as $single_feature) { 
      echo '<li><a href="' . get_term_link($single_feature->slug, 'property-feature') .'">'. $single_feature->name . '</a></li>'; 
     } 
     ?> 
    </ul> 
</div> 
<?php 

}

Пример:

Родитель: вариант 1, вариант 2

Родитель 2: вариант 3, вариант 4

Если я выбираю вариант 2 и вариант 3 я хочу видеть

Родительский: вариант 2

Родитель 2: вариант 3

Updare 2

global $post; 
$features = get_the_terms($post->ID, 'property-feature'); 
$featuresss = get_the_terms($post->ID, 'property-feature'); 

// determine the topmost parent of a term 
function get_term_top_most_parent($term_id, $taxonomy){ 
    // start from the current term 
    $parent = get_term_by('id', $term_id, $taxonomy); 
    // climb up the hierarchy until we reach a term with parent = '0' 
    while ($parent->parent != '0'){ 
     $term_id = $parent->parent; 

     $parent = get_term_by('id', $term_id, $taxonomy); 
    } 
    return $parent; 
} 

// so once you have this function you can just loop over the results returned by wp_get_object_terms 

function hey_top_parents($taxonomy, $results = 1) { 
    // get terms for current post 
    $terms = wp_get_object_terms(get_the_ID(), $taxonomy); 
    $y = get_the_terms($terms->term_id, $taxonomy); 
    // set vars 
    $top_parent_terms = array(); 
    foreach ($terms as $term) { 
     //get top level parent 
     $top_parent = get_term_top_most_parent($term->term_id, $taxonomy); 
     //check if you have it in your array to only add it once 
     if (!in_array($top_parent, $top_parent_terms)) { 
      $top_parent_terms[] = $top_parent; 
     } 
    } 
    // build output (the HTML is up to you) 
     foreach($top_parent_terms as $single_feature) { 
       echo '<li><a href="' . get_term_link($single_feature->slug, 'property-feature') .'">'. $single_feature->name . '</a></li>'; 
       foreach($terms as $single) { 
        echo '<ul><li><a href="' . get_term_link($single->slug, 'property-feature') .'">'. $single->name . '</a></li></ul>'; 
       } 
      } 

    //return $top_parent_terms; 

} 

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

ответ

3
global $post; 
$taxonomy = "property-feature"; 

// determine the topmost parent of a term 
function get_term_top_most_parent($term_id, $taxonomy){ 
    // start from the current term 
    $parent = get_term_by('id', $term_id, $taxonomy); 
    // climb up the hierarchy until we reach a term with parent = '0' 
    while ($parent->parent != '0'){ 
     $term_id = $parent->parent; 

     $parent = get_term_by('id', $term_id, $taxonomy); 
    } 
    return $parent; 
} 

// so once you have this function you can just loop over the results returned by wp_get_object_terms 

function hey_top_parents($taxonomy, $results = 1) { 
    // get terms for current post 
    $terms = wp_get_object_terms(get_the_ID(), $taxonomy); 

    // set vars 
    $top_parent_terms = array(); 
    foreach ($terms as $term) { 
     //get top level parent 
     $top_parent = get_term_top_most_parent($term->term_id, $taxonomy); 
     //check if you have it in your array to only add it once 
     if (!in_array($top_parent, $top_parent_terms)) { 
      $top_parent_terms[] = $top_parent; 
     } 
    } 
    // build output (the HTML is up to you) 
    foreach($top_parent_terms as $single_feature) 
    { 
     echo '<li><a href="' . get_term_link($single_feature->slug, $taxonomy) .'">'. $single_feature->name . '</a></li>'; 

     foreach($terms as $single) { 
      if($single_feature->term_id == $single->parent) { 
       echo '<ul><li><a href="' . get_term_link($single->slug, $taxonomy) .'">'. $single->name . '</a></li></ul>'; 
      } 
     } 
    } 

    //return $top_parent_terms; 
} 

ИЗМЕНЕНИЯ:

1) Перемещено имя таксономии к переменной (используется в эхо).

$taxonomy = "property-feature"; 

2) Добавлено, если условие для кода отвечает за отображение дополнительных условий.

if($single_feature->term_id == $single->parent) { 
     echo '<ul><li><a href="' . get_term_link($single->slug, $taxonomy) .'">'. $single->name . '</a></li></ul>'; 
    } 

снимающие (не используется линии кодов):

1)

$features = get_the_terms($post->ID, 'property-feature'); 
$featuresss = get_the_terms($post->ID, 'property-feature'); 

2)

$y = get_the_terms($terms->term_id, $taxonomy); 

РАССМАТРИВАЮТ:

1) Удаление $ переменной приводит:

function hey_top_parents($taxonomy, $results = 1) { 

он нигде не используется, или, может быть, должно быть, чтобы определить, есть ли результаты должны быть возвращены или отображаться с помощью функции.

+0

Использовать $ таксономию = "свойство-свойство"; как arg при вызове функции hey_top_parents – Landon

+0

Как использовать эти функции? –

+0

Просто узнал, как использовать thx –

 Смежные вопросы

  • Нет связанных вопросов^_^