Я для терминов таксономии 'product_cat' создал при помощи плагина ACF мета поле 'Новинка' и хочу отбирать в цикле все термины с отмеченным мета полем.
Я добавил (для примера) в файл archive-product.php код для проверки того, как меняется запрос основного цикла вывода записей:
$args = array(
'post_type' => 'product',
'meta_query' => array(
array(
'key' => 'new_product', // name of custom field
'value' => true,
'type' => 'numeric',
'compare' => 'LIKE'
)
)
);
global $wp_query;
$args = array_merge( $wp_query->query, $args );
query_posts($args);
if ( woocommerce_product_loop() ) {
// родной код вывода термов из content-product
}
Вот новые аргументы запроса:
["product_cat"]=> string(10) "wallpapers" //первоначальная строка запроса
["meta_query"]=> array(1) {
[0]=> array(4) {
["key"]=> string(11) "new_product" ["value"]=> int(1) ["type"]=> string(7) "numeric" ["compare"]=> string(4) "LIKE"
}
}
Но после выполнения query_posts() ничего не происходит, выводятся термы прежнего запроса $wp_query.
Есть вариант сформировать запрос иначе, вроде этого, но не уверен, что он подойдет для выборки термов:
function custom_posts_join($join){
global $wpdb;
$join .= " LEFT JOIN $wpdb->termmeta as meta_1 ON $wpdb->terms.term_id = meta_1.term_id";
return $join;
}
add_filter( 'posts_join' , 'custom_posts_join');
function filter_where( $where = '' ) {
$where .= " AND meta_1.meta_key='new_product' AND meta_1.meta_value=1";
}
add_filter('posts_where', 'filter_where');
Но я не знаю как его применить при выводе записей в шаблоне archive-product.php.
Сразу скажу, что в качестве главного фильтра категорий в магазине я применил плагин Premmerce Woocommerce Product Filter.
Подскажите, можно ли изменить основной цикл и виджет фильтра при этом также корректно работал? Спасибо заранее.