Чтобы отфильтровать запрос через post_status
, нам сначала нужно найти значение в правильной таблице, которая является таблицей wp posts, мы можем сделать это, обновив наш SQL-запрос с помощью оператора JOIN и сопоставив коррелирующийзначения в нескольких таблицах, в этом случае мы сопоставляем product_id в таблице wp.posts
с значением в таблице wp.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;
}