Вывод записей из выбранной таксономии в поиске WP
Задача с помощью wp_dropdown_categories (хотя не обязательно именно с этой функцией) дать возможность пользователю выбирать таксономию сайта для поиска и выводить посты только из нее. Если не выбрано никакой таксономии - поиск должен осуществиться по всем категориям сайта.
Задаю параметры выпадашки:
$args = array( ... 'selected' => $kat = get_query_var('cat'), 'name' => 'cat', 'taxonomy' => ['category', 'ad_category', 'event_cat', 'reestr_company', 'region_company', 'industry_category'], 'value_field' => 'term_id', ... ) wp_dropdown_categories($args);
Инпут формы:
<input class="uk-width-expand src-input uk-width-1-1 uk-width-expand@m search-form__input" type="search" placeholder="Введите поисковый запрос" value="<?php echo get_search_query() ?>" name="s" id="s" autocomplete="off">
Далее в search.php по-идее мы принимаем эти данные. Создаю новый WP_Query, вывожу посты:
$new_post [ 'post_type' => 'any', $s = get_search_query(); 'tax_query' => array( array( 'taxonomy' => ['category', 'ad_category', 'event_cat', 'reestr_company', 'region_company', 'industry_category'], 'terms' => array($kat), 'field' => 'id', 'operator' => 'AND' ) ) ] $the_query = new WP_Query($new_post);
И далее цикл вывода
if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ...
Не работает моя схема. Подскажите что не так.
во-первых, при объявлении переменной $new_post у вас пропущен знак '='
во-вторых, параметрах запроса исправьте вторую строку на
's' => get_search_query(),
в-третьих, из примера не понятно, как вы собираетесь получить на странице search.php значение переменной $kat.