中更改现有产品的产品类型

中更改现有产品的产品类型

本文介绍了在 WooCommerce 3+ 中更改现有产品的产品类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在创建后使用我的子主题中的功能更改 woocommerce 产品类型,我已经尝试过:

I need to change the woocommerce product type after creation with a function in my child theme i have tried this :

 wp_set_object_terms($product_id, 'variable', 'product_type', true);

我的方法在创建后触发了但是类型还是没变?

My method is triggered after creation but the type still unchanged ?

推荐答案

从 WooCommerce 3 开始,要从现有产品更改产品类型,您可以使用以下内容:

Since WooCommerce 3, to change the product type from an existing product, you can use the following:

/**
 * Change product type.
 *
 * @param int     $product_id       - The product id.
 * @param string  $new_product_type - The new product type
 */

// Get the correct product classname from the new product type
$product_classname = WC_Product_Factory::get_product_classname( $product_id, $new_product_type );

// Get the new product object from the correct classname
$new_product       = new $product_classname( $product_id );

// Save product to database and sync caches
$new_product->save();

经过测试并在所有情况下都有效,因为 wp_set_object_terms() 由于多种原因无法正常工作,请参阅 这个较旧的相关线程.新产品将保留其所有现有数据.

Tested and works in all cases, because wp_set_object_terms(), doesn't works well for many reasons, see this older related thread. The new product will keep all its existing data.

有用参考:WC_Meta_Box_Product_Data save() 方法

Useful reference: WC_Meta_Box_Product_Data save() method

这篇关于在 WooCommerce 3+ 中更改现有产品的产品类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-01 22:51