当产品保存在 WooCommerce 后端时,以编程方式为库存状态分配标签
Assign a tag programatically for stock status when product is saved in WooCommerce backend
我创建了 3 个标签 1.
- 延期交货(编号 111)
- 有货 (id 112),
- 缺货(编号 113)
我希望根据可用性自动分配这些标签。
如果我能够完成这项工作,我将使用 woocommerce_admin_process_product_object
、woocommerce_product_quick_edit_save
、woocommerce_product_set_stock
、woocommerce_variation_set_stock
来捕捉库存的可能情况状态变化。
以下是我尝试过的方法,但它给了我一个致命错误。如果我不使用 if 条件,则会分配标签,但它不符合我的 objective。有什么建议吗?
add_action( 'woocommerce_admin_process_product_object', 'mycode_woocommerce_backorder_tag', 10, 2 );
function mycode_woocommerce_backorder_tag ($wc_get_product, $product) {
if ($product->managing_stock() && $product->is_on_backorder(1)) {
$wc_get_product->set_tag_ids(array(111));
$wc_get_product->save();
//wp_set_object_terms ($post_id, 'onbackorder', 'product_tag');
}
}
woocommerce_admin_process_product_object
钩子只有 1 个参数,即 $product
$product->save();
也不是必需的,因为这是自动发生的
复制自 admin/meta-boxes/class-wc-meta-box-product-data。php
/**
* Set props before save.
*
* @since 3.0.0
*/
do_action( 'woocommerce_admin_process_product_object', $product );
$product->save();
所以要回答你的问题,你会得到:
// When product is saved in WooCommerce backend
function action_woocommerce_admin_process_product_object( $product ) {
// managing_stock() - returns whether or not the product is stock managed.
// on_backorder() – check if a product is on backorder.
if ( $product->managing_stock() && $product->is_on_backorder(1) ) {
// Product set tag ids
$product->set_tag_ids( array( 111 ) );
}
}
add_action( 'woocommerce_admin_process_product_object', 'action_woocommerce_admin_process_product_object', 10, 1 );
我创建了 3 个标签 1.
- 延期交货(编号 111)
- 有货 (id 112),
- 缺货(编号 113)
我希望根据可用性自动分配这些标签。
如果我能够完成这项工作,我将使用 woocommerce_admin_process_product_object
、woocommerce_product_quick_edit_save
、woocommerce_product_set_stock
、woocommerce_variation_set_stock
来捕捉库存的可能情况状态变化。
以下是我尝试过的方法,但它给了我一个致命错误。如果我不使用 if 条件,则会分配标签,但它不符合我的 objective。有什么建议吗?
add_action( 'woocommerce_admin_process_product_object', 'mycode_woocommerce_backorder_tag', 10, 2 );
function mycode_woocommerce_backorder_tag ($wc_get_product, $product) {
if ($product->managing_stock() && $product->is_on_backorder(1)) {
$wc_get_product->set_tag_ids(array(111));
$wc_get_product->save();
//wp_set_object_terms ($post_id, 'onbackorder', 'product_tag');
}
}
woocommerce_admin_process_product_object
钩子只有 1 个参数,即 $product
$product->save();
也不是必需的,因为这是自动发生的
复制自 admin/meta-boxes/class-wc-meta-box-product-data。php
/**
* Set props before save.
*
* @since 3.0.0
*/
do_action( 'woocommerce_admin_process_product_object', $product );
$product->save();
所以要回答你的问题,你会得到:
// When product is saved in WooCommerce backend
function action_woocommerce_admin_process_product_object( $product ) {
// managing_stock() - returns whether or not the product is stock managed.
// on_backorder() – check if a product is on backorder.
if ( $product->managing_stock() && $product->is_on_backorder(1) ) {
// Product set tag ids
$product->set_tag_ids( array( 111 ) );
}
}
add_action( 'woocommerce_admin_process_product_object', 'action_woocommerce_admin_process_product_object', 10, 1 );