Introduce wp_query_clauses filter. Fixes #14997

git-svn-id: https://develop.svn.wordpress.org/trunk@15775 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
scribu 2010-10-11 15:04:44 +00:00
parent b3bcb5f77e
commit 53d8aaf3fc
1 changed files with 22 additions and 10 deletions

View File

@ -2186,13 +2186,25 @@ class WP_Query extends WP_Object_Query {
// Apply post-paging filters on where and join. Only plugins that
// manipulate paging queries should use these hooks.
if ( !$q['suppress_filters'] ) {
$where = apply_filters_ref_array( 'posts_where_paged', array( $where, &$this ) );
$groupby = apply_filters_ref_array( 'posts_groupby', array( $groupby, &$this ) );
$join = apply_filters_ref_array( 'posts_join_paged', array( $join, &$this ) );
$orderby = apply_filters_ref_array( 'posts_orderby', array( $orderby, &$this ) );
$distinct = apply_filters_ref_array( 'posts_distinct', array( $distinct, &$this ) );
$limits = apply_filters_ref_array( 'post_limits', array( $limits, &$this ) );
$fields = apply_filters_ref_array( 'posts_fields', array( $fields, &$this ) );
$where = apply_filters_ref_array( 'posts_where_paged', array( $where, &$this ) );
$join = apply_filters_ref_array( 'posts_join_paged', array( $join, &$this ) );
$groupby = apply_filters_ref_array( 'posts_groupby', array( $groupby, &$this ) );
$orderby = apply_filters_ref_array( 'posts_orderby', array( $orderby, &$this ) );
$limits = apply_filters_ref_array( 'post_limits', array( $limits, &$this ) );
// Also apply a filter on all clauses at once, for convenience
$clauses = array();
foreach ( array('distinct', 'fields', 'where', 'join', 'groupby', 'orderby', 'limits') as $var ) {
$clauses[ $var ] = $$var;
unset( $$var ); // so we can use EXTR_SKIP below
}
$clauses = apply_filters_ref_array( 'wp_query_clauses', array( $clauses, &$this ) );
extract( $clauses, EXTR_SKIP );
unset( $clauses );
}
// Announce current selection parameters. For use by caching plugins.
@ -2200,13 +2212,13 @@ class WP_Query extends WP_Object_Query {
// Filter again for the benefit of caching plugins. Regular plugins should use the hooks above.
if ( !$q['suppress_filters'] ) {
$distinct = apply_filters_ref_array( 'posts_distinct_request',array( $distinct, &$this ) );
$fields = apply_filters_ref_array( 'posts_fields_request', array( $fields, &$this ) );
$where = apply_filters_ref_array( 'posts_where_request', array( $where, &$this ) );
$groupby = apply_filters_ref_array( 'posts_groupby_request', array( $groupby, &$this ) );
$join = apply_filters_ref_array( 'posts_join_request', array( $join, &$this ) );
$orderby = apply_filters_ref_array( 'posts_orderby_request', array( $orderby, &$this ) );
$distinct = apply_filters_ref_array( 'posts_distinct_request', array( $distinct, &$this ) );
$fields = apply_filters_ref_array( 'posts_fields_request', array( $fields, &$this ) );
$limits = apply_filters_ref_array( 'post_limits_request', array( $limits, &$this ) );
$groupby = apply_filters_ref_array( 'posts_groupby_request', array( $groupby, &$this ) );
$orderby = apply_filters_ref_array( 'posts_orderby_request', array( $orderby, &$this ) );
$limits = apply_filters_ref_array( 'post_limits_request', array( $limits, &$this ) );
}
if ( ! empty($groupby) )