我正在try 复制一个产品变体使用PHP从一个现有的产品到另一个. 这样,我可以复制变体,而不必复制确切的产品,并重新输入该产品的其他非变体定制.我不知道为什么没有一个简单的插件来解决这个问题.

这就是我到目前为止所拥有的,我只是不知道如何复制到新产品中,因为这两个产品的ID都是.

if (isset($_POST['submit'])) {
        
        if ($_POST['product_type'] == 'panoramic') {
        $product = wc_get_product( 54721 );

        }
        if ($_POST['product_type'] == 'wide-panoramic') {

                            $product = wc_get_product( 54730 );

        }
        $variations = $product->get_available_variations();
        $new_product = wc_get_product($_POST['product_id_to_fill']);
        $new_product->set_available_variations($variations);
}

(Set_Available_Variables实际上不是一个函数),这就是我遇到困难的原因.

推荐答案

没有一个像set_available_variations这样简单的函数来传输变体,必须为它编写一个定制代码,这里是我在我自己的WordPress项目中使用的代码,你可以根据你的要求进行修改

if (isset($_POST['submit'])) {
    
    $source_product_id = 54721; 
    $target_product_id = $_POST['product_id_to_fill']; // The ID of the product you want to copy variations to

    $source_product = wc_get_product($source_product_id);

    // Check if the source product has variations
    if ($source_product->is_type('variable')) {
        // Get the variations of the source product
        $variations = $source_product->get_children();

        foreach ($variations as $variation_id) {
            $variation = wc_get_product($variation_id);

            // Create a new variation for the target product
            $new_variation = new WC_Product_Variation();
            $new_variation->set_parent_id($target_product_id);

            // Set attributes and other settings from the source variation
            $new_variation->set_attributes($variation->get_attributes());
            $new_variation->set_regular_price($variation->get_regular_price());
            $new_variation->set_sale_price($variation->get_sale_price());
            $new_variation->set_stock_quantity($variation->get_stock_quantity());
            $new_variation->set_weight($variation->get_weight());

            // Save the new variation
            $new_variation->save();
        }
    }
}

Php相关问答推荐

CodeIgniter AJAX表格提交中的CSRF token 再生问题

尽管包含目标日期,但日期范围比较仍有意外输出

如何优化-PHP 7.3.14+Laravel 6

有什么方法可以阻止WordPress主题升级通知吗?

在特定日期之间使用特定的元密钥销售产品

在WooCommerce中添加基于类别的固定费用

用于计算付款费用的WooCommerce管理编辑产品中的自定义复选框

使注册字段UserMeta值对于WooCommerce中的每个用户是唯一的

在PHP 8.2 Gloogle云引擎上加载大型php文件速度缓慢

PHP API - 本地主机中的 SSL 证书问题

如何在 PHP laravel 中将图像的透明背景转换为白色?

Laravel 10 - 使用缓存对 ThrottleRequest 进行限制

如何通过帖子自定义元数据进行查询

URL中包含"&"与DirectoryIterator不兼容

PHP:如何将多列sql查询结果转换成数组

服务器遇到内部错误或配置错误,无法完成您的请求

从 laravel 中的日期类型中删除时间

PHP Remedy API 调用以创建附件无效的条目(使用 Postman Works!)

如何正确使用Flysystem和Local Adapter

如何在 Laravel 9 中判断异常是否可报告?