Фільтр: esl/terms/query_vars

Змінні запиту термінів ESL можна маніпулювати перед виконанням запиту так:

add_filter( 'esl/terms/query_vars', function( $query_vars, $settings, $element_id ) {$query_vars['exclude'] = 23; // Виключити термін id 23return $query_vars;}, 10, 3 );

Зворотний виклик фільтра отримує три аргументи:

  • $query_vars асоціативний масив, використаний для передачі класу WP_Term_Query
  • $settings асоціативний масив, що містить налаштування елемента, встановлені в системі
  • $element_id рядок, що містить унікальний ідентифікатор елемента

Приклад 1: Виключити поточний термін із запиту

У термінальній архівній сторінці, щоб виключити поточний термін із запиту:

// Виключити поточний термін з циклу запитів термінів на архівних сторінках термінів.add_filter( 'esl/terms/query_vars', function( $query_vars, $settings, $element_id ) {if ( $element_id !== 'uxtkgn' ) {return $query_vars;}$query_vars['exclude'] = get_queried_object_id();return $query_vars;}, 10, 3 );

де uxtkgn – це ID ESL елемента, на якому увімкнено цикл запитів.

Приклад 2: Отримати терміни, призначені посту

У цьому прикладі ми хотіли б отримати лише терміни, призначені певному ID посту (як і у функції WordPress wp_get_object_terms()):

add_filter( 'esl/terms/query_vars', function( $query_vars, $settings, $element_id ) {if ( $element_id !== 'mjvhur' ) {return $query_vars;}$query_vars['object_ids'] = get_the_ID();return $query_vars;}, 10, 3 );