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('&amp;', '&', 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 中的当前页面的主要内容,如果未能解决你的问题,请参考以下文章

如果会话过期,如果没有活动并重定向登录页面,则烧瓶注销

PHP检测url是不是重定向并重试重定向

如何在 Spring mvc 中下载 pdf 文件并重定向到主页

将数组作为url参数传递并重定向到新页面

添加/更改 URL 参数并重定向到新 URL

创建类别并重定向到 category.index 后,在 laravel 中找不到基表或视图