Index: src/wp-admin/includes/class-wp-terms-list-table.php
===================================================================
--- src/wp-admin/includes/class-wp-terms-list-table.php	(revision 43385)
+++ src/wp-admin/includes/class-wp-terms-list-table.php	(working copy)
@@ -470,7 +470,7 @@
 				__( 'Delete' )
 			);
 		}
-		if ( $tax->public ) {
+		if ( is_taxonomy_viewable( $tax ) ) {
 			$actions['view'] = sprintf(
 				'<a href="%s" aria-label="%s">%s</a>',
 				get_term_link( $tag ),
Index: src/wp-includes/admin-bar.php
===================================================================
--- src/wp-includes/admin-bar.php	(revision 43385)
+++ src/wp-includes/admin-bar.php	(working copy)
@@ -728,7 +728,7 @@
 		} 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',
Index: src/wp-includes/taxonomy.php
===================================================================
--- src/wp-includes/taxonomy.php	(revision 43385)
+++ src/wp-includes/taxonomy.php	(working copy)
@@ -4548,3 +4548,22 @@
 
 	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;
+}
Index: tests/phpunit/tests/taxonomy/isTaxonomyViewable.php
===================================================================
--- tests/phpunit/tests/taxonomy/isTaxonomyViewable.php	(nonexistent)
+++ tests/phpunit/tests/taxonomy/isTaxonomyViewable.php	(working copy)
@@ -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 ) );
+	}
+}
