Last active
February 20, 2017 09:03
-
-
Save srikat/50ff3c86b8470433dc07 to your computer and use it in GitHub Desktop.
Related Posts with Thumbnails in Genesis with fix for removing duplicate Posts. https://sridharkatakam.com/related-posts-with-thumbnails-in-genesis-reloaded/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
add_action( 'genesis_before_comments', 'sk_related_posts', 12 ); | |
/** | |
* Outputs related posts with thumbnail | |
* | |
* @author Nick the Geek | |
* @url http://designsbynickthegeek.com/tutorials/related-posts-genesis | |
* @global object $post | |
*/ | |
function sk_related_posts() { | |
global $do_not_duplicate; | |
if ( ! is_singular ( 'post' ) ) { | |
return; | |
} | |
$count = 0; | |
$related = ''; | |
$do_not_duplicate = array(); | |
$tags = wp_get_post_tags( get_the_ID() ); | |
$cats = wp_get_post_categories( get_the_ID() ); | |
// If we have some tags, run the tag query. | |
if ( $tags ) { | |
$query = sk_related_tag_query( $tags, $count ); | |
$related .= $query['related']; | |
$count = $query['count']; | |
} | |
// If we have some categories and less than 5 posts, run the cat query. | |
if ( $cats && $count <= 4 ) { | |
$query = sk_related_cat_query( $cats, $count ); | |
$related .= $query['related']; | |
$count = $query['count']; | |
} | |
// End here if we don't have any related posts. | |
if ( ! $related ) { | |
return; | |
} | |
// Display the related posts section. | |
echo '<div class="related">'; | |
echo '<h3 class="related-title">You might also enjoy...</h3>'; | |
echo '<div class="related-posts-list" data-columns>' . $related . '</div>'; | |
echo '</div>'; | |
} | |
function sk_related_tag_query( $tags, $count ) { | |
global $do_not_duplicate; | |
if ( ! $tags ) { | |
return; | |
} | |
$postIDs = array( get_the_ID() ); | |
foreach ( $tags as $tag ) { | |
$tagID[] = $tag->term_id; | |
} | |
$tax_query = array( | |
array( | |
'taxonomy' => 'post_format', | |
'field' => 'slug', | |
'terms' => array( | |
'post-format-link', | |
'post-format-status', | |
'post-format-aside', | |
'post-format-quote' | |
), | |
'operator' => 'NOT IN' | |
) | |
); | |
$args = array( | |
'tag__in' => $tagID, | |
'post__not_in' => $postIDs, | |
'showposts' => 5, | |
'ignore_sticky_posts' => 1, | |
'tax_query' => $tax_query, | |
); | |
$related = ''; | |
$tag_query = new WP_Query( $args ); | |
if ( $tag_query->have_posts() ) { | |
while ( $tag_query->have_posts() ) { | |
$tag_query->the_post(); | |
$do_not_duplicate[] = get_the_ID(); | |
$count++; | |
// $title = genesis_truncate_phrase( get_the_title(), 35 ); | |
$title = get_the_title(); | |
$related .= '<div class="related-post">'; | |
$related .= '<a class="related-post-title" href="' . get_permalink() . '" rel="bookmark" title="Permanent Link to ' . $title . '">' . $title . '</a>'; | |
$related .= '<a class="related-image" href="' . get_permalink() . '" rel="bookmark" title="Permanent Link to ' . $title . '">' . genesis_get_image( array( 'size' => 'related' ) ) . '</a>'; | |
$related .= '</div>'; | |
} | |
} | |
wp_reset_postdata(); | |
$output = array( | |
'related' => $related, | |
'count' => $count | |
); | |
return $output; | |
} | |
function sk_related_cat_query( $cats, $count ) { | |
global $do_not_duplicate; | |
if ( ! $cats ) { | |
return; | |
} | |
$postIDs = array_merge( array( get_the_ID() ), $do_not_duplicate ); | |
$catIDs = array(); | |
foreach ( $cats as $cat ) { | |
if ( 3 == $cat ) { | |
continue; | |
} | |
$catIDs[] = $cat; | |
} | |
$showposts = 5 - $count; | |
$tax_query = array( | |
array( | |
'taxonomy' => 'post_format', | |
'field' => 'slug', | |
'terms' => array( | |
'post-format-link', | |
'post-format-status', | |
'post-format-aside', | |
'post-format-quote' | |
), | |
'operator' => 'NOT IN' | |
) | |
); | |
$args = array( | |
'category__in' => $catIDs, | |
'post__not_in' => $postIDs, | |
'showposts' => $showposts, | |
'ignore_sticky_posts' => 1, | |
'orderby' => 'rand', | |
'tax_query' => $tax_query, | |
); | |
$related = ''; | |
$cat_query = new WP_Query( $args ); | |
if ( $cat_query->have_posts() ) { | |
while ( $cat_query->have_posts() ) { | |
$cat_query->the_post(); | |
$count++; | |
// $title = genesis_truncate_phrase( get_the_title(), 35 ); | |
$title = get_the_title(); | |
$related .= '<div class="related-post">'; | |
$related .= '<a class="related-post-title" href="' . get_permalink() . '" rel="bookmark" title="Permanent Link to ' . $title . '">' . $title . '</a>'; | |
$related .= '<a class="related-image" href="' . get_permalink() . '" rel="bookmark" title="Permanent Link to ' . $title . '">' . genesis_get_image( array( 'size' => 'related' ) ) . '</a>'; | |
$related .= '</div>'; | |
} | |
} | |
wp_reset_postdata(); | |
$output = array( | |
'related' => $related, | |
'count' => $count | |
); | |
return $output; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment