mirror of
https://github.com/WordPress/WordPress.git
synced 2025-01-03 15:08:10 +01:00
Split post and page caches.
git-svn-id: http://svn.automattic.com/wordpress/trunk@2479 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
8f9c24ef7a
commit
7a8be58c67
@ -575,6 +575,43 @@ function &get_post(&$post, $output = OBJECT) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Retrieves page data given a page ID or page object.
|
||||||
|
// Handles page caching.
|
||||||
|
function &get_page(&$page, $output = OBJECT) {
|
||||||
|
global $page_cache, $wpdb;
|
||||||
|
|
||||||
|
if ( empty($page) ) {
|
||||||
|
if ( isset($GLOBALS['page']) )
|
||||||
|
$page = & $GLOBALS['page'];
|
||||||
|
else
|
||||||
|
$page = null;
|
||||||
|
} elseif (is_object($page) ) {
|
||||||
|
if (! isset($page_cache[$page->ID]))
|
||||||
|
$page_cache[$page->ID] = &$page;
|
||||||
|
$page = & $page_cache[$page->ID];
|
||||||
|
} else {
|
||||||
|
if ( isset($GLOBALS['page']) && ($page == $GLOBALS['page']->ID) )
|
||||||
|
$page = & $GLOBALS['page'];
|
||||||
|
elseif (isset($page_cache[$page]))
|
||||||
|
$page = & $page_cache[$page];
|
||||||
|
else {
|
||||||
|
$query = "SELECT * FROM $wpdb->posts WHERE ID=$page";
|
||||||
|
$page_cache[$page] = & $wpdb->get_row($query);
|
||||||
|
$page = & $page_cache[$page];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $output == OBJECT ) {
|
||||||
|
return $page;
|
||||||
|
} elseif ( $output == ARRAY_A ) {
|
||||||
|
return get_object_vars($page);
|
||||||
|
} elseif ( $output == ARRAY_N ) {
|
||||||
|
return array_values(get_object_vars($page));
|
||||||
|
} else {
|
||||||
|
return $page;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Retrieves category data given a category ID or category object.
|
// Retrieves category data given a category ID or category object.
|
||||||
// The category cache is fully populated by the blog header, so we don't
|
// The category cache is fully populated by the blog header, so we don't
|
||||||
// have to worry with managing it here.
|
// have to worry with managing it here.
|
||||||
@ -1046,7 +1083,7 @@ function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args
|
|||||||
}
|
}
|
||||||
|
|
||||||
function get_page_uri($page_id) {
|
function get_page_uri($page_id) {
|
||||||
$page = get_post($page_id);
|
$page = get_page($page_id);
|
||||||
$uri = urldecode($page->post_name);
|
$uri = urldecode($page->post_name);
|
||||||
|
|
||||||
// A page cannot be it's own parent.
|
// A page cannot be it's own parent.
|
||||||
@ -1055,7 +1092,7 @@ function get_page_uri($page_id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
while ($page->post_parent != 0) {
|
while ($page->post_parent != 0) {
|
||||||
$page = get_post($page->post_parent);
|
$page = get_page($page->post_parent);
|
||||||
$uri = urldecode($page->post_name) . "/" . $uri;
|
$uri = urldecode($page->post_name) . "/" . $uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1102,6 +1139,17 @@ function update_post_cache(&$posts) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_page_cache(&$pages) {
|
||||||
|
global $page_cache;
|
||||||
|
|
||||||
|
if ( !$pages )
|
||||||
|
return;
|
||||||
|
|
||||||
|
for ($i = 0; $i < count($pages); $i++) {
|
||||||
|
$page_cache[$pages[$i]->ID] = &$pages[$i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function update_post_category_cache($post_ids) {
|
function update_post_category_cache($post_ids) {
|
||||||
global $wpdb, $category_cache, $cache_categories;
|
global $wpdb, $category_cache, $cache_categories;
|
||||||
|
|
||||||
|
@ -251,7 +251,7 @@ function the_meta() {
|
|||||||
//
|
//
|
||||||
|
|
||||||
function &get_pages($args = '') {
|
function &get_pages($args = '') {
|
||||||
global $wpdb, $cache_pages;
|
global $wpdb, $page_cache;
|
||||||
|
|
||||||
parse_str($args, $r);
|
parse_str($args, $r);
|
||||||
|
|
||||||
@ -281,11 +281,11 @@ function &get_pages($args = '') {
|
|||||||
"$exclusions " .
|
"$exclusions " .
|
||||||
"ORDER BY " . $r['sort_column'] . " " . $r['sort_order']);
|
"ORDER BY " . $r['sort_column'] . " " . $r['sort_order']);
|
||||||
|
|
||||||
// Update cache.
|
|
||||||
update_post_cache($pages);
|
|
||||||
|
|
||||||
if ( empty($pages) )
|
if ( empty($pages) )
|
||||||
$pages = array();
|
return array();
|
||||||
|
|
||||||
|
// Update cache.
|
||||||
|
update_page_cache($pages);
|
||||||
|
|
||||||
return $pages;
|
return $pages;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user