From 0bea7c7ad2ee8e82a86919b1cd2fea517cc67ec8 Mon Sep 17 00:00:00 2001 From: donncha Date: Mon, 15 Sep 2008 15:45:31 +0000 Subject: Merge with WP 2.6.2 git-svn-id: http://svn.automattic.com/wordpress-mu/branches/2.6@1471 7be80a69-a1ef-0310-a953-fb0f7c49ff36 --- wp-includes/query.php | 67 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 25 deletions(-) (limited to 'wp-includes/query.php') diff --git a/wp-includes/query.php b/wp-includes/query.php index 35e53f3..e318020 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -775,7 +775,7 @@ class WP_Query { if ( !empty($qv['post_status']) ) $qv['post_status'] = preg_replace('|[^a-z0-9_,-]|', '', $qv['post_status']); - if ( $this->is_posts_page && !$qv['withcomments'] ) + if ( $this->is_posts_page && ( ! isset($qv['withcomments']) || ! $qv['withcomments'] ) ) $this->is_comment_feed = false; $this->is_singular = $this->is_single || $this->is_page || $this->is_attachment; @@ -829,7 +829,12 @@ class WP_Query { $join = ''; $search = ''; $groupby = ''; + $fields = "$wpdb->posts.*"; $post_status_join = false; + $page = 1; + + if ( !isset($q['suppress_filters']) ) + $q['suppress_filters'] = false; if ( !isset($q['post_type']) ) { if ( $this->is_search ) @@ -1361,8 +1366,10 @@ class WP_Query { // Apply filters on where and join prior to paging so that any // manipulations to them are reflected in the paging by day queries. - $where = apply_filters('posts_where', $where); - $join = apply_filters('posts_join', $join); + if ( !$q['suppress_filters'] ) { + $where = apply_filters('posts_where', $where); + $join = apply_filters('posts_join', $join); + } // Paging if ( empty($q['nopaging']) && !$this->is_singular ) { @@ -1394,9 +1401,11 @@ class WP_Query { $cgroupby = ''; } - $cjoin = apply_filters('comment_feed_join', $cjoin); - $cwhere = apply_filters('comment_feed_where', $cwhere); - $cgroupby = apply_filters('comment_feed_groupby', $cgroupby); + if ( !$q['suppress_filters'] ) { + $cjoin = apply_filters('comment_feed_join', $cjoin); + $cwhere = apply_filters('comment_feed_where', $cwhere); + $cgroupby = apply_filters('comment_feed_groupby', $cgroupby); + } $this->comments = (array) $wpdb->get_results("SELECT $distinct $wpdb->comments.* FROM $wpdb->comments $cjoin $cwhere $cgroupby ORDER BY comment_date_gmt DESC LIMIT " . get_option('posts_per_rss')); $this->comment_count = count($this->comments); @@ -1414,28 +1423,33 @@ class WP_Query { $where = "AND 0"; } + $orderby = $q['orderby']; + // Apply post-paging filters on where and join. Only plugins that // manipulate paging queries should use these hooks. - - $where = apply_filters('posts_where_paged', $where); - $groupby = apply_filters('posts_groupby', $groupby); - $join = apply_filters('posts_join_paged', $join); - $orderby = apply_filters('posts_orderby', $q['orderby']); - $distinct = apply_filters('posts_distinct', $distinct); - $fields = apply_filters('posts_fields', "$wpdb->posts.*"); - $limits = apply_filters( 'post_limits', $limits ); + if ( !$q['suppress_filters'] ) { + $where = apply_filters('posts_where_paged', $where); + $groupby = apply_filters('posts_groupby', $groupby); + $join = apply_filters('posts_join_paged', $join); + $orderby = apply_filters('posts_orderby', $orderby); + $distinct = apply_filters('posts_distinct', $distinct); + $fields = apply_filters('posts_fields', $fields); + $limits = apply_filters( 'post_limits', $limits ); + } // Announce current selection parameters. For use by caching plugins. do_action( 'posts_selection', $where . $groupby . $orderby . $limits . $join ); // Filter again for the benefit of caching plugins. Regular plugins should use the hooks above. - $where = apply_filters('posts_where_request', $where); - $groupby = apply_filters('posts_groupby_request', $groupby); - $join = apply_filters('posts_join_request', $join); - $orderby = apply_filters('posts_orderby_request', $orderby); - $distinct = apply_filters('posts_distinct_request', $distinct); - $fields = apply_filters('posts_fields_request', $fields); - $limits = apply_filters( 'post_limits_request', $limits ); + if ( !$q['suppress_filters'] ) { + $where = apply_filters('posts_where_request', $where); + $groupby = apply_filters('posts_groupby_request', $groupby); + $join = apply_filters('posts_join_request', $join); + $orderby = apply_filters('posts_orderby_request', $orderby); + $distinct = apply_filters('posts_distinct_request', $distinct); + $fields = apply_filters('posts_fields_request', $fields); + $limits = apply_filters( 'post_limits_request', $limits ); + } if ( ! empty($groupby) ) $groupby = 'GROUP BY ' . $groupby; @@ -1445,12 +1459,14 @@ class WP_Query { if ( !empty($limits) ) $found_rows = 'SQL_CALC_FOUND_ROWS'; - $request = " SELECT $found_rows $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits"; - $this->request = apply_filters('posts_request', $request); + $this->request = " SELECT $found_rows $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits"; + if ( !$q['suppress_filters'] ) + $this->request = apply_filters('posts_request', $this->request); $this->posts = $wpdb->get_results($this->request); // Raw results filter. Prior to status checks. - $this->posts = apply_filters('posts_results', $this->posts); + if ( !$q['suppress_filters'] ) + $this->posts = apply_filters('posts_results', $this->posts); if ( !empty($this->posts) && $this->is_comment_feed && $this->is_singular ) { $cjoin = apply_filters('comment_feed_join', ''); @@ -1497,7 +1513,8 @@ class WP_Query { } } - $this->posts = apply_filters('the_posts', $this->posts); + if ( !$q['suppress_filters'] ) + $this->posts = apply_filters('the_posts', $this->posts); update_post_caches($this->posts); -- cgit