WordPress模板插件定制

您现在的位置是:首页 > WordPress教程WordPress教程

WordPress如何监控用户活动

查看 WP集市 的更多文章WP集市 2025-09-08 【WordPress教程】 1138人已围观

  1. 先说说WordPress为啥要盯着用户活动。这玩意儿就像小区保安看监控,谁家快递被拿错了、哪辆车乱停,总得有个记录对吧?WordPress自己不带详细监控功能,但能靠插件或者代码折腾出来。比如用「WP Security Audit Log」这种插件,装上就能自动记下用户登录、改文章、装插件这些破事。你要是自己写代码也行,挂几个钩子(hook)到用户动作上,比如wp_login触发时就写条日志到数据库里。

  2. 记录用户活动最基本的就是抓登录登出。来段代码例子,扔到主题的functions.php里就行:

    add_action('wp_login', 'log_user_login', 10, 2);
    function log_user_login($user_login, $user) {
    $log_message = "用户 {$user->user_email} 在 " . current_time('mysql') . " 登录了";
    error_log($log_message); // 写进服务器错误日志,或者自己存数据库
    }

    这代码简单吧?但实际用的话得存数据库,不然日志散得到处都是。可以建个自定义表,或者用WordPress的wp_options表凑合一下。

  3. 除了登录,用户改文章也得盯着。比如有人偷偷把页面标题改了,你得知道是谁干的。用post_updated钩子:

    add_action('post_updated', 'log_post_change', 10, 3);
    function log_post_change($post_id, $post_after, $post_before) {
    if ($post_after->post_title != $post_before->post_title) {
        $user = wp_get_current_user();
        $log_message = "用户 {$user->user_email} 把文章 {$post_id} 标题从 '{$post_before->post_title}' 改成 '{$post_after->post_title}'";
        // 这里存数据库或者发邮件告警
    }
    }

    这玩意儿能扩展好多,比如监控文章状态变化(从草稿变成发布)、或者删文章时触发回收站机制。

  4. 插件和主题改动也得管。有些用户权限大,能装插件,万一装个带后门的就完蛋。可以用activated_plugindeactivated_plugin钩子:

    add_action('activated_plugin', 'log_plugin_activation');
    function log_plugin_activation($plugin) {
    $user = wp_get_current_user();
    error_log("用户 {$user->user_email} 激活了插件: {$plugin}");
    }

    记日志不是目的,重点是得定期检查。比如每周导出一次日志,用Excel筛筛哪些异常操作。

  5. 监控文件改动也挺实用。比如核心文件被篡改,可能是被黑了。用WordPress的wp_cron定时跑文件校验:

    add_action('my_daily_file_check', 'check_core_files');
    function check_core_files() {
    $original_hashes = get_core_file_hashes(); // 这得自己实现,比如存一份原始MD5
    $current_hashes = generate_current_hashes(); // 遍历wp-admin和wp-includes文件生成哈希
    foreach ($original_hashes as $file => $hash) {
        if ($current_hashes[$file] != $hash) {
            mail('admin@example.com', '文件被修改', "文件 {$file} 被改动了");
        }
    }
    }
    // 设置每天执行一次
    if (!wp_next_scheduled('my_daily_file_check')) {
    wp_schedule_event(time(), 'daily', 'my_daily_file_check');
    }

    但这方法有点糙,服务器负载高的站点别用,容易卡。

  6. 最后说说怎么看日志。光存不用是傻子,最好在WordPress后台搞个页面显示日志:

    add_action('admin_menu', 'add_logs_page');
    function add_logs_page() {
    add_submenu_page(
        'tools.php',
        '用户活动日志',
        '活动日志',
        'manage_options',
        'user-activity-logs',
        'display_logs_page'
    );
    }
    function display_logs_page() {
    $logs = get_logs_from_db(); // 自己写查询函数
    echo '<div class="85aa-c07f-413d-796b wrap"><h1>用户活动记录</h1><table>';
    foreach ($logs as $log) {
        echo "<tr><td>{$log->time}</td><td>{$log->message}</td></tr>";
    }
    echo '</table></div>';
    }

    这样管理员就不用去数据库翻日志了,点两下就能看。

总之,监控用户活动不是为偷窥,是为了安全和排查问题。代码例子都是基础款,实际用的话得加错误处理和权限检查——别让普通用户看到日志就行。WordPress灵活得很,想咋折腾都行,但别搞太复杂,否则站点慢得跟蜗牛似的。

Tags:

WordPress模板插件定制

WP集市

V管理员
文章 723 篇 | 评论 0 次
最新文章