获取产品变体父产品
get product variation parent product
如何获取变体父产品 ID。
示例:
我有 ID 为 35 的产品
此产品有两种颜色 - 红色 (ID 351)、黑色 (ID 352)
我的代码:
$product = wc_get_product(get_the_ID()); //get_the_ID() is ID 351 and I need this parent ID 35
正确的方法
正如 LoicTheAztec 在评论中所建议的那样,你应该使用这个:
$parent_product = wc_get_product($product->get_parent_id());
你应该通过 get_parent_id()
检索父产品的原因是它会触发钩子 woocommerce_product_variation_get_parent_id
并且它很容易被其他人修改 plugins/themes:
add_filter('woocommerce_product_variation_get_parent_id', function($value, $wc_data) {
// ...
return $value;
}, 10, 2);
这也有效,但不会触发特定于 WC 的挂钩:
$parent_product_id = wp_get_post_parent_id($product->get_id());
$parent_product = wc_get_product($parent_product_id);
旧答案
注意:这在循环外不起作用,如果您尝试将 get_the_ID()
替换为 $product->id
,它将始终 return 0
- 在那个case 使用 $product->get_id()
如上例所示。
使用 wp_get_post_parent_id
,因为变体将其父项作为产品本身。
示例:
$variation_id = get_the_ID();
$product_id = wp_get_post_parent_id($variation_id);
从不使用 WC_Product::get_parent():
$parent_product = $product->get_parent(); // will always return '0
如何获取变体父产品 ID。
示例: 我有 ID 为 35 的产品 此产品有两种颜色 - 红色 (ID 351)、黑色 (ID 352)
我的代码:
$product = wc_get_product(get_the_ID()); //get_the_ID() is ID 351 and I need this parent ID 35
正确的方法
正如 LoicTheAztec 在评论中所建议的那样,你应该使用这个:
$parent_product = wc_get_product($product->get_parent_id());
你应该通过 get_parent_id()
检索父产品的原因是它会触发钩子 woocommerce_product_variation_get_parent_id
并且它很容易被其他人修改 plugins/themes:
add_filter('woocommerce_product_variation_get_parent_id', function($value, $wc_data) {
// ...
return $value;
}, 10, 2);
这也有效,但不会触发特定于 WC 的挂钩:
$parent_product_id = wp_get_post_parent_id($product->get_id());
$parent_product = wc_get_product($parent_product_id);
旧答案
注意:这在循环外不起作用,如果您尝试将 get_the_ID()
替换为 $product->id
,它将始终 return 0
- 在那个case 使用 $product->get_id()
如上例所示。
使用 wp_get_post_parent_id
,因为变体将其父项作为产品本身。
示例:
$variation_id = get_the_ID();
$product_id = wp_get_post_parent_id($variation_id);
从不使用 WC_Product::get_parent():
$parent_product = $product->get_parent(); // will always return '0