Related Posts By Taxonomy
06
April
Here’s a useful function for displaying all of the related posts in a given taxonomy. I’ve used similar functions in the past in building a shortcode to display a list of the same custom post types that share a common taxonomy.
function related_posts_by_taxonomy( $post_id, $taxonomy, $args=array() ) { $query = new WP_Query(); $terms = wp_get_object_terms( $post_id, $taxonomy ); if ( count( $terms ) ) { $post_ids = get_objects_in_term( $terms[0]->term_id, $taxonomy ); // Remove the current post ID if(($key = array_search($post_id, $post_ids)) !== false) { unset($post_ids[$key]); } $post = get_post( $post_id ); $post_type = get_post_type( $post ); $args = wp_parse_args( $args, array( 'post_type' => $post_type, 'post__in' => $post_ids, 'taxonomy' => $taxonomy, 'term' => $terms[0]->slug, ) ); $query = new WP_Query( $args ); } return $query; }
Copy it into your functions.php
and then call it from a template, or a shortcode function, something like this:
global $post; $tax='my-custom-taxonomy'; $related_list = ''; $related = related_posts_by_taxonomy( $post->ID, $tax ); while ( $related->have_posts() ): $related->the_post(); $related_list.='<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>'; endwhile;
No comments yet.