在Woocommerce中获取所有具有“instock”库存状态的父产品

问题描述 投票:2回答:1

在WooCommerce中,我有以下SQL查询来选择父产品。我想只选择“库存”产品。

这是我的实际SQL查询:

$query=$db->query("select * from wp_posts 
  where post_parent='0' and post_type='product'  and post_status='publish' 
  group by ID 
  limit 10");

我怎样才能选择“有库存”的母产品(但不是全部产品)?

php sql wordpress woocommerce product
1个回答
1
投票

只获得库存状态为“instock”的父产品的正确方法:

global $wpdb;

// The SQL query
$results = $wpdb->get_results( "
    SELECT p.*, pm.meta_value as stock_status
    FROM {$wpdb->prefix}posts as p
    INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
    WHERE p.post_type LIKE 'product'
    AND p.post_status LIKE 'publish'
    AND p.post_parent = '0'
    AND pm.meta_key LIKE '_stock_status'
    AND pm.meta_value LIKE 'instock' 
    GROUP BY p.ID
" );

// Testing output (objects array)
echo '<pre>'; print_r($results); echo '</pre>';

经过测试和工作。


仅获取产品ID:

global $wpdb;

// The SQL query
$results = $wpdb->get_col( "
    SELECT p.ID
    FROM {$wpdb->prefix}posts as p
    INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
    WHERE p.post_type LIKE 'product'
    AND p.post_status LIKE 'publish'
    AND p.post_parent = '0'
    AND pm.meta_key LIKE '_stock_status'
    AND pm.meta_value LIKE 'instock' 
" );

// Testing output (array of IDs)
echo '<pre>'; print_r($results); echo '</pre>';
© www.soinside.com 2019 - 2024. All rights reserved.