我正在尝试获取产品ids,其中产品属性为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'
" );任何帮助都是非常感谢的。
发布于 2018-08-19 17:50:26
更新(与您的评论相关)
您可能正在尝试获取变量产品ID,而不是,这不是一回事。
然后,您可以使用、普通产品属性、分类法、和术语名称、值(甚至术语Ids或术语段塞)。
在本例中,请尝试以下操作:
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次,以查询每个产品属性。
所以试着:
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>';测试和工程
https://stackoverflow.com/questions/51919984
复制相似问题