提问人:Rip 提问时间:7/5/2023 最后编辑:LoicTheAztecRip 更新时间:7/5/2023 访问量:124
WooCommerce 以编程方式复制产品,更新一些属性
WooCommerce duplicate product programatically, updating some properties
问:
我正在尝试复制一个可变产品并更新一些属性。
当我运行此功能时,产品状态为“草稿”,库存列为“缺货”,而所有变体都具有正确的正常价格和库存数量以及管理库存?已选中。
我尝试在使用 woocommerce_product_duplicate_before_save 保存产品之前设置这些属性,但此钩子执行了多次,一次用于父产品,一次用于每个变体。
我还尝试用WC_Product_Query选择最近创建的产品。选择了正确的产品,但在执行设置的方法之前和之后,属性保持不变。
如何在 WooCommerce 中更新重复变量产品的属性?
function test_dupproduct(){
$product = wc_get_product( '1000' );
//woocommerce_product_duplicate_before_save
$wc_adp = new WC_Admin_Duplicate_Product;
$dupproduct = $wc_adp->product_duplicate( wc_get_product( $product ) );
$dupproduct = $query->get_products();
$dupproduct->set_sku( '99999' );
$dupproduct->set_name( 'Product Name' );
$dupproduct->set_short_description('Product Short Description');
$dupproduct->set_status( 'Published' );
}
答:
1赞
LoicTheAztec
7/5/2023
#1
更新
缺少以下内容:
- 在所有 setter 方法之前调用 product 对象
- 设置与产品名称对应的产品 slug
- 设置正确的产品状态
- 添加 End,神奇的
WC_Product
save()
方法
我删除了不必要的:
wc_get_product( $product )
作为 product_duplicate() 方法中的参数$dupproduct = $query->get_products();
工作功能(钩在钩子中仅用于测试:template_redirect
add_action('template_redirect', 'test_dup_product');
function test_dup_product(){
$product = wc_get_product( 1000 );
$wc_adp = new WC_Admin_Duplicate_Product;
$dup_product = $wc_adp->product_duplicate( $product );
$dup_product = wc_get_product( $dup_product->get_id() ); // recall the WC_Product Object
$dup_product->set_sku( '555555' );
$dup_product->set_name( 'Product Name' );
$dup_product->set_slug( sanitize_title('Product Name') ); // slug
$dup_product->set_short_description('Product Short Description');
$dup_product->set_status( 'publish' );
$dup_product->save(); // Save
}
现在,产品已与所有额外数据一起保存并发布。
评论
0赞
Rip
7/5/2023
我以为这样可以解决问题,但重复的产品属性保持不变,产品状态为“草稿”,库存被列为“缺货”,而变体属性似乎正确重复。
0赞
Rip
7/5/2023
我发现了我的一次编辑遗留下来的错别字。我删除了“$dupproduct = $query->get_products();”行,但结果没有变化。
1赞
LoicTheAztec
7/5/2023
我已经能够让它工作。在这里看我的更新。如果此答案有效并回答您的问题,请参阅:当有人回答我的问题时,我该怎么办?
0赞
Rip
7/5/2023
我将set_status从“已发布”更改为“发布”,现在变量产品似乎正在正确更新。谢谢!
评论