WooCommerce 根据单个属性设置产品尺寸(宽度和高度)

WooCommerce set product dimensions (width & height) based on single attribute

商店出售镶框图片。客户可以选择 框架 material 尺寸(预设宽度 x 高度组合列表)frame materialdimensions 都配置为预定义的属性列表。对于尺寸,只有一些非常具体的宽度 x 高度组合可用。参见示例:

然后选项 Create variations from all attributes 用于让 WooCommerce 生成这些变体的所有可能组合。所以我们最终得到这样的列表:

关键点是,现在我们需要 2 个标准元字段 Width & Height 来填充每个变体方式 自动 基于所选的维度自定义属性。像这样:

所以基本上(没有真正的代码):

if (selected Dimensions Attribute is "30 x 20 cm") set meta $width = 30 & meta $height = 20 
if (selected Dimensions Attribute is "45 x 30 cm") set meta $width = 45 & meta $height = 30 
if (selected Dimensions Attribute is "60 x 40 cm") set meta $width = 60 & meta $height = 40 
etc.

当可变产品为saved/updated时,如果发生这种情况就足够了。解决方案可以非常简单,因为维度的属性列表是预定义的。

我知道这可能有点特殊,但我认为其他人可能也会对所需的功能感兴趣。

有人可以帮忙吗?

以下代码在保存变体时填充宽度和高度:

add_action("woocommerce_before_product_object_save", function ($product, $data_store) {

    if ("variation" !== $product->get_type()) {
        return;
    }


    $abmessung = $product->get_attribute("abmessung-3-2"); // use the text "60 x 40 cm"
    $parse = explode(" ", $abmessung);

    $product->set_props([
        "width" => $parse[0],
        "height" => $parse[2],
    ]);


}, 10, 2);