Woocommerce自定义注销,无需确认

时间:2017-07-03 06:36:47

标签: wordpress woocommerce logout

我正在尝试在woocommerce中实现自定义注销而无需注销确认。

我创建了一个页面并添加了此代码。并添加此页面的链接到菜单。但它不起作用。

 session_start();
 session_destroy();   
 header("Location:http://www.liberatium.com/");

5 个答案:

答案 0 :(得分:1)

确认发生是因为您错过了URL中的必要nonce,正在wp-login.php中检查

case 'logout' :
check_admin_referer('log-out');
...

使用wp_logout_url来检索包含nonce的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('&amp;', '&', wp_logout_url($redirect_to));;
      header("Location: $location");
      die();
    }
}

答案 1 :(得分:1)

我在wordpress functions.php中使用了这段代码,以在付款后注销用户或关闭浏览器

/**
 * Bypass logout confirmation.
 */
function iconic_bypass_logout_confirmation() {
    global $wp;

    if ( isset( $wp->query_vars['customer-logout'] ) ) {
        wp_redirect( str_replace( '&amp;', '&', wp_logout_url( wc_get_page_permalink( 'myaccount' ) ) ) );
        exit;
    }
}

add_action( 'template_redirect', 'iconic_bypass_logout_confirmation' );

答案 2 :(得分:0)

我在带有类似链接的菜单项中使用woocommerce endpoing注销

https://yoursite/my-account/customer-logout/?_wpnonce=2bbbac43a8&customer-logout=true

&customer-logout = true-这是无需确认即可注销的关键点。只需将其添加到菜单项的和中即可。

此方法的一个缺点-成功注销用户后,重定向到登录页面,而不是当前页面。

答案 3 :(得分:0)

您可以在主题的function.php中创建新的简码注销URL,并在标记<a href="[custom_logout_s]"></a> html中添加所需的任何位置。我尝试并成功。

// Custom shortcode log out
function custom_logout()
{
    return wp_logout_url(bloginfo( 'url' ));
}
add_shortcode( 'custom_logout_s', 'custom_logout' );

答案 4 :(得分:0)

如果您更喜欢html的注销短代码标签(标签之间带有可选的重定向段),则可以使用此标签:

/* Shortcode for no confirmation logout link with optional redirect slug between shortcode tags */
//
//  E.g. [logout_link]my-account[/logout_link]
//
function logout_to_optional_redirect_slug_function( $atts, $redirect_slug = null ) {

    $redirect_full_url = get_site_url(null, '/', 'https') . $redirect_slug;
    $logout_url = wp_logout_url($redirect_full_url);
    $logout_hyperlink = "<a href='".$logout_url."'>Logout</a>";

    return do_shortcode($logout_hyperlink);
}
add_shortcode( 'logout_link', 'logout_to_optional_redirect_slug_function' );