【问题标题】:Filter products from product attributes values in Woocommerce从 Woocommerce 中的产品属性值中过滤产品
【发布时间】:2019-02-12 07:43:24
【问题描述】:

此方法在某个阶段有效,但随着时间的推移,当它开始不过滤时,它失去了跟踪。希望答案盯着某人的脸。在我的儿童主题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() 是真的。

有什么建议吗?

编辑

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

1) 我说过建议示例正在运行。它不是分类法,我试图过滤的值是商店 ID,因此并不意味着有一组确定的可能值,如颜色。也可以参考这个例子:

Woocommerce: Show products filtered by attribute

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

【问题讨论】:

  • 随着时间的推移,您已将更改作为一组更改删除。并清除缓存后。再次刷新页面并检查。
  • 老实说,我只是不确定它在什么时候坏了,如果它代表我们添加的插件,或者什么。有没有办法验证调用标签的函数(class-wc-query.php->woocommerce_product_query_meta_query)已经成功执行了函数storeFilter

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


【解决方案1】:

已修复 - 查询仍然正常。我不记得我们为什么要检查is_post()...,但我将add_filter( 'woocommerce_product_query_meta_query', 'storeFilter', 1 ); 移出函数以自行执行,这没问题。

【讨论】:

    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2019-01-23
    • 2020-08-20
    相关资源
    最近更新 更多