我需要做的是在URL中为属性应用一个值,因此仅显示与该属性匹配的产品。我不想在页面上做任何小部件或其他可见的过滤器。
为此,我假设我需要使用webhooks中的一种,并过滤出所有要显示的商品。
在这种情况下,谁能建议哪个钩子是最好的,并简单说明一下触发函数将如何返回新的产品数组?
谢谢!
NB :我还想查询一个自定义属性,该属性没有任何条件,只是一个直键/值。
更新1 我在玩两种技巧。一个非常可靠,基本上可以使用:
if (!$product->attributes || $product->get_attribute( 'testKey' ) != $_GET["testKey"]) {
//return;
}
位于 content-product.php 的顶部,但是WooCommerce当然仍会说found_posts的原始值。当然不理想。
我发现这样的事情应该在 functions.php 中起作用:
function testFilter($meta_query) {
$meta_query[] = array (
'key' => 'testKey',
'value' => 'testVal',
'compare' => '='
);
return $meta_query;
}
add_filter( 'woocommerce_product_query_meta_query', 'testFilter', 9 );
除非没有,否则不返回任何结果,是否使用LIKE,EXISTS等都没有关系。我使用错了吗?
更新2 我不会说这就是答案,因为这似乎只是在一组自定义属性中寻找一个值,但是this result有所帮助。
答案 0 :(得分:0)
add_filter( 'wpv_filter_query', 'wpv_filter_color_attribute' );
function wpv_filter_color_attribute( $query_args) {
$tax_query = array();
$tax_query['taxonomy'] = 'pa_size';
$tax_query['field'] = 'term_id';
$tax_query['terms'] = $_GET['pa_size'];
$query_args['tax_query'] = array($tax_query);
return $query_args;
}
您应将“ pa_size”替换为属性分类标签,也应将$ _GET ['pa_size']替换为正确的URL参数。
您可以使用上述代码按属性过滤产品。我还没有尝试过。但是,这可能会对您有所帮助。