我正在寻找基于产品价格的条件短码。我现在在Woocommerce上有2k +产品,我希望从特定类别和整个产品中显示99美元以上的产品。
如何在短代码中应用此条件?有没有办法做到这一点?
实际上,我想在小部件中应用,因此短代码形式将起作用。
以下是显示产品的简单func dismissImages(){
imageLogo.isHidden = true
UIView.animate(withDuration: 17) {
self.topImage.layer.frame.origin.x -= self.view.frame.width
}
UIView.animate(withDuration: 17, animations: {
self.bottomImage.layer.frame.origin.x += self.view.frame.width
}) { guard $0 else { return }
self.imageLogo.isHidden = false
}
}
,但我想应用这个必要条件:
shortcode
任何帮助将不胜感激。
答案 0 :(得分:1)
2018年8月更新:(将'type'=>'DECIMAL'添加到meta_query数组中)
可以使用虚假类别调整包含与您的案例类似的价格的短代码:price-above-99
其中'above'
将是运营商'>'
和 '99'
价格金额。运营商也可以是:
price-below-20
('below'
运营商'<'
和 '20'
价格金额。)price-equal-25
('below'
运营商'='
和 '25'
价格金额。)现在您的短代码(假冒类别)将是:
[products limit="10" columns="4" category="hoodies, tshirts, price-above-99"]
以下是允许该功能的代码:
add_filter( 'woocommerce_shortcode_products_query', 'shortcode_products_price', 10, 3 );
function shortcode_products_price( $query_args, $atts, $loop_name ) {
$has_price = false;
$compare = $price = '';
$categories = $atts['category'];
$categories = str_replace(' ', '', $categories);
$categories_array = explode(',', $categories);
if( count($categories_array) > 0 )
foreach( $categories_array as $category )
if (strpos($category, 'price-') !== false) {
$has_price = true;
$values = explode('-', $category);
if( 'above' == $values[1] ) $compare = '>';
elseif( 'below' == $values[1] ) $compare = '<';
else $compare = '=';
$price = $values[2];
}
if( $has_price )
$query_args['meta_query'][] = array(
'key' => '_price',
'value' => $price,
'type' => 'DECIMAL', // <== Updated
'compare' => $compare,
);
return $query_args;
}
代码放在活动子主题(或活动主题)的function.php文件中。
它在简单的产品上运行得很好,但对于可变产品,因为它们有很多价格,所以需要最高的价格(在您的情况下)......
如果您想排除变量产品,您将替换元查询数组 $query_args['meta_query']
:
if( $has_price )
$query_args['meta_query'][] = array(
'relation' => 'OR',
array(
'key' => '_regular_price',
'value' => $price,
'type' => 'DECIMAL', // <== Updated
'compare' => $compare,
),
array(
'key' => '_sale_price',
'value' => $price,
'type' => 'DECIMAL', // <== Updated
'compare' => $compare,
)
);
这将删除变量产品......
相似(新答案):Display on a page all products below a specific price in Woocommerce