Этот метод работал на одном этапе, но потерял отслеживание, когда он начал не фильтровать после множества изменений во времени. Надеюсь, ответ смотрит на кого-то в лицо. В моей детской теме functions.php
у меня есть:
function shop_store_filter() {
if (is_shop() || is_product_category() || is_product()) {
add_filter( 'woocommerce_product_query_meta_query', 'storeFilter', 9 );
}
}
function storeFilter($meta_query) {
$meta_query[] = array(
'post_type' => 'product',
'meta_query' => array(
array(
'key' => '_product_attributes',
'value' => $_GET["sid"],
'compare' => 'LIKE',
'type' => 'product'
)
)
);
return $meta_query;
}
add_action( 'wp', 'shop_store_filter' );
Я получаю пустой массив $meta_query
для того, где этот фильтр вызывается из class-wc-query.php
, поэтому он как бы не регистрируется, как описано выше. Я подтвердил, что is_shop()
верно.
Есть предложения?
EDIT
Я хочу подчеркнуть две вещи из комментариев ниже, которые, возможно, были неправильно поняты:
1) Я сказал, что пример совета работал . Это не таксономия, значение, которое я пытаюсь отфильтровать, является идентификатором магазина, поэтому здесь не должно быть определенного набора возможных значений, таких как цвета. Также обратитесь к этому примеру:
Woocommerce: Показать товары, отфильтрованные по атрибуту
2) Если оставить в стороне запрос, большая проблема в том, что функция, в которую он помещен, не запускается фильтром woocommerce_product_query_meta_query
. Странно, вот где я застрял.