List posts by taxonomy

List custom post types by taxonomy term.
List Posts For Terms Of A Custom Taxonomy For Any Post Type

I used this on a client website to list posts tagged by year.

Ie:
1940
-post 1
-post 2
1941
-post 3
-post 4…

I scoured the internet for a good working solution and there are so many that don’t work, this this simply did. Cut n paste. Originally written by nickam.



<?php
$post_type = 'filmography';
$tax = 'film-year';
$tax_terms = get_terms($tax,'hide_empty=0');

//list the taxonomy
$i=0; // counter for printing separator bars
foreach ($tax_terms as $tax_term) {
$wpq = array ('taxonomy'=>$tax,'term'=>$tax_term->slug);
$query = new WP_Query ($wpq);
$article_count = $query->post_count;
echo "<a href=\"#".$tax_term->slug."\">".$tax_term->name."</a>";
// output separator bar if not last item in list
if ( $i < count($tax_terms)-1 ) {
echo " | " ;
}
$i++;
}

//list everything
if ($tax_terms) {
  foreach ($tax_terms  as $tax_term) {
    $args=array(
      'post_type' => $post_type,
      "$tax" => $tax_term->slug,
      'post_status' => 'publish',
      'posts_per_page' => -1,
      'caller_get_posts'=> 1
    );

    $my_query = null;
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
      echo "<h2 class=\"tax_term-heading\" id=\"".$tax_term->slug."\"> $tax_term->name </h2>";
      while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p>
        <?php
      endwhile;
      echo "<p><a href=\"#top\">Back to top</a></p>";
    }
    wp_reset_query();
  }
}
?>

Leave a Reply