WordPress WooCommerce取消登出确认并重定向至当前页面
解决WooCommerce登出后重定向到当前页面的问题
我来帮你搞定这个登出重定向的问题!你之前用get_permalink()没生效,核心原因是:当WordPress处理customer-logout这个查询参数时,当前的页面链接其实是登出动作的处理页面,而非用户实际浏览的那个页面,自然没法跳转到正确位置。
这里有个更可靠的方案,用wp_get_referer()获取用户登出前的来源页面,精准跳回他们原来所在的页面:
function iconic_bypass_logout_confirmation() { global $wp; if ( isset( $wp->query_vars['customer-logout'] ) ) { // 获取登出前的来源页面,若为空则 fallback 到首页 $redirect_url = wp_get_referer() ?: wc_get_page_permalink( 'home' ); // 清理URL中的转义字符 $redirect_url = str_replace( '&', '&', $redirect_url ); wp_redirect( $redirect_url ); exit; } } add_action( 'template_redirect', 'iconic_bypass_logout_confirmation' );
方案优势说明
wp_get_referer()会从HTTP请求头里读取用户的上一个页面地址,也就是点击登出按钮前所在的页面,完美匹配你的需求。- 加上
?: wc_get_page_permalink( 'home' )做降级处理,防止直接访问登出链接导致referer为空的场景,保证页面不会出错。
如果是通过自定义模板输出登出按钮,也可以直接在生成链接时指定重定向地址,比如:
echo wp_logout_url( get_permalink() );
不过结合你要绕过登出确认页面的需求,上面的函数方案更适配你的现有代码逻辑。
内容的提问来源于stack exchange,提问作者JeremyWegen
相关产品推荐
相关产品推荐

