如何通过分类术语获取产品变体 ID?
例如,如果我有两个分类法及其术语:
1) Size: medium, large
2) Color: blue, green
以及我的产品变体:
Variation id 1: medium > blue
Variation id 2: medium > green
Variation id 3: large > blue
Variation id 4: large > green
我想获取此术语组合的变体 ID medium > green
。
最佳答案
以下函数使用非常简单的 SQL 查询从定义的产品属性“颜色”和“尺寸”术语 block 的可变产品中获取变体 ID:
function get_product_variation_id( $size, $color, $product_id = 0 ) {
global $wpdb;
if ( $product_id == 0 )
$product_id = get_the_id();
return $wpdb->get_var( "
SELECT p.ID
FROM {$wpdb->prefix}posts as p
JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
JOIN {$wpdb->prefix}postmeta as pm2 ON p.ID = pm2.post_id
WHERE pm.meta_key = 'attribute_pa_color'
AND pm.meta_value LIKE '$color'
AND pm2.meta_key = 'attribute_pa_size'
AND pm2.meta_value LIKE '$size'
AND p.post_parent = $product_id
" );
}
代码进入事件子主题(或事件主题)的 function.php 文件。经过测试并有效。
用法 (2 个例子):
来自定义的变量产品 ID(其中
746
是父变量产品 ID):$variation_id = get_product_variation_id( 'large', 'blue', 746 );
在可变产品单品页面(无需定义可变产品ID):
$variation_id = get_product_variation_id( 'large', 'blue' );
关于php - 通过 Woocommerce 中的产品属性 slug 值对获取产品变体 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52105913/