Opened 11 years ago
Closed 11 years ago
#30117 closed defect (bug) (fixed)
Possible regression in taxonomy.php sanitize_query
| Reported by: |
|
Owned by: |
|
|---|---|---|---|
| Milestone: | 4.1 | Priority: | normal |
| Severity: | normal | Version: | 4.1 |
| Component: | Taxonomy | Keywords: | |
| Focuses: | Cc: |
Description
I work in the VIP QuickStart environment, and on updating to the 4.1 alpha, I believe I may have experienced a regression.
The following works as expected to modify the query and return posts with the extra argument in 4.0
function rt_favorite_exclude_free_listings( $query ) {
if( $query->is_main_query() && is_tax( 'favorite-category' ) && !$query->get('listings') ) {
$tax_query = (array) $query->get( 'tax_query' );
$tax_query[] = array(
'taxonomy' => 'favorite-type',
'field' => 'slug',
'terms' => 'premium',
);
$query->set( 'tax_query', $tax_query );
}
}
add_action( 'pre_get_posts', 'rt_favorite_exclude_free_listings' );
In 4.1, the following errors are thrown:
( ! ) Warning: array_merge(): Argument #2 is not an array in /srv/www/wp/wp-includes/taxonomy.php on line 757
Call Stack
# Time Memory Function Location
1 0.0062 143404 {main}( ) ../index.php:0
2 0.0116 145252 require( '/srv/www/wp/wp-blog-header.php' ) ../index.php:4
3 5.1287 27041896 wp( ) ../wp-blog-header.php:14
4 5.1287 27041968 WP->main( ) ../functions.php:873
5 5.1409 27262256 WP->query_posts( ) ../class-wp.php:612
6 5.1409 27262536 WP_Query->query( ) ../class-wp.php:541
7 5.1409 27264220 WP_Query->get_posts( ) ../query.php:3843
8 5.1444 27311944 WP_Query->parse_tax_query( ) ../query.php:2683
9 5.1446 27313696 WP_Tax_Query->__construct( ) ../query.php:2026
10 5.1446 27313724 WP_Tax_Query->sanitize_query( ) ../taxonomy.php:724
11 5.1446 27314672 array_merge ( ) ../taxonomy.php:757
( ! ) Notice: Undefined index: field in /srv/www/wp/wp-includes/taxonomy.php on line 1152
Call Stack
# Time Memory Function Location
1 0.0062 143404 {main}( ) ../index.php:0
2 0.0116 145252 require( '/srv/www/wp/wp-blog-header.php' ) ../index.php:4
3 5.1287 27041896 wp( ) ../wp-blog-header.php:14
4 5.1287 27041968 WP->main( ) ../functions.php:873
5 5.1409 27262256 WP->query_posts( ) ../class-wp.php:612
6 5.1409 27262536 WP_Query->query( ) ../class-wp.php:541
7 5.1409 27264220 WP_Query->get_posts( ) ../query.php:3843
8 5.1518 27313192 WP_Tax_Query->get_sql( ) ../query.php:2685
9 5.1518 27313576 WP_Tax_Query->get_sql_clauses( ) ../taxonomy.php:857
10 5.1518 27313892 WP_Tax_Query->get_sql_for_query( ) ../taxonomy.php:882
11 5.1518 27315140 WP_Tax_Query->get_sql_for_clause( ) ../taxonomy.php:933
12 5.1518 27315760 WP_Tax_Query->clean_query( ) ../taxonomy.php:1001
Change History (2)
Note: See
TracTickets for help on using
tickets.
tmtrademark and I have worked through this at WCSF contributor day. Turns out there is a regression where
WP_Tax_Query::sanitize_queries()returns a bum result if one of the items passed in the$tax_queryarray is an empty string - it was passing theis_first_order_clause()check, becauseempty( $clause )was returning true.