我需要通过sku获得产品min_price
和草稿post_type
的最小值post_status
。
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);
答案 0 :(得分:1)
为了通过post_status
过滤查询,我们首先需要在正确的表(即wp posts表)中查找值,我们可以通过使用JOIN语句更新SQL查询并进行匹配来做到这一点多个表中的相关值,在这种情况下,我们将wp.posts
表中的 product_id 与wp.postmeta
表中的值进行匹配。
我们使用JOIN语句匹配的表:
$wpdb->posts
$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;
}