获取产品变体父产品

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