使用商业中的sql从特定的产品属性值获取产品id

utugiqy6  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(401)

我正在尝试获取产品属性所在的产品ID pa_color = 'Black' 以及 pa_waterproof = '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' 
" );

感谢您的帮助

fslejnso

fslejnso1#

更新(与您的评论相关)
您可能正在尝试获取变量product id,而这与此不同。
然后您可以使用普通的产品属性分类法和术语名称值(甚至术语id或术语slug)。
在这种情况下,请尝试以下操作:

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>';

测试和工作
第一个答案。
在商业中使用sql从特定的产品属性值获取产品变体id
在数据库中,产品属性在 post_meta 表是术语段塞(不是术语名)和所有产品属性 meta_key 从…开始 attribute_pa_ 而不是 pa_ .
就这样吧 attribute_pa_color = 'black' 以及 attribute_pa_waterproof = 'yes' 相反。
您还需要对 wp_postsproduct_variation 柱型连接2倍 wp_postmeta 表来查询每个产品属性。
所以试试看:

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>';

测试和工作

相关问题