WooCommerce:按条款获取产品变化?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (27)

如何通过分类条款获取产品变体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

提问于
用户回答回答于

我没有测试,但这应该在那里或准备发货。

function get_variation_by($size, $color) {
  $args = array(
    'post_type' => 'product',
    'numberposts' => -1,
  );
  $product_posts = get_posts( $args );

  foreach ( $product_posts as $single_product_post ) {
    $_product = wc_get_product( $single_product_post->ID );
    if ($product_s->product_type != 'variable') continue;

    $avail_vars = $_product->get_available_variations();
    foreach ($avail_vars as $v)
      if ($v["attributes"]["attribute_pa_size"] == $size
          && $v["attributes"]["attribute_pa_color"] == $color)
        return $v;
  }
  return null;
}

$variation = get_variation_by( "large", "green");
$variation_id = $variation->variation_id;

如果您已经拥有变量产品的product_id,则可以像这样简化:

function get_variation_by($variable_product_id, size, $color) {
  $var_prod = wc_get_product( $variable_product_id );        
  $avail_vars = $var_prod->get_available_variations();

  foreach ($avail_vars as $v)
    if ($v["attributes"]["attribute_pa_size"] == $size
        && $v["attributes"]["attribute_pa_color"] == $color)
      return $v;

  return null;
}

所属标签

可能回答问题的人

  • uncle_light

    5 粉丝518 提问8 回答
  • 嗨喽你好

    7 粉丝480 提问8 回答
  • 人生的旅途

    10 粉丝484 提问7 回答
  • 无聊至极

    4 粉丝504 提问6 回答

扫码关注云+社区

领取腾讯云代金券