在 WooCommerce 中库存变化时自动更改产品标签

问题描述 投票:0回答:1
我有一家 WooCommerce 商店,我每天都会查看电子邮件,其中列出了所有库存不足的产品。

因此,如果我看到其中一种产品,我会登录,找到该产品,并将标签更改为“最后机会”,这会提醒我的用户该商品几乎缺货,因此您应该在它消失之前购买它。

这很好,但这是一项多余的任务,我希望可以自动化。

我可以创建一个 webhook 来自动将此标签应用于库存数量不足的任何产品吗?看起来它应该是 WooCommerce 的原生功能,但我没有看到任何地方可以做到这一点。

伪代码:

IF PRODUCT QUANTITY = 'low' ADD TAG 'Last Chance' TO PRODUCT
    
php wordpress woocommerce product hook-woocommerce
1个回答
1
投票
库存变化事件、触发电子邮件和添加订单备注后的可用挂钩位于

https://github.com/woocommerce/woocommerce/blob/master/includes/wc-stock-functions.php

我们在哪里找到包含一些动作钩子的函数

wc_trigger_stock_change_notifications()



可用挂钩:

// No stock function action_woocommerce_no_stock( $wc_get_product ) { // make action magic happen here... } add_action( 'woocommerce_no_stock', 'action_woocommerce_no_stock', 10, 1 );
// Low stock
function action_woocommerce_low_stock( $wc_get_product ) { 
    // make action magic happen here... 
}
add_action( 'woocommerce_low_stock', 'action_woocommerce_low_stock', 10, 1 );
// On backorder
function action_woocommerce_product_on_backorder( $array ) { 
    // make action magic happen here... 
}
add_action( 'woocommerce_product_on_backorder', 'action_woocommerce_product_on_backorder', 10, 1 );



因此,对于您想要的内容,您可以使用 3.0 中的

woocommerce_low_stock

CRUD 对象

function action_woocommerce_low_stock( $wc_get_product ) { // Product set tag id(s), multiple IDs can be added, separated by a comma $new_tag_ids = array( 'YOUR TAG ID', 'ANOTHER TAG ID' ); $wc_get_product->set_tag_ids( $new_tag_ids ); // OPTIONAL: Set category ids //$wc_get_product->set_category_ids( array( 39, 2 ) ); // Save $wc_get_product->save(); } add_action( 'woocommerce_low_stock', 'action_woocommerce_low_stock', 10, 1 );


注) 如果您不仅想为产品添加新标签,还想保留现有标签。

替换:

// Product set tag id(s), multiple IDs can be added, separated by a comma $new_tag_ids = array( 'YOUR TAG ID', 'ANOTHER TAG ID' ); $wc_get_product->set_tag_ids( $new_tag_ids );

与:

// Get current tag id(s) $current_tag_ids = $wc_get_product->get_tag_ids(); // Product set tag id(s), multiple IDs can be added, separated by a comma $new_tag_ids = array( 'YOUR TAG ID', 'ANOTHER TAG ID' ); $wc_get_product->set_tag_ids( array_unique( array_merge( $current_tag_ids, $new_tag_ids ), SORT_REGULAR ) );
    
© www.soinside.com 2019 - 2024. All rights reserved.