首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Woocommerce中的SQL从特定的产品属性值获取产品ids

使用Woocommerce中的SQL从特定的产品属性值获取产品ids
EN

Stack Overflow用户
提问于 2018-08-19 17:06:32
回答 1查看 2.3K关注 0票数 1

我正在尝试获取产品ids,其中产品属性为pa_color = 'Black'pa_waterproof = 'Yes'。但我还没有成功。

这是我的密码:

代码语言:javascript
复制
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' 
" );

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-19 17:50:26

更新(与您的评论相关)

您可能正在尝试获取变量产品ID,而不是,这不是一回事。

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

在本例中,请尝试以下操作:

代码语言:javascript
复制
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>';

测试和工程

第一个答案.

使用Woocommerce中的SQL从特定的产品属性值中获取产品变异in。

在数据库中,post_meta表中为产品变体注册的产品属性是术语段塞(不是术语名称),所有产品属性meta_key都是以attribute_pa_而不是pa_开头的。

因此,它将是attribute_pa_color = 'black'attribute_pa_waterproof = 'yes'

此外,还需要对wp_posts表进行product_variation post类型的SQL查询,将wp_postmeta表连接2次,以查询每个产品属性。

所以试着:

代码语言:javascript
复制
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>';

测试和工程

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51919984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档