Allow taxonomies to be non-public.

[13216] introduced the 'public' argument for `register_taxonomy()`. This param
was used to set defaults for 'show_ui' and a number of other params, but it
never did anything itself.

With this changeset, taxonomies registered with `public=false` will no longer
be queryable on the front end, ie via taxonomy archive queries.

Props wpsmith, ocean90, nacin, ericlewis, boonebgorges.
Fixes #21949.
Built from https://develop.svn.wordpress.org/trunk@34247


git-svn-id: http://core.svn.wordpress.org/trunk@34211 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Boone Gorges 2015-09-16 19:05:23 +00:00
parent 6153a72796
commit 471fc6d9a5
3 changed files with 17 additions and 2 deletions

View File

@ -300,6 +300,21 @@ class WP {
if ( $t->query_var && isset( $this->query_vars[$t->query_var] ) )
$this->query_vars[$t->query_var] = str_replace( ' ', '+', $this->query_vars[$t->query_var] );
// Don't allow non-public taxonomies to be queried from the front-end.
if ( ! is_admin() ) {
foreach ( get_taxonomies( array( 'public' => false ), 'objects' ) as $taxonomy => $t ) {
// Check first for taxonomy-specific query_var.
if ( $t->query_var && isset( $this->query_vars[ $t->query_var ] ) ) {
unset( $this->query_vars[ $t->query_var ] );
}
// Next, check the 'taxonomy' query_var.
if ( isset( $this->query_vars['taxonomy'] ) && $taxonomy === $this->query_vars['taxonomy'] ) {
unset( $this->query_vars['taxonomy'], $this->query_vars['term'] );
}
}
}
// Limit publicly queried post_types to those that are publicly_queryable
if ( isset( $this->query_vars['post_type']) ) {
$queryable_post_types = get_post_types( array('publicly_queryable' => true) );

View File

@ -278,7 +278,7 @@ function is_taxonomy_hierarchical($taxonomy) {
* * By default tag labels are used for non-hierarchical types and category labels for hierarchical ones.
* * You can see accepted values in {@link get_taxonomy_labels()}.
* - description - A short descriptive summary of what the taxonomy is for. Defaults to blank.
* - public - If the taxonomy should be publicly queryable; //@TODO not implemented.
* - public - If the taxonomy should be publicly queryable.
* * Defaults to true.
* - hierarchical - Whether the taxonomy is hierarchical (e.g. category). Defaults to false.
* - show_ui - Whether to generate a default UI for managing this taxonomy in the admin.

View File

@ -4,7 +4,7 @@
*
* @global string $wp_version
*/
$wp_version = '4.4-alpha-34246';
$wp_version = '4.4-alpha-34247';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.