【问题标题】:Creating a function to logout a WordPress user?创建一个功能来注销 WordPress 用户?
【发布时间】:2021-06-19 23:32:22
【问题描述】:

我正在尝试创建一个功能来在一段时间不活动后注销 WordPress 用户。定时元素正常工作,并在一段时间后重定向用户。

问题是,一旦 PHP 脚本被加载(在代码示例中),我会遇到以下错误:致命错误:调用 /var/www/html/wp-content 中的未定义函数 wp_logout() /plugins/ion-wp-login-timeout/scripts/timed-logout.php 在第 5 行

我阅读的所有参考资料都告诉我 wp_logout() 应该注销用户,但出现错误。我尝试了几种方法,包括添加一个动作。我不想将用户重定向到登录屏幕。

代码示例如下。 echo 语句仅用于测试。任何帮助将非常感激。

<?php

    function logout_this_session() {
        //Logout Now
        wp_logout();
        wp_die();
    }

    echo 'This will be the logout script<br/><br/>';

    $last_page = $_SERVER['HTTP_REFERER'];
    echo 'You came from: ' . $last_page;

    logout_this_session();

    header( 'Location: ' . $last_page );

?>

【问题讨论】:

标签: php wordpress


【解决方案1】:

这必须在 init 操作中使用。
您可以使用 wp_logout() 函数注销当前用户。
wp-includes/pluggable.php 文件中此函数的详细信息:

<?php
/**
 * Log the current user out.
 *
 * @since 2.5.0
 */
function wp_logout() {
    wp_destroy_current_session();
    wp_clear_auth_cookie();

    /**
     * Fires after a user is logged-out.
     *
     * @since 1.5.0
     */
    do_action( 'wp_logout' );
}

【讨论】:

    【解决方案2】:

    我终于找到了一个解决方案,如下面的代码示例所示。从注销用户之前流程的最后阶段开始,我有一个 wpsessionexpired=true 值回传到用户所在的页面。用户注销后立即刷新同一页面。我把它放在主插件文件中。

    function logoutUser(){
        if ( $_POST["wpsessionexpired"] == 'true' ){ 
            wp_logout();
            header("refresh:0.5;url=".$_SERVER['REQUEST_URI']."");
        }
    }
    add_action('init', 'logoutUser');
    

    【讨论】:

      【解决方案3】:

      你可以在functions.php中创建你的函数

      add_action( 'wp_logout', 'redirect_after_logout');
      function redirect_after_logout(){
        wp_redirect( 'http://example.com' );
        exit();
      }
      

      然后把它放在你想要的网站位置:

      <a href="<?php echo wp_logout_url(); ?>" >Logout</a>
      

      【讨论】:

        【解决方案4】:

        根据用户角色的注销功能 (这是一个工作代码)复制并粘贴到 function.php 文件中

            function redirect_after_logout() {
        
                $current_user   = wp_get_current_user();
                $role_name      = $current_user->roles[0];
        
                if($role_name == 'subscriber'){
                    $redirect_url = site_url();
                    wp_safe_redirect( $redirect_url );
                    exit;
                } 
        
            }
            add_action( 'wp_logout', 'redirect_after_logout'  );
        

        【讨论】:

          【解决方案5】:

          这也适用于

                <?php 
          if (current_user_can('client') OR current_user_can('salesrep') ){
          ?>
          <a href="<?php echo wp_logout_url( home_url() ); ?>" class="btn btn-primary"
          style="float: right;" >Logout</a>
          <?php }
          ?>
          

          您可以根据需要设置任何角色。就像这个例子(客户,销售代表)

          【讨论】:

            【解决方案6】:

            加入哈米德·穆迪; Here

            创建一个注销用户的自定义函数

            /**
             * Log the current user out.
             *
             * @since 2.5.0
             */
            function my_custom_user_logout() {
                wp_destroy_current_session();
                wp_clear_auth_cookie();
            
                /**
                 * Fires after a user is logged-out.
                 *
                 * @since 1.5.0
                 */
                do_action( 'wp_logout' );
            }
            

            然后在注销后创建一个自定义重定向

            add_action('init', 'mfsl_logout');
            function mfsl_logout(){
                if ( $_POST["wpsessionexpired"] == 'true' ){ 
                    wp_logout();
                    wp_safe_redirect( home_url() ); // custom URL to redirect after logot
                    exit();
                }
                
                
            }
            

            注销后,他们将被重定向到主页或任何自定义 URL

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-05-10
              • 1970-01-01
              • 1970-01-01
              • 2017-01-10
              • 2012-05-03
              相关资源
              最近更新 更多