在页面上显示 Woocommerce 中低于特定价格的所有产品

Ani*_*oel 1 php wordpress shortcode woocommerce price

我有一家包含 1000 多种产品的 Woocommerce 商店。我希望所有价格低于999的产品都应该显示在单独的页面上,这样我就可以在菜单中标记该页面。

是否可以?

Loi*_*tec 5

更新:( 添加'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;
}
Run Code Online (Sandbox Code Playgroud)

代码位于活动子主题(或活动主题)的 function.php 文件中。经过测试并有效。


##用法:

这里我们使用未使用的class参数来传递价格和比较运算符。

1) 显示低于特定金额的产品 (您的情况)

您将粘贴以下短代码示例作为class参数值below-999 (适用于价格低于 999 的产品)

[products limit="16" paginate="true" columns="4" class="below-999"]
Run Code Online (Sandbox Code Playgroud)

WordPress页面文本内容编辑器:

在此输入图像描述

你会得到:

在此输入图像描述

2) 展示超过特定数量的产品

您将粘贴以下短代码示例作为class参数值above-50 (对于价格高于 的产品50

[products limit="16" paginate="true" columns="4" class="above-50"]
Run Code Online (Sandbox Code Playgroud)

可用的短代码参数和设置:Woocommerce 短代码文档

  • [更新]-我刚刚发现函数编码中有一个错误,下面的条件语句的运算符输入错误。如果上述编码中出现以下情况,则应为“&gt;”。好吧,再次感谢您的帮助:) (2认同)