Boucle Foreach renvoyant plus d’un élément lors de l’interrogation de la taxonomie WordPress

Publié par Jean-Michel le

J’interroge les termes de la taxonomie, puis j’énumère les messages qui sont sous ces termes. La taxonomie est essentiellement une catégorie pour un type de publication personnalisé, et les termes qu’elle contient sont les catégories.

I didn’t think this was possible, but I have a foreach loop that is supposed to loop through each term(category) from the query and then list the terms(categories) on the page and then list the posts in those terms(categories) underneath them, and the issue is that it is listing the posts from all categories(terms) under every category. So I am getting multiples of each post. The posts are only added under one category.

Je n’arrivais pas à comprendre pourquoi il duplique les messages jusqu’à ce que j’essaie accidentellement d’obtenir une valeur de variable pour la description de la catégorie avant même qu’elle ne soit déclarée, quand j’ai vu qu’il n’obtenait pas la valeur des descriptions pour la première catégorie mais la seconde un, je savais qu’il recevait plusieurs messages de catégories à la fois pour la boucle foreach unique. Est-ce seulement possible? Quelqu’un peut-il me dire quel est mon problème et m’aider à résoudre le problème ?

<?php

    $myterms = get_terms('menu-category', 'orderby=none&hide_empty');
        foreach ($myterms as $term) : ?>
            <h3><?php echo $term->name; ?></h3> <?php
                $term_name = $term->slug;
                $term_desc = $term->description;
            if( $term_desc )
              { ?>
              <div class="menu-intro"><p><?php echo $term_desc; ?></p></div>
      <?php } else { ?>
              <div class="menu-intro"></div>
      <?php }

                $args = array(
                'post_type' => 'restaurant-menu',
                'taxonomy' => $term_name,
                );

           //  assigning variables to the loop
           global $wp_query;
           $wp_query = new WP_Query($args);

           // starting loop posting only
           while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

                    <ul class="dishes">
                                            <li>
                            <h4 class="menu-item"><?php the_title(); ?></h4>
                            <p class="menu-description"><?php the_content(); ?></p>

                        <?php $price_value = get_field( "show_price" );
                        if( $price_value == "Yes")
                        { ?>
                         <i class="price">$ <?php $price_value ?></i>
                  <?php } ?>
                        </li>

         <?php  endwhile;

    endforeach;
     ?>

Solution n°1 trouvée

J’ai découvert que mon problème était que j’utilisais le terme comme taxonomie, ce qui m’amenait tous les articles sous la taxonomie et non dans la catégorie (terme).

C’était une solution rapide, j’aurais juste aimé l’avoir compris hier soir:

$args = array(
            'post_type' => 'restaurant-menu',
            'tax_query' => array(
            array(
            'taxonomy' => 'menu-category',
            'field' => 'slug',
            'terms' => $term_name
            )
        )
    );
Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *