Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- 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,
- 'date_query' => array(
- array(
- 'after' => '2 year ago'
- )
- )
- );
- $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,
- 'date_query' => array(
- array(
- 'after' => '2 year ago'
- )
- )
- );
- $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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement