Intereting Posts
Сообщения без мета-поля не отображаются при сортировке по мета-полю Внедрение предварительно заданного текста из настраиваемого шаблона страницы в редактор Код плагина не будет работать должным образом внутри класса Показать пользовательский тип сообщения Taxonomy Child Категории и их сообщения Как сделать бесконечный цикл сообщения @media в bluehost закомментирован использовать эскизы из ftp не использовать другой размер в сообщениях wordpress темы Что такое хороший способ представить шаблонный контент в WordPress? Url wordpress переписать Как обновить meta сообщения внутри цикла WP_Query или цикла WordPress? Запуск get_posts в get_posts для получения детей детей Устранение данных в пользовательском почтовом типе WordPress API (wp-json) WP-CLI методы для get_current_blog_id, get_blog_details или $ wpdb-> prefix Добавить конечную метку в конце каждой статьи Вызов PHP внутри разметки javascript

pre_get_posts main_query не отображается после применения фильтров tax_query

Возможно, кто-то может помочь мне определить проблему, с которой я столкнулся с действием pre_get_posts.

Раньше я использовал тот же код в другом проекте, и он отлично работал. Я даже пошел по очереди, но могу ли я что-то упустить. Я не уверен, что это такое, вот код, и мое объяснение ниже.

архив-specials.php

<form role="form" method="POST" action="<?php echo site_url('specials'); ?>"> <?php echo wp_nonce_field('search_specials', 'search_specials_nonce', false, false); ?> <div class="form-group"> <label for="special_day">Select Day:</label> <?php wp_dropdown_categories(array( 'show_option_all' => 'Everyday', 'show_count' => 1, //default is 0 'hide_empty' => false, 'name' => 'special_day', 'id' => 'special_day', 'class' => 'form-control', 'hierarchical' => true, 'taxonomy' => 'special_day' )); ?> </div> <div class="form-group"> <label for="special_area">Select Area:</label> <?php wp_dropdown_categories(array( 'show_option_all' => 'All Areas', 'show_count' => 1, //default is 0 'hide_empty' => false, 'name' => 'special_area', 'id' => 'special_area', 'class' => 'form-control', 'hierarchical' => true, 'pad_counts' => true, //add children count to curent item, 'taxonomy' => 'special_area' )); ?> </div> <div class="form-group"> <label for="special_category">Select Category:</label> <?php wp_dropdown_categories(array( 'show_option_all' => 'All Categories', 'show_count' => 1, //default is 0 'hide_empty' => false, 'name' => 'special_category', 'id' => 'special_category', 'class' => 'form-control', 'hierarchical' => true, 'pad_counts' => true, //add children count to curent item, 'taxonomy' => 'special_category' )); ?> </div> <button type="submit" class="btn btn-default">Search</button> </form> 

functions.php

 add_action('pre_get_posts', function($query) { $search_specials_nonce = filter_input(INPUT_POST, 'search_specials_nonce'); if(isset($search_specials_nonce) && wp_verify_nonce($search_specials_nonce, 'search_specials') && $query->is_main_query()) { $special_day = filter_input(INPUT_POST, 'special_day'); $special_area = filter_input(INPUT_POST, 'special_area'); $special_category = filter_input(INPUT_POST, 'special_category'); $tax_query = array(); if($special_day) { $tax_query = array_merge($tax_query, array( array( 'taxonomy' => 'special_day', 'field' => 'term_id', 'terms' => $special_day, 'include_children' => true ) )); } if($special_area) { $tax_query = array_merge($tax_query, array( array( 'taxonomy' => 'special_area', 'field' => 'term_id', 'terms' => $special_area, 'include_children' => true ) )); } if($special_category) { $tax_query = array_merge($tax_query, array( array( 'taxonomy' => 'special_category', 'field' => 'term_id', 'terms' => $special_category, 'include_children' => true ) )); } if(count($tax_query) > 1) { $tax_query = array_merge($tax_query, array( 'relation' => 'AND' )); } if(count($tax_query) > 0) { $query->set('tax_query', $tax_query); } } }); 

Проблема, с которой я сталкиваюсь, заключается в том, что в основной строке не появляются записи после отправки формы поиска. Когда я загружаю страницу архива специальных данных, он загружает записи, но не после того, как поиск выполнен. Я пробовал много вещей и даже комментировал материал, но ничего не работает.

Функция nonce определенно корректно проверяет, и запрос влияет только на основной запрос, но результаты не отображаются. Я использую обычный способ отображения результатов на странице archive-specials.php .

 while(have_posts()) { the_post(); echo the_title(); } 

Любая помощь или предложения будут высоко оценены.

Solutions Collecting From Web of "pre_get_posts main_query не отображается после применения фильтров tax_query"

Проблема с моим поиском заключалась в том, что имя поля выбора было тем же именем, что и запрашиваемая таксономия. Когда я использовал другое имя для поля выбора, мой запрос работал так, как должен.

 <?php wp_dropdown_categories(array( 'name' => 'special_day_select', //anything else besides an existing taxonomy name. 'taxonomy' => 'special_day' )); ?> 

Надеюсь, это полезно для кого-то другого.