I’m running a query to dig up related posts based on tags. If CURRENT POST has tags A, B and C, show 3 more posts that have either A, B or C tags. I also only show posts that are 365 days old or newer.
$date_to_compare = date('F jS, Y', strtotime('-365 days'));
$new_category = get_the_category();
$the_tags = get_the_tags();
$first_tag = $the_tags[0]->term_id;
$second_tag = $the_tags[1]->term_id;
$this_post2 = get_the_ID();
$args2 = array(
'posts_per_page' => 3,
'post_type' => 'post',
'ignore_sticky_posts' => 1,
'orderby' => 'rand',
'tag__in' => array( $first_tag, $second_tag ),
'exclude' => $this_post2,
'date_query' => array(
array(
'after' => $date_to_compare,
'inclusive' => true,
),
),
);
$the_query_2 = new WP_Query( $args2 );
if ($the_query_2->have_posts()) :
while ( $the_query_2->have_posts() ) : $related_post_count++;
$the_query_2->the_post(); ?>
// show the post content
endwhile; endif;
This usually works really well, but there’s one case where CURRENT POST is one of only 3 posts that would match this. In that event, CURRENT POST is included in the three related posts, despite $this_post2 = get_the_ID();
and 'exclude' => $this_post2,
Thus, my conundrum.