使用短代码或PHP代码显示Woocommerce中99美元以上的产品

时间:2018-01-16 17:35:27

标签: php wordpress woocommerce shortcode hook-woocommerce

我正在寻找基于产品价格的条件短码。我现在在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

任何帮助将不胜感激。

1 个答案:

答案 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