You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce库存变动时自动修改产品标签的实现方案

WooCommerce自动给低库存产品添加「Last Chance」标签解决方案

我运营着一家WooCommerce店铺,目前每日需查看库存不足产品的邮件通知,手动登录后台找到对应产品,添加“Last Chance”标签以提醒用户该商品库存即将耗尽,建议尽快购买。此重复工作希望实现自动化,请问能否创建webhook,在产品库存降至低库存阈值时自动添加该标签?WooCommerce似乎应具备原生功能,但未找到对应设置。伪代码如下:

IF PRODUCT QUANTITY = 'low'
    ADD TAG 'Last Chance' TO PRODUCT

WooCommerce确实没有原生的「低库存自动加标签」设置,但无需使用webhook,通过自定义PHP代码利用其内置钩子就能直接实现自动化,效率更高。

实现方案

1. 添加自定义代码

将以下代码添加到子主题的functions.php文件,或使用自定义代码插件(如Code Snippets)来管理,避免主题更新丢失代码:

// 监听产品及变体库存更新事件
add_action( 'woocommerce_product_set_stock', 'auto_manage_last_chance_tag', 10, 1 );
add_action( 'woocommerce_variation_set_stock', 'auto_manage_last_chance_tag', 10, 1 );

function auto_manage_last_chance_tag( $product ) {
    // 获取后台设置的低库存阈值,默认设为2
    $low_stock_threshold = get_option( 'woocommerce_notify_low_stock_amount', 2 );
    
    // 获取当前产品库存数量
    $current_stock = $product->get_stock_quantity();
    
    // 定义标签的别名和名称
    $tag_slug = 'last-chance';
    $tag_name = 'Last Chance';

    // 检查标签是否存在,不存在则自动创建
    if ( ! term_exists( $tag_slug, 'product_tag' ) ) {
        wp_insert_term(
            $tag_name,
            'product_tag',
            array( 'slug' => $tag_slug )
        );
    }

    // 根据库存状态添加/移除标签
    if ( $current_stock <= $low_stock_threshold && $current_stock > 0 ) {
        wp_set_object_terms( $product->get_id(), $tag_slug, 'product_tag', true );
    } else {
        wp_remove_object_terms( $product->get_id(), $tag_slug, 'product_tag' );
    }
}

2. 配置低库存阈值

登录WooCommerce后台,进入「WooCommerce > 设置 > 产品 > 库存」,设置「低库存通知数量」为你希望触发标签的阈值(比如2),代码会自动读取这个设置值。

3. 验证功能

  • 修改任意产品的库存数量,使其低于设置的阈值,刷新产品页面即可看到「Last Chance」标签自动添加
  • 将库存恢复到阈值以上,标签会自动移除

注意事项

  • 代码支持简单产品和可变产品的变体库存监控
  • 如果需要仅针对特定分类的产品生效,可以在函数中添加分类判断逻辑
  • 避免直接修改父主题的functions.php,建议使用子主题或代码插件管理自定义代码

内容的提问来源于stack exchange,提问作者xar86413

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:50:07