From bb8398e0a13b64e5793b16b75136c29582ee8fa7 Mon Sep 17 00:00:00 2001 From: Nikita Sinelnikov Date: Wed, 25 Aug 2021 16:17:36 +0300 Subject: [PATCH] - fixed terms query when there isn't taxonomy argument but term_taxonomy_id exists; --- includes/core/class-access.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/includes/core/class-access.php b/includes/core/class-access.php index 92837eb6..d22295f3 100644 --- a/includes/core/class-access.php +++ b/includes/core/class-access.php @@ -355,7 +355,19 @@ if ( ! class_exists( 'um\core\Access' ) ) { $restricted_taxonomies = array_values( $restricted_taxonomies ); if ( ! empty( $restricted_taxonomies ) ) { - $restricted_taxonomies = array_intersect( $query->query_vars['taxonomy'], $restricted_taxonomies ); + if ( isset( $query->query_vars['taxonomy'] ) && is_array( $query->query_vars['taxonomy'] ) ) { + $restricted_taxonomies = array_intersect( $query->query_vars['taxonomy'], $restricted_taxonomies ); + } elseif ( ! empty( $query->query_vars['term_taxonomy_id'] ) ) { + $term_taxonomy_ids = is_array( $query->query_vars['term_taxonomy_id'] ) ? $query->query_vars['term_taxonomy_id'] : array( $query->query_vars['term_taxonomy_id'] ); + + global $wpdb; + $tax_in_query = $wpdb->get_col( "SELECT DISTINCT taxonomy FROM {$wpdb->term_taxonomy} WHERE term_taxonomy_id IN('" . implode( "','", $term_taxonomy_ids ) . "')" ); + if ( ! empty( $tax_in_query ) ) { + $restricted_taxonomies = array_intersect( $tax_in_query, $restricted_taxonomies ); + } else { + $restricted_taxonomies = array(); + } + } } }