Получение родительского термина с помощью дочернего термина

#php #wordpress

#php #wordpress

Вопрос:

Как я могу получить родительский и дочерний термин пользовательского типа post. У меня есть приведенный ниже код, который частично работает, проблема в том, что он не генерирует дочерний и родительский термины в одном и том же div, но в разных div как цикл. Из-за недостатка знаний о PHP я не совсем уверен, как это исправить.

Чего я хочу, если у меня есть родительский и дочерний элементы как;

  - USA
  - New York
  

Результат должен быть;

 USA, New York 
  

но с приведенным ниже кодом он генерирует как

 ,USA
,New York
  

Код;

 <div class="address">
<?php

$terms = get_terms(array(
   'taxonomy' => 'people-country',
   'hide_empty' => false,
 ));
?>
<?php foreach ($terms as $term) : ?>
<?php
     $re = explode('-', $term->name);
     $args = array (
         'post_type' => 'people', //
         'posts_per_page' => 2,
         'order' => 'ASC',
         'tax_query'     => array(
              array(
                 'taxonomy'  => 'people-country',
                 'field'     => 'id',
                 'terms'     => $term->term_id,
              ),
          ),
    );

    $query = new WP_Query( $args );
    if( $query->have_posts() ){
         while( $query->have_posts() ){
             $query->the_post();
             $title =  get_the_title();
             // $info = get_post_meta(get_the_ID(), '_post_info', true);
             // $link = get_term_meta($term->term_id, 'link', true);
    ?>

        <div class="text">
                <span class="number"><?php echo ",".$re[0] ?>
            </span>

        </div>

    <?php
        }
    }
endforeach; ?>

</div>
  

Комментарии:

1. Я надеюсь, что это поможет вам codex.wordpress.org/Function_Reference/_get_term_hierarchy

2. Спасибо @MadhuriPatel, я только что решил это

Ответ №1:

Я просто решил это, изменив его с помощью приведенного ниже кода;

 <?php
$cats = get_the_terms(get_the_ID(), 'people-country');
$names = array();

if ($cats) foreach ($cats as $cat) {
  if ($cat->parent) {
      array_push($names, $cat->name);
  }
}

if ($cats) foreach ($cats as $cat) {
  if (!$cat->parent) {
      array_push($names, $cat->name);
  }
}
?>
<?php echo implode(', ', $names) ?>