Intereting Posts
ted переговоры встроены фиксированные, но не могут контролировать размер Как прекратить обматывать комментарии в теге P пытаясь создать простой плагин для фильтрации категорий от всех авторов Петля внутри цикла (снова) для шаблона Построение процессора запросов для многостраничных форм и т. Д. С использованием запросов $ _GET Неполная страница вложения Вставка виджетов в цикл / пользовательский запрос на каждой n-й позиции Как добавить шрифт Awesome Icons в меню WordPress? плагин wordpress для поиска полей базы данных Редактировать сообщение meta direct from post.php? Какова цель index.php в каталоге wp-content? Пользователи перенаправляются на основной сайт при попытке зарегистрироваться на дочернем участке моей сети Multisite Как я могу получить экспорт XML моего экземпляра WordPress 1K +? См. Вывод запроса sql при установке плагина в wordpress Является ли WP Importer безопасным для нескольких пользователей?

Категории раскрывающегося списка, используемые в форме, не показывают результатов, когда все выбрано

Я использую wp_dropdown_categories дважды в форме поиска, один раз для категорий и второй для пользовательской таксономии. При выборе опции «Все» на странице результатов не отображаются результаты. Термин «все» – это «0», поскольку он отображается в URL-адресе. При выборе категории и пользовательской таксономии из выпадающего меню она отлично работает.

Ниже мой запрос и мои выпадающие списки:

if ( isset($_GET['cat']) && isset($_GET['manufacturer']) ) { $tax_query = array( 'relation' => 'AND' ); array_push($tax_query, array( 'taxonomy' => 'manufacturers', 'field' => 'term_id', 'terms' => $_GET['manufacturer'], ), array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $_GET['cat'], ) ); }; if ( ( $_GET['cat'] == 0 ) || ( $_GET['manufacturer'] == 0 ) ) { $tax_query = '' }; $query_args = array( 'post_type' => 'yacht', 'meta_or_tax' => true, 'tax_query' => $tax_query, 'posts_per_page' => -1, 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'yachts_loa_length_round', 'value' => array($_GET['min_length'], $_GET['max_length']), 'compare' => 'BETWEEN', 'type' => 'NUMERIC', ), array( 'key' => 'yachts_price', 'value' => array($_GET['min_price'], $_GET['max_price']), 'compare' => 'BETWEEN', 'type' => 'NUMERIC', ), array( 'key' => 'yachts_year', 'value' => array($_GET['min_year'], $_GET['max_year']), 'compare' => 'BETWEEN', 'type' => 'NUMERIC', ) ) ); $yacht_query = new WP_Query( $query_args ); $args = array( 'orderby' => 'menu_order', 'show_option_all' => pll__('All '), 'order' => 'ASC', 'hide_empty' => 0, 'exclude' => -1, 'name' => 'cat', 'class' => 'form-select', 'taxonomy' => 'category', ); wp_dropdown_categories( $args ); ?> <?php $args = array( 'orderby' => 'menu_order', 'show_option_all' => pll__('All'), 'order' => 'ASC', 'hide_empty' => 0, 'exclude' => -1, 'name' => 'manufacturer', 'class' => 'form-select', 'taxonomy' => 'manufacturers', ); wp_dropdown_categories( $args ); ?> 

0 – недействительный идентификатор срока действия в налоговом запросе. Не добавляйте параметры запроса налоговой категории, если значение равно 0, что эквивалентно игнорированию категории. Если вам нужны только категории, которые классифицируются (категория должна быть назначена, но может быть любой категорией), то используйте оператор EXISTS .

 $tax_query = ''; if( isset($_GET['cat']) && 0 != $_GET['cat'] ) { $tax_query[] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $_GET['cat'] ); } if( isset($_GET['manufacturer']) && 0 != $_GET['manufacturer'] ) { $tax_query[] = array( 'taxonomy' => 'manufacturers', 'field' => 'term_id', 'terms' => $_GET['manufacturers'] ); } // only add relation if both are set and non-zero if( isset($_GET['manufacturer']) && 0 != $_GET['manufacturer'] && isset($_GET['cat']) && 0 != $_GET['cat'] ) { $tax_query['relation'] = 'AND'; } // query args for all queries $query_args = array( 'post_type' => 'yacht', // other args... ); // add tax query if it isn't empty if( !empty( $tax_query ) ){ $query_args['tax_query'] = $tax_query; } $yacht_query = new WP_Query( $query_args );