【问题标题】:Get lowest price bigger than 0 of a simple "instock" product for a specific product category in Woocommerce在 Woocommerce 中为特定产品类别获取大于 0 的简单“库存”产品的最低价格
【发布时间】:2019-08-28 21:19:56
【问题描述】:

在 WooCommerce 中,对于已定义的产品类别,我试图在价格大于 0 时获得可用(库存)简单产品的最低价格……

我有这个显示最低价格的代码:

function wpq_get_min_price_per_product_cat($term_id){    
    global $wpdb;

    $sql = "
    SELECT  MIN( meta_value+0 ) as minprice
    FROM {$wpdb->posts} 
    INNER JOIN {$wpdb->term_relationships} ON ({$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id)
    INNER JOIN {$wpdb->postmeta} ON ({$wpdb->posts}.ID = {$wpdb->postmeta}.post_id) 
    WHERE  
      ( {$wpdb->term_relationships}.term_taxonomy_id IN (%d) ) 
    AND {$wpdb->posts}.post_type = 'product'  
    AND {$wpdb->posts}.post_status = 'publish' 
    AND {$wpdb->postmeta}.meta_key = '_price'
    ";

    return $wpdb->get_var($wpdb->prepare($sql, $term_id));
}

但是如何定位价格大于 0 的“有货”产品呢?

【问题讨论】:

    标签: php mysql sql wordpress woocommerce


    【解决方案1】:

    以下更改后的 SQL 查询将为定义的产品类别术语 ID、大于 0 的产品价格和“有货”产品获取最低价格:

    function wpq_get_min_price_per_product_cat( $term_id ){
        global $wpdb;
    
        return $wpdb->get_var( $wpdb->prepare("
            SELECT  MIN(pm.meta_value+0)
            FROM {$wpdb->prefix}posts as p
            INNER JOIN {$wpdb->prefix}postmeta as pm
                ON p.ID = pm.post_id
            INNER JOIN {$wpdb->prefix}postmeta as pm2
                ON p.ID = pm2.post_id
            INNER JOIN {$wpdb->prefix}term_relationships as tr
                ON p.ID = tr.object_id
            INNER JOIN {$wpdb->prefix}term_taxonomy as tt
                ON tr.term_taxonomy_id = tt.term_taxonomy_id
            WHERE tt.taxonomy = 'product_cat'
            AND tt.term_id = %d
            AND p.post_type = 'product'
            AND p.post_status = 'publish'
            AND pm.meta_key = '_price'
            AND pm.meta_value > 0
            AND pm2.meta_key = '_stock_status'
            AND pm2.meta_value = 'instock'
        ", $term_id) );
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 2018-01-31
      • 2016-05-08
      相关资源
      最近更新 更多