wc_logout_url 没有确认并重定向到 Wordpress WooCommerce 中的当前页面
Posted
技术标签:
【中文标题】wc_logout_url 没有确认并重定向到 Wordpress WooCommerce 中的当前页面【英文标题】:wc_logout_url without confirmation AND redirect to current page in Wordpress WooCommerce 【发布时间】:2018-11-08 11:45:29 【问题描述】:我想将退出的用户重定向到同一页面。
例如:用户在类别页面上并且正在注销。注销后,我希望用户仍在该特定类别页面(或用户所在的任何页面)上。现在它将用户重定向到主页。
这是我正在使用的代码:
function iconic_bypass_logout_confirmation()
global $wp;
if ( isset( $wp->query_vars['customer-logout'] ) )
wp_redirect( str_replace( '&', '&', wp_logout_url( wc_get_page_permalink( 'home' ) ) ) );
exit;
add_action( 'template_redirect', 'iconic_bypass_logout_confirmation' );
我尝试用下面的代码更改第 5 行,但没有结果。
wp_redirect( str_replace( '&', '&', wp_logout_url( get_permalink() ) ) );
【问题讨论】:
【参考方案1】:你可以试试这个并设置你自己的重定向网址
<?php
//wordpress logout
add_action('check_admin_referer', 'logout_without_confirm', 10, 2);
function logout_without_confirm($action, $result)
/**
* Allow logout without confirmation
*/
if ($action == "log-out" && !isset($_GET['_wpnonce']))
$redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] :
"https://example.com";
$location = str_replace('&', '&', wp_logout_url($redirect_to));
header("Location: $location");
die;
【讨论】:
【参考方案2】:根据wp_logout_url()
上的docs,可以指定重定向url。在这种情况下,您应该更新注销链接本身。因此,如果您在 header.php 文件中有一个注销链接作为示例,您可以更新 wp_logout_url()
引用以包含当前页面 url。因此,无论何时用户单击注销链接,它也会将当前页面作为重定向链接。
您只需要当前页面的 url。参考this post,您可以看到一种获取当前页面 url 的方法。这与wp_logout_url()
函数相结合,您的 html 可能看起来像这样,
<?php global $wp; ?>
<a href="<?php echo wp_logout_url( home_url( $wp->request ) ) ?>">Logout</a>
现在,用户将始终从上一页重定向。如果您无法控制注销链接本身,您唯一的选择是通过 AJAX 处理注销,或者通过查询变量、会话、cookie 等自己跟踪以前的 url。
【讨论】:
以上是关于wc_logout_url 没有确认并重定向到 Wordpress WooCommerce 中的当前页面的主要内容,如果未能解决你的问题,请参考以下文章