web-dev-qa-db-fra.com

Comment lister les catégories de taxonomie personnalisées?

J'ai un CPT personnalisé contenant des produits et une taxonomie contenant des catégories de produits. Je dois afficher ces catégories sur la page "Produits". Lorsque vous cliquez sur une catégorie donnée, vous devez afficher les produits appartenant à cette catégorie.

En passant, lorsque je clique sur "Voir" sur une certaine catégorie, il affiche uniquement le titre d'un produit. J'ai créé le CPT et la taxonomie à l'aide du plugin CPT UI.

Voici mon code de fichier modèle page-products.php (qui répertorie tous les produits):

<?php
/* Template Name: Products
*/
?>

 <?php get_header('header.php') ?>

 <!--Opening container or wrap outside of the loop-->
 <div class="container my-container">
 <!--start the loop-->
   <?php
   $args=array(
    'post_type' => 'product',
   'post_status' => 'publish',
   'posts_per_page' => 10,
)    ;

$the_query = null;
$the_query = new WP_Query($args);

if( $the_query->have_posts() ) {

$i = 0;
while ($the_query->have_posts()) : $the_query->the_post();

if($i % 3 == 0) { ?>

<div class="row">

<?php
}
?>

<div class="col-md-4">
  <div class="my-inner">
    <?php the_post_thumbnail(); ?>
    <div class="title"><a href="<?php the_permalink(); ?>"><?php 
the_title(); ?></a></div>
    <?php the_excerpt(); ?>
  </div>
</div>

  <?php $i++;
  if($i != 0 && $i % 3 == 0) { ?>
    </div><!--/.row-->
    <div class="clearfix">fgfd</div>

  <?php
   } ?>

  <?php
    endwhile;
    }
    wp_reset_query();
    ?>
1
oksite

Pour obtenir une liste de vos taxonomies personnalisées, vous pouvez utiliser la fonction get_terms() pour créer une boucle:

// Get the taxonomy's terms
$terms = get_terms(
    array(
        'taxonomy'   => 'your-taxonomy',
        'hide_empty' => false,
    )
);

// Check if any term exists
if ( ! empty( $terms ) && is_array( $terms ) ) {
    // Run a loop and print them all
    foreach ( $terms as $term ) { ?>
        <a href="<?php echo esc_url( get_term_link( $term ) ) ?>">
            <?php echo $term->name; ?>
        </a><?php
    }
} 
1
Jack Johansson