Make WordPress Core


Ignore:
Timestamp:
12/27/2015 04:40:13 PM (9 years ago)
Author:
boonebgorges
Message:

Force non-public taxonomies to have a query_var of false.

[35333] implemented public=false for taxonomies. The implementation prevented
non-public taxonomies from having their archives accessed via query_var during
a normal request. But it didn't prevent non-public taxonomies from registering
their query vars in the $wp_taxonomies global. The latter implementation
details causes problems specifically when a taxonomy is registered with
query_var=true; for public taxonomies, register_taxonomy() translates this
into a query_var equivalent to the taxonomy name, but in the case of non-public
taxonomies, the query_var was set to the boolean itself. The boolean then
causes problems when using non-strict comparison to filter taxonomy objects by
query_var, as when using get_taxonomies().

This changeset addresses the issue by forcing the query_var property of
non-public taxonomies to false.

Fixes #35089.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/taxonomy.php

    r36080 r36108  
    391391            $args['query_var'] = sanitize_title_with_dashes( $args['query_var'] );
    392392        $wp->add_query_var( $args['query_var'] );
     393    } else {
     394        // Force query_var to false for non-public taxonomies.
     395        $args['query_var'] = false;
    393396    }
    394397
Note: See TracChangeset for help on using the changeset viewer.