/**
* Shows related posts by tag if available and category if not
*
* @author Justin Tallant
* @param string $title h4 above list of related posts
* @param int $count max number of posts to show
* @return mixed related posts wrapped in div or null if none found
*/
function jt_related_posts($title = 'Related Posts', $count = 5) {
global $post;
$tag_ids = array();
$current_cat = get_the_category($post->ID);
$current_cat = $current_cat[0]->cat_ID;
$this_cat = '';
$tags = get_the_tags($post->ID);
if ( $tags ) {
foreach($tags as $tag) {
$tag_ids[] = $tag->term_id;
}
} else {
$this_cat = $current_cat;
}
$args = array(
'post_type' => get_post_type(),
'numberposts' => $count,
'orderby' => 'rand',
'tag__in' => $tag_ids,
'cat' => $this_cat,
'exclude' => $post->ID
);
$related_posts = get_posts($args);
/**
* If the tags are only assigned to this post try getting
* the posts again without the tag__in arg and set the cat
* arg to this category.
*/
if ( empty($related_posts) ) {
$args['tag__in'] = '';
$args['cat'] = $current_cat;
$related_posts = get_posts($args);
}
if ( empty($related_posts) ) {
return;
}
$post_list = '';
foreach($related_posts as $related) {
$post_list .= '' . $related->post_title . ' ';
}
return sprintf('
', $title, $post_list );
}
/**
* Customize the title and where the related posts are displayed
*/
add_action('genesis_after_post_content', 'do_jt_related_posts');
function do_jt_related_posts() {
$title = 'Related Posts';
if ( !is_single() ) {
return;
}
if ( get_post_type() == 'gallery' || get_post_type() == 'case-studies' ) {
$title = 'See more client sites';
}
/**
* Array of post types to be excluded
*/
$exclude = array('aeprofiles', 'bizdir', 'palettes');
foreach($exclude as $type) {
if ( get_post_type() == $type ) {
return;
}
}
echo jt_related_posts($title);
}
Yukarıdaki kod rastgele yazı kodudur. Muhtemelen işinize yarar. Etikete, kategoriye göre yazıları listeler. functions.php'ye ekleyin.
Göstermek istediğiniz yere şeklinde kodu çağırın.