From 85306e1fd6190760970a910dd9a449244a917f1b Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Sat, 13 Aug 2022 22:44:09 +0000 Subject: [PATCH] Taxonomy: Introduce the `is_term_publicly_viewable()` function. This is the taxonomy term counterpart to the `is_post_publicly_viewable()` function. Although the logic for terms is more straight forward this serves the same purpose as introducing the corresponding function for posts -- to centralise and reduce the logic needed to validate a term and determine if it's publicly viewable. Props peterwilsoncc, costdev, johnbillion Fixes #56215 Built from https://develop.svn.wordpress.org/trunk@53893 git-svn-id: http://core.svn.wordpress.org/trunk@53452 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- .../includes/class-wp-terms-list-table.php | 3 +-- wp-includes/admin-bar.php | 2 +- wp-includes/taxonomy.php | 20 +++++++++++++++++++ wp-includes/version.php | 2 +- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/wp-admin/includes/class-wp-terms-list-table.php b/wp-admin/includes/class-wp-terms-list-table.php index bfda4d7544..567f09a0d3 100644 --- a/wp-admin/includes/class-wp-terms-list-table.php +++ b/wp-admin/includes/class-wp-terms-list-table.php @@ -460,7 +460,6 @@ class WP_Terms_List_Table extends WP_List_Table { // Restores the more descriptive, specific name for use within this method. $tag = $item; $taxonomy = $this->screen->taxonomy; - $tax = get_taxonomy( $taxonomy ); $uri = wp_doing_ajax() ? wp_get_referer() : $_SERVER['REQUEST_URI']; $edit_link = add_query_arg( @@ -497,7 +496,7 @@ class WP_Terms_List_Table extends WP_List_Table { ); } - if ( is_taxonomy_viewable( $tax ) ) { + if ( is_term_publicly_viewable( $tag ) ) { $actions['view'] = sprintf( '%s', get_term_link( $tag ), diff --git a/wp-includes/admin-bar.php b/wp-includes/admin-bar.php index 5304b45ca8..19322a3451 100644 --- a/wp-includes/admin-bar.php +++ b/wp-includes/admin-bar.php @@ -809,7 +809,7 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) { ); } elseif ( 'term' === $current_screen->base && isset( $tag ) && is_object( $tag ) && ! is_wp_error( $tag ) ) { $tax = get_taxonomy( $tag->taxonomy ); - if ( is_taxonomy_viewable( $tax ) ) { + if ( is_term_publicly_viewable( $tag ) ) { $wp_admin_bar->add_node( array( 'id' => 'view', diff --git a/wp-includes/taxonomy.php b/wp-includes/taxonomy.php index f731e4f46a..b41321b059 100644 --- a/wp-includes/taxonomy.php +++ b/wp-includes/taxonomy.php @@ -4992,6 +4992,26 @@ function is_taxonomy_viewable( $taxonomy ) { return $taxonomy->publicly_queryable; } +/** + * Determines whether a term is publicly viewable. + * + * A term is considered publicly viewable if its taxonomy is viewable. + * + * @since 6.1.0 + * + * @param int|WP_Term $term Term ID or term object. + * @return bool Whether the term is publicly viewable. + */ +function is_term_publicly_viewable( $term ) { + $term = get_term( $term ); + + if ( ! $term ) { + return false; + } + + return is_taxonomy_viewable( $term->taxonomy ); +} + /** * Sets the last changed time for the 'terms' cache group. * diff --git a/wp-includes/version.php b/wp-includes/version.php index 5e480899c0..f25ff4c893 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.1-alpha-53892'; +$wp_version = '6.1-alpha-53893'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.