Ticket #4094: get_pages-hooks.diff
File get_pages-hooks.diff, 2.4 KB (added by , 17 years ago) |
---|
-
post.php
1151 1151 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'meta_key' => '', 'meta_value' => '', 'authors' => ''); 1152 1152 $r = array_merge($defaults, $r); 1153 1153 extract($r); 1154 1154 1155 1155 $key = md5( serialize( $r ) ); 1156 if ( $cache = wp_cache_get( 'get_pages', 'page' ) ) 1156 $wpcache_id = apply_filters('get_pages_cache_id', 'get_pages', $key); 1157 $wpcache_group = apply_filters('get_pages_cache_group', 'page'); 1158 if ( $cache = wp_cache_get( $wpcache_id, $wpcache_group ) ) 1157 1159 if ( isset( $cache[ $key ] ) ) 1158 1160 return apply_filters('get_pages', $cache[ $key ], $r ); 1159 1161 … … 1217 1219 } 1218 1220 } 1219 1221 1220 $query = "SELECT * FROM $wpdb->posts " ; 1221 $query .= ( empty( $meta_key ) ? "" : ", $wpdb->postmeta " ) ; 1222 $query .= " WHERE (post_type = 'page' AND post_status = 'publish') $exclusions $inclusions " ; 1223 $query .= ( empty( $meta_key ) | empty($meta_value) ? "" : " AND ($wpdb->posts.ID = $wpdb->postmeta.post_id AND $wpdb->postmeta.meta_key = '$meta_key' AND $wpdb->postmeta.meta_value = '$meta_value' )" ) ; 1224 $query .= $author_query; 1225 $query .= " ORDER BY " . $sort_column . " " . $sort_order ; 1222 $join = ( empty( $meta_key ) ? "" : " INNER JOIN $wpdb->postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id" ) ; 1223 $join = apply_filters('pages_join', $join); 1224 1225 $where = " AND (post_type = 'page' AND post_status = 'publish') $exclusions $inclusions "; 1226 $where .= ( empty( $meta_key ) | empty($meta_value) ? "" : " AND ($wpdb->postmeta.meta_key = '$meta_key' AND $wpdb->postmeta.meta_value = '$meta_value')" ) ; 1227 $where .= $author_query; 1228 $where = apply_filters('pages_where', $where); 1229 1230 $query = "SELECT * FROM $wpdb->posts $join WHERE 1=1 $where ORDER BY $sort_column $sort_order" ; 1231 $query = apply_filters('pages_request', $query); 1226 1232 1227 1233 $pages = $wpdb->get_results($query); 1228 $pages = apply_filters('get_pages', $pages, $r);1229 1234 1230 1235 if ( empty($pages) ) 1231 1236 return array(); 1232 1237 1233 // Update cache.1234 update_page_cache($pages);1235 1236 1238 if ( $child_of || $hierarchical ) 1237 1239 $pages = & get_page_children($child_of, $pages); 1238 1240 1241 // Update cache. 1242 update_page_cache($pages); 1243 1239 1244 $cache[ $key ] = $pages; 1240 wp_cache_set( 'get_pages', $cache, 'page');1245 wp_cache_set( $wpcache_id, $cache, $wpcache_group ); 1241 1246 1242 return $pages;1247 return apply_filters('get_pages', $pages, $r);; 1243 1248 } 1244 1249 1245 1250 function generate_page_uri_index() {