WooCommerce:如何为库存仅剩1件的商品自动添加分类?
WooCommerce自动添加库存/促销分类解决方案
原代码的作用是修改「促销」分类的查询逻辑,让该分类自动显示所有促销商品。但你需要的是自动给商品分配分类(而非仅修改查询结果),因此需要新增以下代码来实现需求:
实现逻辑说明
我们将借助商品保存、库存更新的钩子,实时检查商品的库存状态与促销状态,自动添加对应分类:
- 当商品库存仅剩1件时,添加「库存紧张」分类(需先在后台创建该分类,替换代码中的分类slug)
- 当商品库存仅剩1件且处于促销状态时,添加「最后机会促销」分类(同样需先在后台创建该分类)
完整代码
/** * 自动为库存仅剩1件的商品添加分类,为库存1件的促销商品添加「最后机会促销」分类 */ // 钩子:商品保存或库存更新时触发 add_action( 'woocommerce_update_product', 'auto_assign_stock_sale_categories' ); add_action( 'woocommerce_product_set_stock', 'auto_assign_stock_sale_categories' ); function auto_assign_stock_sale_categories( $product_id ) { // 获取商品对象 $product = wc_get_product( $product_id ); if ( ! $product ) return; // 定义需要使用的分类slug(请替换为你后台创建的分类slug) $low_stock_cat_slug = 'low-stock-1'; // 库存仅剩1件的分类slug $last_chance_cat_slug = 'last-chance-sale'; // 最后机会促销分类slug // 获取当前商品的库存数量 $stock_qty = $product->get_stock_quantity(); // 判断是否为促销商品 $is_on_sale = $product->is_on_sale(); // 先移除旧的分类(避免重复添加) wp_remove_object_terms( $product_id, $low_stock_cat_slug, 'product_cat' ); wp_remove_object_terms( $product_id, $last_chance_cat_slug, 'product_cat' ); // 条件1:库存仅剩1件 if ( $stock_qty === 1 ) { // 添加库存紧张分类 wp_add_object_terms( $product_id, $low_stock_cat_slug, 'product_cat' ); // 条件2:库存1件且是促销商品 if ( $is_on_sale ) { // 添加最后机会促销分类 wp_add_object_terms( $product_id, $last_chance_cat_slug, 'product_cat' ); } } }
使用说明
- 先在WooCommerce后台的「产品 > 分类」中创建两个分类:
- 分类1:例如名称「库存紧张」,slug设置为
low-stock-1(或自定义,需和代码中一致) - 分类2:例如名称「最后机会促销」,slug设置为
last-chance-sale(或自定义,需和代码中一致)
- 分类1:例如名称「库存紧张」,slug设置为
- 将上述代码添加到你的主题
functions.php文件中,或使用自定义代码插件(如Code Snippets) - 当商品库存变为1件时,系统会自动添加对应分类;当库存变化(如补货或售罄)时,会自动移除这些分类
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

