Php 在Woocommerce中使用SQL从特定的产品属性值获取产品ID

Php 在Woocommerce中使用SQL从特定的产品属性值获取产品ID,php,mysql,sql,woocommerce,custom-taxonomy,Php,Mysql,Sql,Woocommerce,Custom Taxonomy,我正在尝试获取产品ID,其中产品属性pa\u color='Black'和pa\u防水='Yes'。但我还没有成功 这是我的代码: global $wpdb; $product_id = $wpdb->get_results( " SELECT post_id FROM $wpdb->postmeta WHERE meta_key='pa_color' AND meta_value='Black' AND meta_key='pa_w

我正在尝试获取产品ID,其中产品属性
pa\u color='Black'
pa\u防水='Yes'
。但我还没有成功

这是我的代码:

global $wpdb;

$product_id = $wpdb->get_results( "
    SELECT post_id 
    FROM $wpdb->postmeta 
    WHERE meta_key='pa_color' 
    AND meta_value='Black' 
    AND meta_key='pa_waterproof' 
    AND meta_value='Yes' 
" );
感谢您的帮助

更新(与您的评论相关)

您可能正在尝试获取变量产品ID,而这与不同

然后可以使用普通产品属性分类法术语名称值(甚至术语ID或术语段塞)

在这种情况下,请尝试以下操作:

global $wpdb;

$results = $wpdb->get_col( "
    SELECT p.ID
    FROM {$wpdb->prefix}posts as p
    INNER JOIN {$wpdb->prefix}term_relationships as tr ON p.ID = tr.object_id
    INNER JOIN {$wpdb->prefix}term_taxonomy as tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
    INNER JOIN {$wpdb->prefix}terms as t ON tt.term_id = t.term_id
    INNER JOIN {$wpdb->prefix}term_relationships as tr2 ON p.ID = tr2.object_id
    INNER JOIN {$wpdb->prefix}term_taxonomy as tt2 ON tr2.term_taxonomy_id = tt2.term_taxonomy_id
    INNER JOIN {$wpdb->prefix}terms as t2 ON tt2.term_id = t2.term_id
    WHERE p.post_type LIKE 'product'
    AND p.post_status LIKE 'publish'
    AND tt.taxonomy LIKE 'pa_color'
    AND t.name = 'Black'
    AND tt2.taxonomy LIKE 'pa_waterproof'
    AND t2.name = 'Yes'
");

// Raw output
echo '<pre>'; print_r($results); echo '</pre>';
测试和工作



我使用globals属性,因此我使用pa_xxx。所以我需要pm和pm2的身份证。从wp_帖子中选择p.ID作为p内部连接wp_term_分类法作为p.ID=pm上的pm。???p.ID=pm2.上pm2的内部连接wp_术语。???其中p.post_类型如“产品”和p.post_状态如“发布”和pm.taxonomy如“pa_color”和pm2.slug如“黑色”不使用代码…请使用文字代替解释。
global $wpdb;

$variation_id = $wpdb->get_var( "
    SELECT p.ID FROM {$wpdb->prefix}posts as p
    INNER JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
    INNER JOIN {$wpdb->prefix}postmeta as pm2 ON p.ID = pm2.post_id
    WHERE p.post_type LIKE 'product_variation'
    AND p.post_status LIKE 'publish'
    AND pm.meta_key LIKE 'attribute_pa_color'
    AND pm.meta_value = 'black'
    AND pm2.meta_key LIKE 'attribute_pa_waterproof'
    AND pm2.meta_value = 'yes'
");

// Output
echo $variation_id . '<br>';