Змінні запиту термінів 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 );