WordPress支付网关插件中URL重定向后是否需要添加exit()?
问题解答
你注释标注的那行exit()需要删除,当前位置不需要加任何退出逻辑
原因说明:
- 当前if代码块仅完成了阿拉伯语场景下的多语言重定向链接修正逻辑,还没有执行真正的重定向动作,这时候加
exit()会直接终止程序运行,后续的重定向代码完全无法触发,用户只会拿到空白页面,不会跳转到你指定的支付失败页。 - 你见过的加
exit()的场景,都是在执行完重定向函数(比如WordPress生态下的wp_redirect())之后追加的,目的是避免重定向header发送之后,程序继续执行后续不必要的业务逻辑,引发额外的错误或者数据异常。
补充提示:
你的代码里还有一个小语法隐患:if ( $lang_code === ar )中的ar需要加单引号变为'ar',否则PHP会将其识别为未定义常量,触发报错,也会导致多语言判断逻辑失效。
合规代码示例:
else { // 支付失败逻辑 $this->msg['class'] = 'error'; $this->msg['message'] = __( "Your Transaction Has Failed Due to Some Technical Error. Please Try Again.<br/><br/>", 'toBeTranslatd'); $order->update_status('failed'); $order->add_order_note('Failed'); $order->add_order_note($this->msg['message']); $redirect_url = home_url( '/payment-faild/' ); $lang_code = get_post_meta( $order_id, 'wpml_language', true ); if ( $lang_code === 'ar' ) { $redirect_url = apply_filters( 'wpml_permalink', $redirect_url, $lang_code ); // 此处无需加exit } // 所有重定向链接计算完成后执行重定向 wp_redirect($redirect_url); // 重定向完成后必须加exit终止后续逻辑 exit(); }
内容的提问来源于stack exchange,提问作者Bassam Radi
相关产品推荐
相关产品推荐

