Фильтрация продуктов по значениям атрибутов продуктов в Woocommerce - PullRequest
0 голосов
/ 07 сентября 2018

Этот метод работал на одном этапе, но потерял отслеживание, когда он начал не фильтровать после множества изменений во времени. Надеюсь, ответ смотрит на кого-то в лицо. В моей детской теме 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. Странно, вот где я застрял.

1 Ответ

0 голосов
/ 10 сентября 2018

Исправлено - запрос все еще был в порядке.Я не помню, почему у нас была проверка is_post()..., но я переместил add_filter( 'woocommerce_product_query_meta_query', 'storeFilter', 1 ); обратно из функции, которая должна выполняться самостоятельно, и все было в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...