【问题标题】:Log out Wordpress and redirect to different URL注销 Wordpress 并重定向到不同的 URL
【发布时间】:2015-01-08 07:23:46
【问题描述】:

我在我的网站上退出了 Wordpress

注销后,我想将用户重定向到不同的 URL。

我在functions.php中使用这个

    add_action(' wp_logout ',' auto_redirect_external_after_logout ');
    function auto_redirect_external_after_logout(){
      wp_redirect( ' http://redirect-url ' );
      exit();
    }

这个在标题中

    <li class="signOut"><?php wp_logout(); ?></li>

当我运行它时,我会在页面中看到一长串错误

    Warning: Cannot modify header information - headers already sent by

【问题讨论】:

    标签: wordpress redirect


    【解决方案1】:
    <li class="signOut"><?php wp_logout(); ?></li>
    

    这是有问题的代码,您正在调用 wp_logout 函数,该函数将注销用户并为此 WordPress 需要将信息(标题)发送到浏览器,因此会出现错误。

    所以最终的操作代码应该是这样的

    add_action( 'wp_logout', 'auto_redirect_external_after_logout');
    function auto_redirect_external_after_logout(){
      wp_redirect( 'http://redirect-url' );
      exit();
    }
    

    注销链接应该改为

    <li class="signOut"><a href="<?php echo wp_logout_url(); ?>" title="Logout">Logout</a></li>
    

    【讨论】:

    • 您只需更改注销链接,您的操作挂钩就可以正常工作。
    【解决方案2】:

    如果你想使用那个钩子,你将需要使用 JavaScript,因为标头已经发送:

    add_action(' wp_logout ',' auto_redirect_external_after_logout ');
    function auto_redirect_external_after_logout(){
        echo '<script>window.location.href = "http://redirect-url"</script>';
        exit();
    }
    

    另外,一种更优雅的方法是使用wp_logout_url() 函数代替您当前的注销链接,并将挂钩全部废弃。用法:

    <a href="<?php echo wp_logout_url( 'http://redirect-url' ); ?>" title="Logout">Logout</a>
    

    【讨论】:

    • mevius - 您的第一个 javascript 解决方案仍然给我警告:无法修改标头信息。第二个解决方案让我退出,将我带到 wordpress 登录页面,而不是声明的 url
    猜你喜欢
    • 1970-01-01
    • 2018-01-10
    • 2013-10-12
    • 2021-12-20
    • 1970-01-01
    • 2013-08-31
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多