【问题标题】:Get product min_price by sku按 sku 获取产品 min_price
【发布时间】:2019-10-27 22:57:44
【问题描述】:

对于产品post_type 和草稿post_status,我需要按sku 获取min_price 的最小值。

function get_product_min_price_by_sku($sku) {
  global $wpdb;
  $min_price = $wpdb->get_var(
    $wpdb->prepare("
      SELECT MIN(min_price) 
      FROM {$wpdb->wc_product_meta_lookup} 
      WHERE sku = '$sku'
    ")
  );
  return $min_price;
}

如何在此函数中添加帖子状态条件?

AND posts.post_status = 'draft'

顺便说一句。我允许多个具有相同 sku 的产品:

add_filter('wc_product_has_unique_sku', '__return_false', PHP_INT_MAX);

【问题讨论】:

    标签: php mysql wordpress woocommerce


    【解决方案1】:

    为了通过post_status 过滤查询,我们首先需要在正确的表中查找值,即 wp posts 表,我们可以通过使用 JOIN 语句更新我们的 SQL 查询并匹配相关的多个表中的值,在这种情况下,我们将wp.posts 表中的 product_idwp.postmeta 表中的一个匹配。

    我们使用 JOIN 语句匹配的表:

    • wp.posts $wpdb->posts
    • wp.postmeta $wpdb->wc_product_meta_lookup

    以下是更新后的功能:

    function get_product_min_price_by_sku( $sku ) {
        global $wpdb;
    
        $min_price = $wpdb->get_var(
            $wpdb->prepare(
                "
                SELECT MIN(lookup.min_price) 
                FROM {$wpdb->wc_product_meta_lookup} AS lookup
                INNER JOIN {$wpdb->posts} AS posts ON lookup.product_id = posts.id
                WHERE
                posts.post_type IN ( 'product', 'product_variation' )
                AND posts.post_status = 'publish'
                AND lookup.sku = '%s'
                LIMIT 1
                "
            , $sku)
        );
    
        return $min_price;
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-04
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      相关资源
      最近更新 更多