
您现在的位置是:首页 > WordPress教程WordPress教程
WordPress如何监控用户活动
WP集市
2025-09-08
【WordPress教程】
1138人已围观
-
先说说WordPress为啥要盯着用户活动。这玩意儿就像小区保安看监控,谁家快递被拿错了、哪辆车乱停,总得有个记录对吧?WordPress自己不带详细监控功能,但能靠插件或者代码折腾出来。比如用「WP Security Audit Log」这种插件,装上就能自动记下用户登录、改文章、装插件这些破事。你要是自己写代码也行,挂几个钩子(hook)到用户动作上,比如
wp_login
触发时就写条日志到数据库里。 -
记录用户活动最基本的就是抓登录登出。来段代码例子,扔到主题的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
表凑合一下。 -
除了登录,用户改文章也得盯着。比如有人偷偷把页面标题改了,你得知道是谁干的。用
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}'"; // 这里存数据库或者发邮件告警 } }
这玩意儿能扩展好多,比如监控文章状态变化(从草稿变成发布)、或者删文章时触发回收站机制。
-
插件和主题改动也得管。有些用户权限大,能装插件,万一装个带后门的就完蛋。可以用
activated_plugin
和deactivated_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筛筛哪些异常操作。
-
监控文件改动也挺实用。比如核心文件被篡改,可能是被黑了。用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'); }
但这方法有点糙,服务器负载高的站点别用,容易卡。
-
最后说说怎么看日志。光存不用是傻子,最好在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:
文章版权声明:除非注明,否则均为WP集市原创文章,转载或复制请以超链接形式并注明出处。

热门文章
