Make WordPress Core

Changeset 2354


Ignore:
Timestamp:
02/16/2005 03:12:04 PM (22 years ago)
Author:
michelvaldrighi
Message:

added cache_pages to avoid making 1+X queries everytime wp_list_pages is called, where X is the number of pages

Location:
trunk/wp-includes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/functions.php

    r2353 r2354  
    942942}
    943943
    944 function get_page_uri($page) {
    945         global $wpdb;
    946         $page = $wpdb->get_row("SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE ID = '$page'");
    947 
     944function get_page_uri($page_id) {
     945        global $wpdb, $cache_pages;
     946
     947        if (!isset($cache_pages[$page_id])) {
     948                $cache_pages[$page_id] = $wpdb->get_row("SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE ID = '$page_id'");
     949        }
     950
     951        $page = $cache_pages[$page_id];
    948952        $uri = urldecode($page->post_name);
    949953
  • trunk/wp-includes/template-functions-post.php

    r2341 r2354  
    261261
    262262function get_pages($args = '') {
    263         global $wpdb;
    264 
    265         parse_str($args, $r);
    266 
    267         if (!isset($r['child_of'])) $r['child_of'] = 0;
    268         if (!isset($r['sort_column'])) $r['sort_column'] = 'post_title';
    269         if (!isset($r['sort_order'])) $r['sort_order'] = 'ASC';
    270 
    271         $exclusions = '';
    272         if (!empty($r['exclude'])) {
    273                 $expages = preg_split('/[\s,]+/',$r['exclude']);
    274                 if (count($expages)) {
    275                         foreach ($expages as $expage) {
    276                                 $exclusions .= ' AND ID <> ' . intval($expage) . ' ';
     263        global $wpdb, $cache_pages;
     264
     265        if (!isset($cache_pages) || empty($cache_pages)) {
     266
     267                parse_str($args, $r);
     268
     269                if (!isset($r['child_of'])) $r['child_of'] = 0;
     270                if (!isset($r['sort_column'])) $r['sort_column'] = 'post_title';
     271                if (!isset($r['sort_order'])) $r['sort_order'] = 'ASC';
     272
     273                $exclusions = '';
     274                if (!empty($r['exclude'])) {
     275                        $expages = preg_split('/[\s,]+/',$r['exclude']);
     276                        if (count($expages)) {
     277                                foreach ($expages as $expage) {
     278                                        $exclusions .= ' AND ID <> ' . intval($expage) . ' ';
     279                                }
    277280                        }
    278281                }
    279         }
    280 
    281         $dates = ",UNIX_TIMESTAMP(post_modified) AS time_modified";
    282         $dates .= ",UNIX_TIMESTAMP(post_date) AS time_created";
    283 
    284         $post_parent = '';
    285         if ($r['child_of']) {
    286                 $post_parent = ' AND post_parent=' . $r['child_of'] . ' ';
    287         }
    288 
    289         $pages = $wpdb->get_results("SELECT " .
    290                                                                                                                         "ID, post_title,post_parent " .
    291                                                                                                                         "$dates " .
    292                                                                                                                         "FROM $wpdb->posts " .
    293                                                                                                                         "WHERE post_status = 'static' " .
    294                                                                                                                         "$post_parent" .
    295                                                                                                                         "$exclusions " .
    296                                                                                                                         "ORDER BY " . $r['sort_column'] . " " . $r['sort_order']);
    297 
    298         return $pages;
     282
     283                $dates = ",UNIX_TIMESTAMP(post_modified) AS time_modified";
     284                $dates .= ",UNIX_TIMESTAMP(post_date) AS time_created";
     285       
     286                $post_parent = '';
     287                if ($r['child_of']) {
     288                        $post_parent = ' AND post_parent=' . $r['child_of'] . ' ';
     289                }
     290       
     291                $pages = $wpdb->get_results("SELECT " .
     292                  "ID, post_title, post_name, post_parent " .
     293                  "$dates " .
     294                  "FROM $wpdb->posts " .
     295                  "WHERE post_status = 'static' " .
     296                  "$post_parent" .
     297                  "$exclusions " .
     298                  "ORDER BY " . $r['sort_column'] . " " . $r['sort_order']);
     299
     300                foreach($pages as $page) {
     301                        $cache_pages[$page->ID] = $page;
     302                }
     303
     304        }
     305
     306        return $cache_pages;
    299307}
    300308
     
    318326                // set the title for the current page
    319327                $page_tree[$page->ID]['title'] = $page->post_title;
     328                $page_tree[$page->ID]['name'] = $page->post_name;
    320329
    321330                // set the selected date for the current page
     
    336345                // We can now start looping over the $page_tree array
    337346                // with any ID which will output the page links from that ID downwards.
    338                 $page_tree[$page->post_parent]['children'][] = $page->ID;       
     347                $page_tree[$page->post_parent]['children'][] = $page->ID;
    339348        }
    340349        // Output of the pages starting with child_of as the root ID.
Note: See TracChangeset for help on using the changeset viewer.