wordpress - 根据特定类别 woocommerce 获取最小价格变化和最大价格变化

标签 wordpress plugins woocommerce

我想根据类别获取最低价格和最高价格。 woocommerce 查询为我提供了最低和最高产品价格范围,但我希望它基于类别。

例如:category=“音乐,服装”。

以下是最低和最高价格的查询:

     $min = floor( $wpdb->get_var(
            $wpdb->prepare('
                SELECT min(meta_value + 0)
                FROM %1$s
                LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
                WHERE meta_key IN ("' . implode( '","', apply_filters( 'woocommerce_price_filter_meta_keys', array( '_price', '_min_variation_price' ) ) ) . '")
                AND meta_value != ""
            ', $wpdb->posts, $wpdb->postmeta )
        ) );

        $max = ceil( $wpdb->get_var(
            $wpdb->prepare('
                SELECT max(meta_value + 0)
                FROM %1$s
                LEFT JOIN %2$s ON %1$s.ID = %2$s.post_id
                WHERE meta_key IN ("' . implode( '","', apply_filters( 'woocommerce_price_filter_meta_keys', array( '_price' ) ) ) . '")
            ', $wpdb->posts, $wpdb->postmeta, '_price' )
        ) );

请建议我如何根据所选类别获得它。

最佳答案

SQL 查询:

//SQL Query to get max price : 
SELECT max(meta_value + 0) FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE meta_key = '_price' AND (wp_term_relationships.term_taxonomy_id IN (46,47));  

//SQL Query to get min price : 
SELECT min(meta_value + 0) FROM wp_posts LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE (meta_key = '_price' OR meta_key='_min_variation_price') AND (wp_term_relationships.term_taxonomy_id IN (46,47));
//46, 47 is the term id of category. So you need to have id of music and clothing

WP_Query:

这就是我的做法:

<?php 
    $category = array('t-shirt');

    $args = array(
        'posts_per_page' => -1,
        'post_type' => 'product',
        'orderby' => 'meta_value_num',
        'order' => 'DESC',
        'tax_query' => array(
            array(
                'taxonomy' => 'product_cat',
                'field' => 'slug',
                'terms' => $category,
                'operator' => 'IN'
            )
        ),
        'meta_query' => array(
            array(
                'key' => '_price',
            )
        )       
    );


    $loop = new WP_Query($args);

    echo "Max :" get_post_meta($loop->posts[0]->ID, '_price', true);
?>

我使用了'order'=>'DESC',这样它就会按从高到低的顺序排序,因此我们可以从中得到最高的值。

如果您想要Min,请将'order'=>'DESC'更改为'order'=>'ASC'并你将得到 echo "Min :"get_post_meta($loop->posts[0]->ID, '_price', true);

关于wordpress - 根据特定类别 woocommerce 获取最小价格变化和最大价格变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31136596/

相关文章:

Wordpress 在 URL 中获取查询类别的值

javascript - 类型错误 : undefined is not an object (evaluating 'pcos_edd_discount_code.replace' )

css - 响应式适用于屏幕测试仪,但不适用于手机

python - GIMP 2.10 Python - 如何导入自定义模块?

css - full calendar_scheduler - 如何在垂直议程日设置最小宽度资源列并进行水平滚动

wordpress - 有没有办法在我的 WordPress 网站上显示 WooCommerce 迷你购物车?

javascript - WooCommerce 运费计算器查询

css - 除非将鼠标悬停在链接上,否则看不到链接?

linux - 如何在 Linux 上仅使用 Gecko-sdk 构建 mozilla firefox NSAPI 示例插件

php - 在 WordPress 用户配置文件中隐藏 WooCommerce 账单和运输字段