从Woocommerce中的产品属性值过滤产品

时间:2018-09-07 02:03:49

标签: php wordpress woocommerce query-string custom-taxonomy

此方法仅在一个阶段起作用,但是随着时间的推移在进行一系列更改后开始不进行过滤时,该方法便失踪了。希望答案凝视在脸上。在我的孩子主题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()是正确的。

有什么建议吗?

编辑

我想从下面的评论中强调两点,这可能被误解了:

1)我已经说过建议示例正在起作用。这不是分类法,我尝试过滤的值是商店ID,因此并不意味着要有一组确定的可能值,例如颜色。另请参阅以下示例:

Woocommerce: Show products filtered by attribute

2)除了查询之外,更大的问题是它包装的函数似乎不是由woocommerce_product_query_meta_query过滤器触发的。奇怪,这就是我被困住的地方。

1 个答案:

答案 0 :(得分:-1)

已修复-查询仍然很好。我不记得为什么要进行is_post()...的检查,但是我将add_filter( 'woocommerce_product_query_meta_query', 'storeFilter', 1 );移出了要单独执行的功能,这还可以。