在 Woocommerce 中,我试图找到一种类似于 WC_Product
方法 set_name()
或 set_status()
的方法,例如,设置产品类型,如简单或变体。
实际上我是这样使用 WC_Product
对象的:
$product = new WC_Product;
$product->set_name($data['product']['title']);
$product->set_status('pending');
$product->save();
如果用户选中“简单产品”或“可变产品”,我如何设置产品类型?
感谢任何帮助。
最佳答案
WC_Product
类没有类型方法。产品类型由产品子类管理……
您将首先获得所需产品类型的 WC_Product
对象的空实例:
- 变量类型:
$product = new WC_Product_Variable();
- 分组类型:
$product = new WC_Product_Grouped();
- 外部类型:
$product = new WC_Product_External();
- 简单类型:
$product = new WC_Product_Simple();
然后您可以在所选产品类型上使用任何 WC_product
方法或在 $product
对象上使用相应的 Product 子类方法:
$product->set_name($data['product']['title']);
$product->set_status('publish');
然后您将保存产品(它会选择性地返回产品 ID):
$product_id = $product->save();
See: Create programmatically a product using CRUD methods in Woocommerce 3
产品变体
对于产品变体,它是不同的,因为它们始终是现有可变产品的一部分……
// Get the Variable product object (parent) from an existing product ID
$product = wc_get_product( $product_id );
// Define the variation data
$variation_post = array(
'post_title' => $product->get_title(),
'post_name' => 'product-'.$product_id.'-variation',
'post_status' => 'publish',
'post_parent' => $product_id,
'post_type' => 'product_variation',
'guid' => $product->get_permalink()
);
// Creating the product variation
$variation_id = wp_insert_post( $variation_post );
// Get an instance of the product variation Object
$variation = new WC_Product_Variation( $variation_id );
// Set existing product attribute values (defined in the variable product)
$variation->update_meta_data( 'attribute_'.'pa_color', 'blue' );
$variation->update_meta_data( 'attribute_'.'pa_size', 'xxl' );
# You can use any WC_Product allowed setter methods on the $variation object
$variation->set_regular_price( 25 );
$variation->set_price( 25 );
$variation->save();
查看那 2 个相关主题:
关于php - 在 Woocommerce 3 中以编程方式创建产品时设置产品类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53587200/