Skip to content

Instantly share code, notes, and snippets.

@jongacnik
Last active August 29, 2015 14:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jongacnik/777ad3909682c52ac486 to your computer and use it in GitHub Desktop.
Save jongacnik/777ad3909682c52ac486 to your computer and use it in GitHub Desktop.
Custom Wordpress adjacent post query
<?php
function get_adjacent_posts_clean($prev = true, $limit = 1, $exclude = '', $date = '') {
global $wpdb, $post;
if( empty( $date ) )
$date = $post->post_date;
$limit = absint( $limit );
if( !$limit )
return;
$prev_and_next = $prev ? '<' : '>';
$exclude_string = (!empty($exclude)) ? 'AND tt1.term_id NOT IN(' . $exclude . ')' : ''; // put fallback in for array
$p = $wpdb->get_results( "
(
SELECT p.post_date, p.post_title
FROM $wpdb->posts AS p
INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id
INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE
p.post_date " . $prev_and_next . " '$date'
AND p.post_type = 'post'
AND p.post_status = 'publish'
AND tt.taxonomy = 'category'
" . $exclude_string . "
ORDER by
p.post_date DESC
LIMIT
$limit
)
ORDER by post_date ASC ");
return $p;
}
?>
@jongacnik
Copy link
Author

This isn't really meant to be used as is, there's some spots where this query would break. Just a good starting point if wanting to write a more custom adjacent post query than what is provided by WP core.

Original query modified from here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment