我试图在woocommerce中实现没有注销确认的自定义注销。
我创建了一个页面并添加了此代码。并将此页面的链接添加到菜单。但它不起作用。
session_start();
session_destroy();
header("Location:http://www.liberatium.com/");
发生确认,因为您缺少URL中必需的随机数,该随机数正在wp-login.php中进行检查
case 'logout' :
check_admin_referer('log-out');
...
使用wp_logout_url来检索包括随机数在内的URL。如果要重定向到自定义URL,只需将其作为参数传递。
<a href="<?php echo wp_logout_url('http://www.liberatium.com/') ?>">Log out</a>
如果不起作用,请在functions.php中添加下面的函数,然后尝试上面的代码...
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'] : '';
$location = str_replace('&', '&', wp_logout_url($redirect_to));;
header("Location: $location");
die();
}
}
我在wordpress functions.php中使用此代码,以在付款后注销用户或关闭浏览器
/**
* Bypass logout confirmation.
*/
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( 'myaccount' ) ) ) );
exit;
}
}
add_action( 'template_redirect', 'iconic_bypass_logout_confirmation' );
我使用带有类似链接的菜单项中的woocommerce endpoing注销”>
https://yoursite/my-account/customer-logout/?_wpnonce=2bbbac43a8&customer-logout=true
&customer-logout = true-这是无需确认即可注销的关键点。只需将其添加到菜单项的和中即可。
此方法的一个缺点-成功注销后,用户将重定向到登录页面,而不是当前页面。
您可以在主题的function.php
中创建新的简码注销URL,并在标记<a href="[custom_logout_s]"></a>
html中添加所需的任何位置。我尝试并取得了成功。