主页/WordPress笔记/博客文章/综合文章/如何在WordPress中自动注销闲置用户

如何在WordPress中自动注销闲置用户

Bug编译狮

Bug编译狮

在WordPress中,如果你希望在一段时间内未登录的用户自动注销,你可以通过编写自定义插件来实现这个功能。以下是一个简单的示例,展示了如何创建这样一个插件。

步骤1: 创建新文件夹

首先,在wp-content/plugins/目录下创建一个新的文件夹,例如命名为auto_logout_users

步骤2: 编辑插件文件

进入刚刚创建的文件夹,编辑functions.php文件。这是一个基本的PHP文件,用于添加到WordPress插件的核心部分。

<?php
/*
Plugin Name: Auto Logout Users
Description: Automatically logs out users who have not logged in for a specified period of time.
Version: 1.0
Author: Your Name Here
*/

// Define the logout function
function auto_logout_user() {
    // Set the timeout value (in minutes)
    $timeout = 30; // Change this to your desired timeout

    // Get current user ID
    $current_user_id = get_current_user_id();

    // Check if user is logged in and has not been active within the set timeout
    if (isset($_COOKIE['user_' . $current_user_id]) && $_COOKIE['user_' . $current_user_id] != 'logout') {
        // Log them out by setting a cookie with a "logout" value
        setcookie('user_' . $current_user_id, 'logout', time() - strtotime('+60 seconds'), '/');

        // Redirect to homepage or other login page
        wp_redirect(home_url());
        exit;
    }
}

// Add action hook to trigger the logout function
add_action('init', 'auto_logout_user');

步骤3: 启用插件

  1. 登录到您的WordPress管理后台。
  2. 进入Plugins菜单。
  3. 点击“Activate”按钮旁边的插件图标或搜索框输入auto_logout_users,然后选择它并点击“Activate”。

步骤4: 配置设置(如果适用)

  • 如果您想改变默认的超时时间,可以在WordPress设置中找到相关选项进行调整。

示例效果

当你设置一个用户超过30分钟没有活动后,他们会被自动注销,重新加载页面或者被重定向回登录页。这样可以保护网站免受恶意用户的攻击,并确保只有活跃的用户访问你的网站。

注意事项

  • 在生产环境中部署此插件之前,请先测试以确保其正确工作。
  • 考虑到安全性,不要在公共网络上启用此功能,因为它可能会影响用户体验。

通过以上步骤和示例代码,你应该能够成功地在WordPress中实现自动注销闲置用户的功能。

黑板前的Bug语法讲师

黑板前的Bug语法讲师

在WordPress中实现自动注销闲置用户的过程可以分为几个步骤:首先,你需要安装一个插件来处理用户活动;其次,设置一些条件以判断是否需要注销用户;最后,在必要时调用这个插件来执行操作。

步骤1: 安装和配置用户活动插件

你可以使用以下命令来安装并配置用户活动插件:

wp plugin install wp-activity

然后,在functions.php文件中添加以下代码来启用用户活动功能:

add_action('init', 'enable_user_activity');
function enable_user_activity() {
    add_filter('get_users_where', 'filter_user_for_activity');
}

function filter_user_for_activity($query) {
    global $wpdb;

    if ($query->current_user_id == 0 && !is_user_logged_in()) {
        return $query;
    }

    return $wpdb->prepare("SELECT * FROM {$wpdb->users} WHERE user_id = %d AND user_status != 'inactive' ORDER BY id DESC", $query->current_user_id);
}

步骤2: 设置用户活动规则

接下来,你需要定义哪些用户应该被注销。例如,如果你希望只注销那些超过一定时间没有登录的用户,可以在上述代码中添加如下行:

$days_inactive_threshold = 365; // 一年的时间阈值(天)

将此变量替换为合适的数值,以满足你的需求。

步骤3: 实施自动注销

要使用户活动功能生效,确保已激活此插件并在functions.php文件中的register_activation_hook函数中注册插件:

add_action('plugins_loaded', 'activate_user_activity_plugin');
function activate_user_activity_plugin() {
    register_activation_hook(__FILE__, 'activate_user_activity_plugin');
}

示例代码与解释

示例1: 获取当前用户ID

$current_user_id = get_current_user_id();

获取当前用户的ID,用于后续比较。

示例2: 检查用户状态

if ($query->current_user_id == 0 && !is_user_logged_in()) {
    // 当前用户未登录或未设置用户活动规则
}

检查当前用户是否为匿名用户或未登录,如果符合条件,则执行注销操作。

示例3: 处理用户活动

if ($query->current_user_id && !is_user_logged_in()) {
    $user_id_to_delete = $query->current_user_id;
    $wpdb->delete(
        $wpdb->users,
        array(
            $wpdb->users . '.id' => $user_id_to_delete,
            $wpdb->users . '.user_status' => 'inactive',
        ),
        array(
            '%s' => $user_id_to_delete,
        )
    );
}

根据用户活动规则删除符合条件的用户。

通过以上步骤,你可以在WordPress中实现自动注销闲置用户的功能。请根据具体需求调整这些代码以适应您的环境。