Changeset 8795

Show
Ignore:
Timestamp:
09/01/08 17:01:47 (3 months ago)
Author:
ryan
Message:

Suppress query filters when called from get_posts(). fixes #7326 #7457 for 2.6

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/2.6/wp-includes/post.php

    r8676 r8795  
    466466        'exclude' => '', 'meta_key' => '', 
    467467        'meta_value' =>'', 'post_type' => 'post', 
    468         'post_parent' => 0 
     468        'post_parent' => 0, 'suppress_filters' => true 
    469469    ); 
    470470 
  • branches/2.6/wp-includes/query.php

    r8559 r8795  
    776776            $qv['post_status'] = preg_replace('|[^a-z0-9_,-]|', '', $qv['post_status']); 
    777777 
    778         if ( $this->is_posts_page && !$qv['withcomments']
     778        if ( $this->is_posts_page && ( ! isset($qv['withcomments']) || ! $qv['withcomments'] )
    779779            $this->is_comment_feed = false; 
    780780 
     
    830830        $search = ''; 
    831831        $groupby = ''; 
     832        $fields = "$wpdb->posts.*"; 
    832833        $post_status_join = false; 
     834        $page = 1; 
     835 
     836        if ( !isset($q['suppress_filters']) ) 
     837            $q['suppress_filters'] = false; 
    833838 
    834839        if ( !isset($q['post_type']) ) { 
     
    13621367        // Apply filters on where and join prior to paging so that any 
    13631368        // manipulations to them are reflected in the paging by day queries. 
    1364         $where = apply_filters('posts_where', $where); 
    1365         $join = apply_filters('posts_join', $join); 
     1369        if ( !$q['suppress_filters'] ) { 
     1370            $where = apply_filters('posts_where', $where); 
     1371            $join = apply_filters('posts_join', $join); 
     1372        } 
    13661373 
    13671374        // Paging 
     
    13951402            } 
    13961403 
    1397             $cjoin = apply_filters('comment_feed_join', $cjoin); 
    1398             $cwhere = apply_filters('comment_feed_where', $cwhere); 
    1399             $cgroupby = apply_filters('comment_feed_groupby', $cgroupby); 
     1404            if ( !$q['suppress_filters'] ) { 
     1405                $cjoin = apply_filters('comment_feed_join', $cjoin); 
     1406                $cwhere = apply_filters('comment_feed_where', $cwhere); 
     1407                $cgroupby = apply_filters('comment_feed_groupby', $cgroupby); 
     1408            } 
    14001409 
    14011410            $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')); 
     
    14151424        } 
    14161425 
     1426        $orderby = $q['orderby']; 
     1427 
    14171428        // Apply post-paging filters on where and join.  Only plugins that 
    14181429        // manipulate paging queries should use these hooks. 
    1419  
    1420         $where = apply_filters('posts_where_paged', $where); 
    1421         $groupby = apply_filters('posts_groupby', $groupby); 
    1422         $join = apply_filters('posts_join_paged', $join); 
    1423         $orderby = apply_filters('posts_orderby', $q['orderby']); 
    1424         $distinct = apply_filters('posts_distinct', $distinct); 
    1425         $fields = apply_filters('posts_fields', "$wpdb->posts.*"); 
    1426         $limits = apply_filters( 'post_limits', $limits ); 
     1430        if ( !$q['suppress_filters'] ) { 
     1431            $where = apply_filters('posts_where_paged', $where); 
     1432            $groupby = apply_filters('posts_groupby', $groupby); 
     1433            $join = apply_filters('posts_join_paged', $join); 
     1434            $orderby = apply_filters('posts_orderby', $orderby); 
     1435            $distinct = apply_filters('posts_distinct', $distinct); 
     1436            $fields = apply_filters('posts_fields', $fields); 
     1437            $limits = apply_filters( 'post_limits', $limits ); 
     1438        } 
    14271439 
    14281440        // Announce current selection parameters.  For use by caching plugins. 
     
    14301442 
    14311443        // Filter again for the benefit of caching plugins.  Regular plugins should use the hooks above. 
    1432         $where = apply_filters('posts_where_request', $where); 
    1433         $groupby = apply_filters('posts_groupby_request', $groupby); 
    1434         $join = apply_filters('posts_join_request', $join); 
    1435         $orderby = apply_filters('posts_orderby_request', $orderby); 
    1436         $distinct = apply_filters('posts_distinct_request', $distinct); 
    1437         $fields = apply_filters('posts_fields_request', $fields); 
    1438         $limits = apply_filters( 'post_limits_request', $limits ); 
     1444        if ( !$q['suppress_filters'] ) { 
     1445            $where = apply_filters('posts_where_request', $where); 
     1446            $groupby = apply_filters('posts_groupby_request', $groupby); 
     1447            $join = apply_filters('posts_join_request', $join); 
     1448            $orderby = apply_filters('posts_orderby_request', $orderby); 
     1449            $distinct = apply_filters('posts_distinct_request', $distinct); 
     1450            $fields = apply_filters('posts_fields_request', $fields); 
     1451            $limits = apply_filters( 'post_limits_request', $limits ); 
     1452        } 
    14391453 
    14401454        if ( ! empty($groupby) ) 
     
    14461460            $found_rows = 'SQL_CALC_FOUND_ROWS'; 
    14471461 
    1448         $request = " SELECT $found_rows $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits"; 
    1449         $this->request = apply_filters('posts_request', $request); 
     1462        $this->request = " SELECT $found_rows $distinct $fields FROM $wpdb->posts $join WHERE 1=1 $where $groupby $orderby $limits"; 
     1463        if ( !$q['suppress_filters'] ) 
     1464            $this->request = apply_filters('posts_request', $this->request); 
    14501465 
    14511466        $this->posts = $wpdb->get_results($this->request); 
    14521467        // Raw results filter.  Prior to status checks. 
    1453         $this->posts = apply_filters('posts_results', $this->posts); 
     1468        if ( !$q['suppress_filters'] ) 
     1469            $this->posts = apply_filters('posts_results', $this->posts); 
    14541470 
    14551471        if ( !empty($this->posts) && $this->is_comment_feed && $this->is_singular ) { 
     
    14981514        } 
    14991515 
    1500         $this->posts = apply_filters('the_posts', $this->posts); 
     1516        if ( !$q['suppress_filters'] ) 
     1517            $this->posts = apply_filters('the_posts', $this->posts); 
    15011518 
    15021519        update_post_caches($this->posts);