web-dev-qa-db-fra.com

Archive de catégories, liste les sous-catégories de chaque article

J'ai trouvé ce post , mais il n'a jamais été répondu. Je cherche la même chose, je n'ai pas encore trouvé de solution.

Mon problème est que je ne parviens pas à répertorier les sous-catégories propres à chaque publication sur une page d'archives de catégories. Mon balisage est actuellement ceci:

<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>

Cela va bien sûr lister toutes les sous-catégories de la catégorie de la page en cours. En parcourant la documentation du codex WP, je n'ai pas trouvé moyen de répertorier uniquement les sous-catégories applicables de chaque message. Est-ce possible? Si oui, comment puis-je y parvenir?

EDIT:Pour clarifier, je souhaiterais lister chaque sous-catégorie de la manière suivante:

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

Où chaque article ne répertorie que les sous-catégories qu’il utilise.

2
88 MPG

Si vous souhaitez répertorier uniquement les catégories enfants de la catégorie actuelle, définissez l'argument child_of sur l'ID de la catégorie actuelle.

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' => ''
    )
);

EDITER - Pour répertorier uniquement les catégories enfants par publication de la catégorie actuelle, vous devez filtrer la liste des termes de chaque publication afin de vérifier que parent est l'ID de la catégorie actuelle.

$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