WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am querying the taxonomy terms and then listing the posts that are under those terms. The taxonomy is basically a category for a custom post type, and the terms in it are the categories.

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.

I couldn't figure out why it was duplicating the posts until I accidently tried getting a variables value for the category description before it was even declared, when I seen that it did not get the descriptions value for the first category but it did the second one, I knew it was getting multiple categories posts at once for the single foreach loop. Is this even possible? Can someone tell me what my issue is and help me rectify the problem?


    $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">
                            <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 } ?>

         <?php  endwhile;

share|improve this question

I found my issue was that I was using the term as the taxonomy, which brought me all posts under the taxonomy and not the category(term).

This was a quick fix, I just wish I would have caught on to it last night:

$args = array(
    'post_type' => 'restaurant-menu',
    'tax_query' => array(
            'taxonomy' => 'menu-category',
            'field' => 'slug',
            'terms' => $term_name
share|improve this answer
+1 for finding your own answer =D – Tom J Nowell Mar 5 '14 at 15:08

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.