php - 按 sku 获取产品 min_price

标签 php mysql wordpress woocommerce

我需要按 sku 获取产品 post_type 和草稿 post_statusmin_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);

最佳答案

为了通过 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;
}

关于php - 按 sku 获取产品 min_price,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58584070/

相关文章:

javascript - TypeError : oTable. fnReloadAjax 不是函数 - DataTables

php - 如何使用 css php 和 html 显示多个文件以供下载?

java - 从 ArrayList 保存到 MySQL 数据库时处理来自另一个类的变量

php - 如果 Doctrine 结果包含日期时间,则会崩溃

php - Woocommerce 中的更改订单备注结帐字段占位符

php - PHP会死在网页开发世界中吗?

php - Aterisk/Freeswitch 通过 Web 应用程序生成 SIP 用户

php - 我在数据库中遇到 "ADD"和 "INSERT"函数的问题

php - 无法将表单提交到数据库

javascript - 如何在 PHP 和 WordPress 中添加配置文件完整性进度条?