Taxonomy: Introduce is_taxonomy_viewable()
.
This utility function allows for easy detection whether terms for a taxonomy are considered publicly viewable. Props andizer. Fixes #44466. git-svn-id: https://develop.svn.wordpress.org/trunk@43386 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
8e96abbcc2
commit
d3a198df34
@ -470,7 +470,7 @@ class WP_Terms_List_Table extends WP_List_Table {
|
||||
__( 'Delete' )
|
||||
);
|
||||
}
|
||||
if ( $tax->public ) {
|
||||
if ( is_taxonomy_viewable( $tax ) ) {
|
||||
$actions['view'] = sprintf(
|
||||
'<a href="%s" aria-label="%s">%s</a>',
|
||||
get_term_link( $tag ),
|
||||
|
@ -728,7 +728,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 ) )
|
||||
&& $tax->public ) {
|
||||
&& is_taxonomy_viewable( $tax ) ) {
|
||||
$wp_admin_bar->add_menu(
|
||||
array(
|
||||
'id' => 'view',
|
||||
|
@ -4548,3 +4548,22 @@ function wp_check_term_hierarchy_for_loops( $parent, $term_id, $taxonomy ) {
|
||||
|
||||
return $parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether a taxonomy is considered "viewable".
|
||||
*
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @param string|WP_Taxonomy $taxonomy Taxonomy name or object.
|
||||
* @return bool Whether the taxonomy should be considered viewable.
|
||||
*/
|
||||
function is_taxonomy_viewable( $taxonomy ) {
|
||||
if ( is_scalar( $taxonomy ) ) {
|
||||
$taxonomy = get_taxonomy( $taxonomy );
|
||||
if ( ! $taxonomy ) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return $taxonomy->publicly_queryable;
|
||||
}
|
||||
|
44
tests/phpunit/tests/taxonomy/isTaxonomyViewable.php
Normal file
44
tests/phpunit/tests/taxonomy/isTaxonomyViewable.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @group taxonomy
|
||||
*/
|
||||
class Tests_Taxonomy_IsTaxonomyViewable extends WP_UnitTestCase {
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
register_post_type( 'wptests_pt' );
|
||||
register_taxonomy( 'wptests_tax_viewable', 'wptests_pt', array( 'publicly_queryable' => true ) );
|
||||
register_taxonomy( 'wptests_tax_non_viewable', 'wptests_pt', array( 'publicly_queryable' => false ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 44466
|
||||
*/
|
||||
public function test_is_taxonomy_viewable_for_querable_taxonomy() {
|
||||
$this->assertTrue( is_taxonomy_viewable( 'wptests_tax_viewable' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 44466
|
||||
*/
|
||||
public function test_is_taxonomy_viewable_for_non_querable_taxonomy() {
|
||||
$this->assertFalse( is_taxonomy_viewable( 'wptests_tax_non_viewable' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 44466
|
||||
*/
|
||||
public function test_is_taxonomy_viewable_for_non_existing_taxonomy() {
|
||||
$this->assertFalse( is_taxonomy_viewable( 'wptests_tax_non_existing' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 44466
|
||||
*/
|
||||
public function test_is_taxonomy_viewable_with_object_given() {
|
||||
$taxonomy = get_taxonomy( 'wptests_tax_viewable' );
|
||||
|
||||
$this->assertTrue( is_taxonomy_viewable( $taxonomy ) );
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user