Make WordPress Core


Ignore:
Timestamp:
10/21/2015 04:53:51 PM (9 years ago)
Author:
boonebgorges
Message:

Prevent non-public taxonomies from registering aquery var.

[34247] made the 'public' paramater of register_taxonomy() work by blocking
requests for non-public taxonomy archives during parse_request(). Blocking
taxonomy archive requests this late means that it's impossible to register an
independent query var that matches the slug of a non-public taxonomy. By
moving the block to register_taxonomy() - not allowing these taxonomies to
register their query vars in the first place - we free up the slug for other
use. In addition, we free up a bit of processing (no need to look for the query
var in parse_request() and better parallel the way non-public post types
work. See register_post_type().

Non-public taxonomy archives that are requested using ?taxonomy=tax_name are
still blocked during parse_request. It's only custom query vars -
?tax_name=term - that are affected by this change.

Props mboynes.
Fixes #21949.

File:
1 edited

Legend:

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

    r35322 r35333  
    385385    }
    386386
    387     if ( false !== $args['query_var'] && ! empty( $wp ) ) {
     387    if ( false !== $args['query_var'] && false !== $args['public'] && ! empty( $wp ) ) {
    388388        if ( true === $args['query_var'] )
    389389            $args['query_var'] = $taxonomy;
Note: See TracChangeset for help on using the changeset viewer.