Ticket #3189: 3189.diff
File 3189.diff, 4.3 KB (added by , 19 years ago) |
---|
-
wp-includes/post.php
8 8 return get_post_meta($attachment_id, '_wp_attached_file', true); 9 9 } 10 10 11 function &get_children($ post = 0, $output = OBJECT) {11 function &get_children($args = '', $output = OBJECT) { 12 12 global $post_cache, $wpdb; 13 13 14 if ( empty($ post) ) {14 if ( empty($args) ) { 15 15 if ( isset($GLOBALS['post']) ) 16 $ post_parent = & $GLOBALS['post']->post_parent;16 $r = array('post_parent' => & $GLOBALS['post']->post_parent); 17 17 else 18 18 return false; 19 } elseif ( is_object($post) ) { 20 $post_parent = $post->post_parent; 21 } else { 22 $post_parent = $post; 23 } 19 } elseif ( is_object($args) ) 20 $r = array('post_parent' => $post->post_parent); 21 elseif ( is_numeric($args) ) 22 $r = array('post_parent' => $args); 23 elseif ( is_array($args) ) 24 $r = &$args; 25 else 26 parse_str($args, $r); 24 27 25 $post_parent = (int) $post_parent; 28 $defaults = array('post_parent' => 0); 29 $r = array_merge($defaults, $r); 26 30 27 $ query = "SELECT * FROM $wpdb->posts WHERE post_parent = $post_parent";31 $children = get_posts( $r ); 28 32 29 $children = $wpdb->get_results($query);30 31 33 if ( $children ) { 32 34 foreach ( $children as $key => $child ) { 33 35 $post_cache[$child->ID] =& $children[$key]; … … 158 160 else 159 161 parse_str($args, $r); 160 162 161 $defaults = array('numberposts' => 5, 'offset' => 0, 'category' => '', 162 'orderby' => 'post_date', 'order' => 'DESC', 'include' => '', 'exclude' => '', 'meta_key' => '', 'meta_value' =>''); 163 $defaults = array('numberposts' => 5, 'offset' => 0, 'category' => 0, 164 'orderby' => 'post_date', 'order' => 'DESC', 'include' => '', 'exclude' => '', 165 'meta_key' => '', 'meta_value' =>'', 166 'post_type' => 'post', 'post_status' => 'publish', 'post_parent' => 0); 163 167 $r = array_merge($defaults, $r); 164 168 extract($r); 169 $numberposts = (int) $numberposts; 170 $offset = (int) $offset; 171 $category = (int) $category; 172 $post_parent = (int) $post_parent; 165 173 166 174 $inclusions = ''; 167 175 if ( !empty($include) ) { 168 $offset = 0; //ignore offset, category, exclude, meta_key, and meta_value paramsif using include169 $category = '';176 $offset = 0; //ignore offset, category, exclude, meta_key, and meta_value, post_parent if using include 177 $category = 0; 170 178 $exclude = ''; 171 179 $meta_key = ''; 172 180 $meta_value = ''; 181 $post_parent = 0; 173 182 $incposts = preg_split('/[\s,]+/',$include); 174 183 $numberposts = count($incposts); // only the number of posts included 175 184 if ( count($incposts) ) { … … 199 208 if (!empty($exclusions)) 200 209 $exclusions .= ')'; 201 210 202 $query ="SELECT DISTINCT * FROM $wpdb->posts " ; 203 $query .= ( empty( $category ) ? "" : ", $wpdb->post2cat " ) ; 204 $query .= ( empty( $meta_key ) ? "" : ", $wpdb->postmeta " ) ; 205 $query .= " WHERE (post_type = 'post' AND post_status = 'publish') $exclusions $inclusions " ; 206 $query .= ( empty( $category ) ? "" : "AND ($wpdb->posts.ID = $wpdb->post2cat.post_id AND $wpdb->post2cat.category_id = " . $category. ") " ) ; 207 $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' )" ) ; 208 $query .= " GROUP BY $wpdb->posts.ID ORDER BY " . $orderby . " " . $order . " LIMIT " . $offset . ',' . $numberposts ; 211 $query = "SELECT DISTINCT * FROM $wpdb->posts " ; 212 $query .= empty( $category ) ? '' : ", $wpdb->post2cat "; 213 $query .= empty( $meta_key ) ? '' : ", $wpdb->postmeta "; 214 $query .= " WHERE 1=1 "; 215 $query .= empty( $post_type ) ? '' : "AND post_type = '$post_type' "; 216 $query .= empty( $post_status ) ? '' : "AND post_status = '$post_status' "; 217 $query .= "$exclusions $inclusions " ; 218 $query .= empty( $category ) ? '' : "AND ($wpdb->posts.ID = $wpdb->post2cat.post_id AND $wpdb->post2cat.category_id = " . $category. ") "; 219 $query .= empty( $post_parent ) ? '' : "AND $wpdb->posts.post_parent = '$post_parent' "; 220 $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' )"; 221 $query .= " GROUP BY $wpdb->posts.ID ORDER BY " . $orderby . ' ' . $order . " LIMIT " . $offset . ',' . $numberposts ; 209 222 210 223 $posts = $wpdb->get_results($query); 211 224