Hi everyone!
I have a script that displays related posts for standard posts but I need to modify it to display related posts from a custom post type.
The custom post type I'm trying to modify is using the following:
Custom Post Type = 'gallery'
Term (the custom post's categories) = 'portfolio-type'
And here's a related posts script I'd like to use but I need help modifying it for the custom post type.
<?php
$orig_post = $post;
global $post;
$categories = get_the_category($post->ID);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
$args=array(
'category__in' => $category_ids,
'post__not_in' => array($post->ID),
'posts_per_page'=> 2, // Number of related posts that will be shown.
'caller_get_posts'=>1
);
$my_query = new wp_query( $args );
if( $my_query->have_posts() ) {
echo '<div id="related_posts"><h3>Related Posts</h3><ul>';
while( $my_query->have_posts() ) {
$my_query->the_post();?>
<li><div class="relatedthumb"><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a></div>
<div class="relatedcontent">
<h3><a href="<? the_permalink()?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
<?php the_time('M j, Y') ?>
</div>
</li>
<?
}
echo '</ul></div>';
}
}
$post = $orig_post;
wp_reset_query(); ?>
Luis Abarca answers:
Try this way
$args=array(
'category__in' => $category_ids,
'post__not_in' => array($post->ID),
'posts_per_page'=> 2, // Number of related posts that will be shown.
'caller_get_posts'=>1,
<strong>'post_type' => 'gallery'</strong>
);
$my_query = new WP_Query( $args );
beowulf comments:
Thanks. Adding the post type seems like a logical start. But I still don't think it's grabbing the custom post type's 'categories'.
I need the category array to be something like this:
$taxonomy = 'portfolio-type';
$categories = get_terms($taxonomy);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
But it's not displaying any posts.
Luis Abarca comments:
You are right, i didn't notice:
$taxonomy = 'portfolio-type';
$categories = get_terms($taxonomy);
$categories = get_the_category($post->ID);
if ($categories) {
$category_ids = array();
foreach($categories as $individual_category) $category_ids[] = $individual_category->term_id;
$args = array(
<strong>'tax_query' => array(
array(
'taxonomy' => $taxonomy,
'field' => 'id',
'terms' => $category_ids
)
),
'post_type' => 'gallery',</strong>
'post__not_in' => array($post->ID),
'posts_per_page'=> 2, // Number of related posts that will be shown.
'caller_get_posts'=>1
);
$my_query = new WP_Query( $args );
beowulf comments:
Great!
I just removed this:
$categories = get_the_category($post->ID);
...and it's working! :)