I have a custom post type named artwork and I'm trying to get all of the artwork that is associated to the custom taxonomy of artists on the taxonomy-artists.php page.

I found an example here which works, but I'm wondering if I can trim it down a bit. I can't remember if I need to query the taxonomy term while on the taxonomy page. Seems like I don't need to if I am already on the specific page that has queried the custom taxonomy already. Here's the current code:

$terms = wp_get_post_terms( $post->ID, 'artists' );
// post has course_type terms attached
$artists = array();
foreach ($terms as $term){
  $artists[] = $term->slug;

$original_query = $wp_query;
$wp_query = null;
$wp_query = new WP_Query( array(
  'post_type' => 'artwork',
  'tax_query' => array(
      'taxonomy' => 'artists',
      'field' => 'slug',
      'terms' => $artists, //the taxonomy terms I'd like to dynamically query
      'posts_per_page' => '-1'
  'orderby' => 'title',
  'order' => 'ASC'
) );

$image = get_field('artwork_image');
$size = 'artwork-small';
$img = $image['sizes'][ $size ];

if ( have_posts() ): ?>
  <?php while (have_posts() ) : the_post(); ?>
    <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><img src="<?php echo $img ?>" alt="<?php echo $image['alt']; ?>" /><?php the_title(); ?></a></li>
  <?php endwhile; ?>
<?php endif;
$wp_query = null;
$wp_query = $original_query;
} // end if($terms)

Like I said, it works, but just think there might be some extra stuff in there that I don't need if I'm already on the specific custom taxonomy page of taxonomy-artists.php

1 Answer 1


The link you added in your question is for Displaying the other post that share the same TERM.

And I guess you want to display the all post for the current taxonomy not the single term ?

Then just used the default $wp_query to do it just remove the custom wp_query and keep the loop same.

  • Yeah, I just want to get all of the posts that are with the current taxonomy. So something more like this?: <?php $args = array( 'post_type' => 'artwork'); $loop = new WP_Query( $args ); ?> <?php while ( $loop->have_posts() ) : $loop->the_post();?> Commented Apr 19, 2015 at 19:47
  • No just use the direct loop <?php while(have_posts()) : the_post(); ?>
    – Sumit
    Commented Apr 19, 2015 at 19:59
  • Ahhhhh, ok. DUH. Yeah, that makes sense. Thanks for helping clear that up. Commented Apr 20, 2015 at 2:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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