[英]Display on a page all products below a specific price in Woocommerce
我有一家拥有 1000 多种产品的 Woocommerce 商店。 我希望所有价格低于999的产品都应显示在单独的页面上,以便我可以在菜单中标记该页面。
可能吗?
更新:(添加'type' => 'DECIMAL',
到meta_query
数组)
这可以使用要在页面上使用的Woocommerce 短代码[products]
来完成,并带有以下附加代码(这将增加通过现有参数定义要比较的价格的可能性) :
add_filter( 'woocommerce_shortcode_products_query', 'products_based_on_price', 10, 3 );
function products_based_on_price( $query_args, $atts, $loop_name ) {
if( ! ( isset($atts['class']) && ! empty($atts['class']) ) )
return $query_args;
if (strpos($atts['class'], 'below-') !== false) {
$compare = '<';
$slug = 'below-';
} elseif (strpos($atts['class'], 'above-') !== false) {
$compare = '>'; //changed from "<" to ">"
$slug = 'above-';
}
if( isset($compare) ) {
$query_args['meta_query'][] = array(
'key' => '_price',
'value' => (float) str_replace($slug, '', $atts['class']),
'type' => 'DECIMAL',
'compare' => $compare,
);
}
return $query_args;
}
代码位于您的活动子主题(或活动主题)的 function.php 文件中。 测试和工作。
##用法:
这里我们使用未使用的
class
参数来传递价格和比较运算符。
1) 展示低于特定数量的产品(您的情况)
您将粘贴以下短代码示例,其class
参数值below-999
(对于价格低于 999 的产品) :
[products limit="16" paginate="true" columns="4" class="below-999"]
wordpress 页面文本内容编辑器:
你会得到:
2) 展示特定数量以上的产品
您将粘贴以下短代码示例,其中class
参数值above-50
(对于价格高于50
的产品) :
[products limit="16" paginate="true" columns="4" class="above-50"]
可用的简码参数和设置: Woocommerce 简码文档
看:
$query = new \WP_Query(
[
'posts_per_page' => -1,
'post_type' => 'product',
'meta_key' => '_price',
'meta_value' => 999,
'meta_compare' => '<',
'meta_type' => 'NUMERIC'
]);
$query->posts
上使用 foreach 来显示您的帖子
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.