WooCommerce结账无限加载与登录重定向冲突问题求助
解决WooCommerce结账无限加载问题并保留登录重定向功能
你的问题根源在于:代码绑定的wp动作会在**所有请求(包括Ajax异步请求)**中触发。WooCommerce结账页面的核心操作(比如更新购物车、计算税费/运费)都依赖Ajax请求,当这些请求触发你的重定向逻辑时,会打断Ajax的正常响应,导致页面出现无限加载的异常。
只需要给代码加上两个关键判断,排除Ajax请求和后台页面的干扰即可:
function add_login_check() { // 跳过Ajax请求和后台操作,避免干扰正常功能 if (wp_doing_ajax() || is_admin()) { return; } if (is_user_logged_in() && is_page(416)) { // 用wp_safe_redirect更安全,会自动验证URL合法性 wp_safe_redirect('https://mywebsite.com/abcd/'); exit; } } add_action('wp', 'add_login_check');
关键细节说明:
wp_doing_ajax():WordPress内置函数,专门用来检测当前是否是Ajax请求。如果是Ajax请求,直接跳过重定向逻辑,确保结账页面的异步操作能正常完成。is_admin():保证这段逻辑只在网站前端执行,不会影响后台的正常操作流程。wp_safe_redirect():替代原代码的wp_redirect(),它会自动验证目标URL是否合法,避免潜在的安全风险,是更推荐的用法。
这样修改后,既完整保留了已登录用户访问登录页时自动跳转到会员区的需求,又彻底解决了结账页面无限加载的问题。
内容的提问来源于stack exchange,提问作者user3833376
相关产品推荐
相关产品推荐

