Intereting Posts
Как я могу выбрать другую тему для входа в систему пользователей и гостей? WP_Query дает разные результаты в зависимости от порядка категорий Невозможно установить пользовательские правила таксономии через пользовательскую форму Как исключить сообщения из категории Программно отключить W3 Total Cache в среде разработки WP-AJAX против WP REST API: что использовать для запросов на веб-сайт извне? Галлерея галереи с большим и большим размером Как изменить положение метаданных WP по умолчанию? Как удалить миниатюры сообщений на странице индекса? (двадцать четырнадцатая тема) используя wp_update_post для обновления пользовательского типа сообщения В каком файле я запускаю задание cron, чтобы чаще обновлять новостную ленту Twitter? Детская тема на основе набора инструментов не найдена Предложение базовой плагины галереи Как добавить идеальный апостроф и цитату в сообщениях WordPress? Как я могу редактировать сообщение из внешнего интерфейса?

Изменение цикла WooCommerce никогда не возвращается

Я уверен, что мне не хватает какого-либо вызова или что-то, что настраивает запрос WC, но я не могу понять, что это такое. У меня в основном есть фильтры AJAX на страницах архива продукта, которые отправляют запрос var и его значение в admin_ajax. Функция, которая его получает, будет фильтровать запрос, чтобы скрыть / показать все элементы управления фильтром продукта. В этом случае я фильтрую product_cat. Вот функция, подключенная к admin_ajax:

public function filter_products() { global $wp_query; // For error logging $data = ''; $var = esc_html( $_POST['query_var'] ); $value = esc_html( $_POST['query_val'] ); $remove = esc_attr( $_POST['remove'] ) === 'false' ? false : true; // Quick and dirty bool sanitize /** @var $allowed_vars The valid query keys */ $allowed_vars = array( 'product_cat' ); // Check whether the $var is allowed if ( ! in_array( $var, $allowed_vars ) ) { return; } error_log( print_r( $wp_query, true ) ); // This prints as completely empty if ( 'product_cat' === $var ) { // First test case, the product_var tax add_action( 'woocommerce_product_query', function ( $q, $product ) use ( $value ) { // Closure for passing the $value $q->set( 'tax_query', array( array( 'taxonomy' => 'product_cat', 'field' => 'term_id', 'terms' => array( $value ) ) ) ); error_log( $value ); // Neither this nor the below value ever log error_log( print_r( $q, true ) ); }, 99 ); } // Missing something here, I know it... ob_start(); if ( have_posts() ) { // Spoiler: We don't while ( have_posts() ) { the_post(); wc_get_template_part( 'content', 'product' ); } } else { esc_html_e( 'Nothing found', 'dwcpf' ); } $data = ob_get_clean(); wp_send_json_success( $data ); die(); } 

Это всегда возвращает Nothing found в консоли. Запрос, зарегистрированный в debug.log, пуст. Что мне не хватает? Я хотел бы идеально изменить цикл, отображаемый на этой странице архива продукта, но $wp_query пуст, is_main_query()true . is_shop() является false .

Спасибо за любую помощь!