Показывать имя дочерней категории ТОЛЬКО внутри цикла

#php #wordpress #roots-sage

#php #wordpress #корни-sage

Вопрос:

Приведенный ниже код работает для моих сообщений из пользовательского типа сообщения (называемого Sermon), который отображает имя дочерней категории только со ссылками.

 <?php
  $categories = get_the_category();
  if ( ! empty( $categories ) ) {
  echo '<a href="' . esc_url( get_category_link( $categories[0]->term_id ) ) . '">Child Category : ' . esc_html( $categories[0]->name ) . '</a>';
  }
?>
  

Но это не работает, когда я повторно использую его для своих сообщений из самого типа сообщения (категория новостей). Он продолжает показывать родительскую категорию (Новости), если я не снял с нее флажок, Чтобы она отображала только дочернюю категорию (например, развлечения, политика и т. Д.).

Любая помощь будет оценена. Спасибо!

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

1. print_r($categories) chk это

2. Я пытался изменить имена объектов, но он действительно продолжает показывать родительский тег в некоторых сообщениях. Я надеюсь, что кто-нибудь может помочь мне создать функцию для этого, если это невозможно без использования пользовательской функции. 🙂

Ответ №1:

Я решил свою проблему с помощью этой пользовательской функции, которую я нашел в Интернете, и немного изменил, чтобы соответствовать моим требованиям.

 function the_category_children($slug=""){
  $separator = ', ';
  $output = '';
  if($categories       = get_the_category()):
    if($slug_category   = get_category_by_slug($slug)):
      foreach($categories as $category):
        if (cat_is_ancestor_of($slug_category, $category)):
          $output .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . esc_html( $category->name ) . '</a>' . $separator;
        endif;
      endforeach;
      echo trim( $output, $separator );
    endif;
  endif;
}
  

И вызов этой функции the_category_children(‘имя_категории’) внутри цикла(content.php ). ^_^