WooCommerce相关产品按属性筛选
问题描述:
我看过this question和this one但我仍然卡住。WooCommerce相关产品按属性筛选
我有"status"
一个属性,我只想用"OPEN"
值类(产品)出现。我在编辑related.php WooCommerce模板文件。
这里是我试过的两个版本的代码。
$key="status";
$value="OPEN";
$query_status = array('meta_key' => $key, 'meta_value' => $value);
$meta_query[] = $query_status;
$args = apply_filters('woocommerce_related_products_args', array(
'post_type' => 'product',
'ignore_sticky_posts' => 1,
'no_found_rows' => 1,
'posts_per_page' => $posts_per_page,
'orderby' => $orderby,
'post__in' => $related,
'post__not_in' => array($product->id),
'meta_query' => $meta_query,
));
$products = new WP_Query($args);
第一个版本不会造成相关产品展现出来,所以它打破了代码:
版本1:
$args = apply_filters('woocommerce_related_products_args', array(
'post_type' => 'product',
'ignore_sticky_posts' => 1,
'no_found_rows' => 1,
'posts_per_page' => $posts_per_page,
'orderby' => $orderby,
'post__in' => $related,
'post__not_in' => array($product->id),
'meta_query' => array(
array(
'key' => 'status',
'value' => 'OPEN',
),
),
));
第2版。第二个没有效果。
我该如何解决这个问题?
谢谢
答
好的,我有答案! WooCommerce以几种方式存储自定义属性,但在这种情况下,我需要使用术语查询而不是元查询。下面是最终的查询,就像一个魅力:
$args = apply_filters('woocommerce_related_products_args', array(
'post_type' => 'product',
'ignore_sticky_posts' => 1,
'no_found_rows' => 1,
'posts_per_page' => 4,
'orderby' => $orderby,
'post__not_in' => array($product->id),
'tax_query' => array(
array(
'taxonomy' => 'pa_status',
'field' => 'slug',
'terms' => 'open'
)
)
));
@LoicTheAztec,对不起,在延迟答复,我有一个家庭应急和一直无法为周工作。我希望很快回到这个问题,并且很高兴能够测试你的代码。 – schatzkin
嗯,我以为我在这里写了一个响应...我测试了代码,并没有得到任何结果,即使我删除了'post__in'=> $ related参数。我想我会继续尝试。 – schatzkin