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

WooCommerce支付后根据购买的多个商品实现自定义重定向

WooCommerce结账后多商品组匹配跳转实现代码

你原有单商品跳转逻辑无法直接支持多ID匹配,核心问题是PHP原生相等判断不支持逗号分隔多值的写法,同时原代码缺少跳转终止、订单状态校验逻辑,容易出现跳转失效、重复跳转的问题。以下是可直接运行的完整代码:

add_action( 'woocommerce_thankyou', 'redirect_product_based', 1 ); 
function redirect_product_based ( $order_id ){
    // 无效订单直接终止逻辑
    if( !$order = wc_get_order( $order_id ) ) return;

    // 仅已支付、待支付订单触发跳转,取消/退款/失败订单不跳转
    if( !$order->is_paid() && !$order->has_status('pending') ) return;

    // 配置跳转规则:排在越靠前的规则,匹配优先级越高
    $redirect_rules = [
        // 格式:'目标跳转地址' => [该组需要匹配的所有商品ID]
        'https://第一组商品对应的跳转地址' => [331, 332, 333],
        'https://第二组商品对应的跳转地址' => [35, 36, 37],
        // 按照上面的格式可以无限新增规则组
    ];

    // 提取订单内所有商品ID,同时兼容可变商品的主商品ID和变体ID
    $order_product_ids = [];
    foreach( $order->get_items() as $item ) {
        $order_product_ids[] = $item->get_product_id();
        $order_product_ids[] = $item->get_variation_id();
    }
    $order_product_ids = array_filter(array_unique($order_product_ids));

    // 按优先级顺序匹配规则,命中第一个符合条件的规则就执行跳转
    foreach( $redirect_rules as $target_url => $match_product_ids ) {
        if( array_intersect($match_product_ids, $order_product_ids) ) {
            wp_redirect( $target_url );
            exit; // 必须保留,否则部分环境下跳转不会生效
        }
    }
}

使用说明

  • 修改规则时只需要调整$redirect_rules数组里的跳转地址和对应商品ID即可,不需要改动其他逻辑
  • 如果订单同时包含多组规则内的商品,会优先跳转到$redirect_rules里排在最前面的规则对应地址
  • 代码默认兼容可变商品,不需要单独配置变体ID就能正常匹配主商品,如果你需要给特定变体单独设置跳转,直接把变体ID加到对应规则的ID数组就行
  • 代码可以直接放到当前主题的functions.php文件,或者WooCommerce专用的代码片段插件中使用,不需要额外依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:09:19