Php 按sku获取产品最低价格

Php 按sku获取产品最低价格,php,mysql,wordpress,woocommerce,Php,Mysql,Wordpress,Woocommerce,对于产品post\u类型和草稿post\u状态,我需要按sku获取min\u价格的最小值 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} WHE

对于产品
post\u类型
和草稿
post\u状态
,我需要按sku获取
min\u价格
的最小值

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;
}
如何将post状态条件添加到此函数

AND posts.post_status = 'draft'
顺便说一句,我允许使用相同sku的多个产品:

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

为了通过
post\u status
过滤查询,我们首先需要在正确的表(即wp posts表)中查找值,我们可以使用JOIN语句更新SQL查询并匹配多个表中的相关值,在这种情况下,我们将
wp.posts
表中的产品标识与
wp.postmeta
表中的产品标识进行匹配

使用JOIN语句匹配的表:

  • wp.posts
    $wpdb->posts
  • wp.postmeta
    $wpdb->wc\u产品\u元\u查找
以下是更新的功能:

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;
}