Support

Account

Home Forums General Issues Multiple custom post types by custom taxonomy on same page

Solved

Multiple custom post types by custom taxonomy on same page

  • Trying to build a “single” template with multiple feeds of custom post types by custom custom taxonomy. Using this code, with a few variations to figure out what am i doing wrong.

    Got 2 pieces of code like this in a row

    <?php if( get_field('collectiona') ): ?> 	
             <?php
        $argsc = array(
          'post_type' => 'products',
          'product-collections' => get_field('collectiona'),
        );
        $prods2 = new WP_Query( $argsc );
        if( $prods2->have_posts() ) {
          while( $prods2->have_posts() ) {
            $prods2->the_post();
            ?> 
           Whatever post code
          <?php
          }
        }
        else {
          echo '';
        }
      ?>
    <?php endif; ?>

    “collectiona” is a taxonomy field. With the piece of code, shown above, it just shows all the “products” posts out there. I’ve also tried using a text field with taxonomy slug. It shows first feed perfectly fine, if i’m not using first if statement (<?php if( get_field(‘collectiona’) ): ?>), and if that statement is present- same thing happens. All the “products” are shown. However, even with first feed shown fine, 2nd feed still shows all the “products” out there. Despite what taxonomy slug says.
    I’m trying to build it the way, admin could chose a dropdown taxonomy. Text field with taxonomy slug is just an example.
    p.s.
    I use field as term object

  • You need to be doing either a tax_query or a meta_query, depending on your field type. This line in your arguments is ignored by WP

    product-collections' => get_field('collectiona'),

    See the sections on tax and meta queries in the codex http://codex.wordpress.org/Class_Reference/WP_Query

  • So, i’ve tried using code like this, and still no luck

    
    <?php
    	$taxterms = get_field("collectiona"); ?>				
    									
    					<?php
    					$args = array(
    						'post_type' => 'products',
    						'tax_query' => array(
    							array(
    								'taxonomy' => 'product-collections',
    								'field' => 'id',
    								'terms' => $taxterm->term_id
    							)
    						)
    					);
    		
    					$myquery = new WP_Query( $args );
    					if($myquery->have_posts()) : ?>
    						<h2><?php the_field('prod_subtitle'); ?></h2>
    						<ul>
    							<?php while ( $myquery->have_posts() ) : $myquery->the_post(); ?>
    								<li> <a href="<?php the_permalink(); ?>"><img src="<?php the_field('prod_featured_image'); ?>" onmouseover="this.src='<?php the_field('prod_hover_featured_image'); ?>'" onmouseout="this.src='<?php the_field('prod_featured_image'); ?>'" /></a>
              <h2><?php the_field('prod_subtitle'); ?></h2>
              <p>$<?php the_field('prod_price'); ?></p>
            </li>
    							<?php endwhile; ?>
    						</ul>
    					<?php endif; ?>
    					<?php wp_reset_query(); ?>
  • I’m pretty sure that a taxonomy field stores an array terms IDs, or if you have it set to return term objects then it returns an array of term objects. See the image below. If you want to use the returned value in queries like this those should be the settings of your taxonomy field. Then change your query slightly.

    
    <?php
        $taxterms = get_field("collectiona");
        $args = array(
            'post_type' => 'products',
            'tax_query' => array(
                array(
                    'taxonomy' => 'product-collections',
                    'field' => 'id',
                    'terms' => $taxterm, // remove ->term_id
                )
            )
        );
    
  • This did the trick for me. Probably a perversion (my php skills are very basic), but works

    $termss = get_field('collectiona');
        $slll = $termss->slug;
        $args = array(
          'post_type' => 'products',
          'product-collections' => $slll,
        );
        $lineblocks = new WP_Query( $args );
        if( $lineblocks->have_posts() ) {
          while( $lineblocks->have_posts() ) {
            $lineblocks->the_post();

    and query reset at the end of every array

    <?php wp_reset_query(); ?>

Viewing 5 posts - 1 through 5 (of 5 total)

The topic ‘Multiple custom post types by custom taxonomy on same page’ is closed to new replies.