web-dev-qa-db-ja.com

カテゴリーアーカイブ、各投稿のサブカテゴリーを一覧表示

私は この記事を見つけました しかし、それは決して答えられませんでした。私は同じことを探しています、これまでのところ解決策を見つけることができませんでした。

私の問題は、カテゴリアーカイブページに各投稿に固有のサブカテゴリを一覧表示する方法が見つからないことです。私のマークアップは現在これです:

<article <?php post_class( 'grid_item' ); ?>>
  <div class="grid_item--inner">
    <?php the_post_thumbnail(); ?>
    <header>
      <a class="cat_card--link" href="<?php the_permalink(); ?>">
        <h2 class="cat_card--title"><?php the_title(); ?></h2>
        <?php get_template_part('templates/entry-meta'); ?>
      </a>
    </header>
    <div class="cat_card--cats">
      <?php wp_list_categories('title_li=&style=none'); ?>
    </div>
  </div>
</article>

もちろんこれは現在のページのカテゴリのすべてのサブカテゴリをリストします。 WP codexのドキュメントを調べてみると、各投稿の該当するサブカテゴリだけを一覧表示する方法が見つかりませんでした。これは可能ですか?もしそうなら、どのように私はこれを達成するのですか?

EDIT:わかりやすくするために、各サブカテゴリを次のようにリストすることに興味があります。

Parent Category: "Video"
  - Post 1: Subcategory "Comedy"
  - Post 2: Subcategory "Action"
  - Post 3: Subcategories "Comedy, Action"

各投稿が使用しているサブカテゴリのみを一覧表示しているところ。

2
88 MPG

現在のカテゴリの子カテゴリのみを一覧表示する場合は、child_of引数を現在のカテゴリIDに設定します。

wp_list_categories(
    array(
        'child_of' => get_queried_object_id(), // this will be ID of current category in a category archive
        'style' => 'none',
        'title_li' => ''
    )
);

編集 - 現在のカテゴリの投稿ごとに子カテゴリのみを一覧表示するには、各投稿の用語のリストをフィルタ処理してparentが現在のカテゴリIDであることを確認する必要があります。

$terms = get_the_terms( get_the_ID(), 'category' );

if( $terms && ! is_wp_error( $terms ) ){
    echo '<ul>';
    foreach( $terms as $term ) {
        if( get_queried_object_id() == $term->parent ){
            echo '<li><a href="' . get_term_link( $term ) . '">' . $term->name . '</a></li>';
        }
    }
    echo '</ul>';
}
3
Milo