Cache get_adjacent_post() queries for the duration of the page load to avoid running queries multiple times

git-svn-id: http://svn.automattic.com/wordpress/trunk@11241 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2009-05-08 18:04:13 +00:00
parent 66fa9d7da3
commit 2644391146
1 changed files with 10 additions and 2 deletions

View File

@ -868,7 +868,7 @@ function get_next_post($in_same_cat = false, $excluded_categories = '') {
function get_adjacent_post($in_same_cat = false, $excluded_categories = '', $previous = true) {
global $post, $wpdb;
if( empty($post) || !is_single() || is_attachment() )
if ( empty($post) || !is_single() || is_attachment() )
return null;
$current_post_date = $post->post_date;
@ -905,7 +905,15 @@ function get_adjacent_post($in_same_cat = false, $excluded_categories = '', $pre
$where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type = 'post' AND p.post_status = 'publish' $posts_in_ex_cats_sql", $current_post_date), $in_same_cat, $excluded_categories );
$sort = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );
return $wpdb->get_row("SELECT p.* FROM $wpdb->posts AS p $join $where $sort");
$query = "SELECT p.* FROM $wpdb->posts AS p $join $where $sort";
$query_key = 'adjacent_post_' . md5($query);
$result = wp_cache_get($query_key, 'counts');
if ( false !== $result )
return $result;
$result = $wpdb->get_row("SELECT p.* FROM $wpdb->posts AS p $join $where $sort");
wp_cache_set($query_key, $result, 'counts');
return $result;
}
/**