php WooCommerce基于单个属性设置产品尺寸(宽度和高度)

btqmn9zl  于 2023-01-19  发布在  PHP
关注(0)|答案(1)|浏览(155)

本店销售带边框图片,客户可选择 * 边框材质 * 和 * 尺寸(预设宽度x高度组合列表)。- 边框材质 * 和 * 尺寸 * 均配置为预定义的属性列表。对于尺寸,只有一些非常具体的宽度x高度组合可用。请参见示例:

然后使用选项从所有属性创建变体来让WooCommerce生成这些变体的每一个可能的组合。所以我们最终得到这样的列表:

关键点是,现在我们需要2个标准元字段 * 宽度 * 和 * 高度 *,以某种方式自动基于选定的维度自定义属性填充每个变体。

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

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.

如果发生这种情况,当变量产品被保存/更新时,这就足够了。解决方案可以相当简单,因为维的属性列表是预定义的。
我知道这可能有些特殊,但我认为其他人可能也会对所需的功能感兴趣。
有人能帮忙吗?

ycl3bljg

ycl3bljg1#

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

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);

相关问题