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

如何针对特定商品分类实现Add to cart跳转WooCommerce结账页?

WooCommerce 指定商品分类跳过购物车直接跳转结账页解决方案

问题原因

你之前的代码无效,核心原因有两个:

  1. has_term() 函数默认依赖全局 $post 对象,但在主题 functions.php 的全局作用域中,没有对应要添加购物车的商品上下文,无法正确识别目标商品,自然判断失效。
  2. 直接在全局作用域通过 if 条件添加 add_filter,只会在主题加载时执行一次,不会在用户点击「加入购物车」时动态判断当前商品分类,逻辑时机完全错误。

正确实现代码

修改跳转逻辑,在 add_to_cart_redirect 过滤器的回调函数内部,动态获取当前添加的商品ID并判断分类:

function skip_cart_for_specific_category( $redirect_url ) {
    // 获取当前点击加入购物车的商品ID
    $product_id = isset( $_REQUEST['add-to-cart'] ) ? absint( $_REQUEST['add-to-cart'] ) : 0;

    // 判断商品是否属于指定分类(这里替换成你的分类slug或ID)
    if ( $product_id && has_term( 'test', 'product_cat', $product_id ) ) {
        // 跳转到结账页
        return wc_get_checkout_url();
    }

    // 非目标分类商品,返回默认跳转地址(购物车页)
    return $redirect_url;
}
add_filter( 'add_to_cart_redirect', 'skip_cart_for_specific_category' );

代码说明

  • 通过 $_REQUEST['add-to-cart'] 获取用户当前点击加入购物车的商品ID,确保判断的是正确的目标商品。
  • has_term() 第三个参数传入商品ID,明确指定要检查的商品,避免全局上下文缺失的问题。
  • 非目标分类商品保持原有跳转逻辑,不影响其他商品的购物流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:01:08