WordPress模板插件定制

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

WordPress如何用户活动监控

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

  1. 在WordPress里想知道用户干了啥?其实很简单,装个插件比如"WP Security Audit Log",但今天咱们直接撸代码,自己搞个轻量监控。先往主题的functions.php里塞这段:
function track_user_activity() {
    if (is_user_logged_in()) {
        $user_id = get_current_user_id();
        $activity = '用户点击了页面: ' . $_SERVER['REQUEST_URI'];
        add_user_meta($user_id, 'custom_activity_log', $activity . ' - ' . current_time('mysql'));
    }
}
add_action('wp_head', 'track_user_activity');

这代码会在每个页面头部触发,记录用户ID和访问的URL到用户元数据里,像脚印一样跟着。

  1. 记录是有了但得能看啊!再整个后台面板显示日志。在管理菜单加个自定义页面:
function add_activity_log_page() {
    add_menu_page(
        '用户活动日志',
        '活动跟踪',
        'manage_options',
        'activity-log',
        'display_activity_log'
    );
}
add_action('admin_menu', 'add_activity_log_page');

function display_activity_log() {
    echo '<div class="3d1a-90d2-af04-17d7 wrap"><h2>用户活动流水账</h2>';
    $users = get_users();
    foreach ($users as $user) {
        $logs = get_user_meta($user->ID, 'custom_activity_log');
        if (!empty($logs)) {
            echo '<h3>' . $user->user_email . '的操作:</h3>';
            echo '<ul>';
            foreach ($logs as $log) {
                echo '<li>' . esc_html($log) . '</li>';
            }
            echo '</ul>';
        }
    }
    echo '</div>';
}

现在到后台就能看到所有用户的点击流水,像看小说一样翻他们的操作。

  1. 光记录页面访问太单一?咱们升级下,监控文章修改。用这个钩子:
function track_post_changes($post_id) {
    if (wp_is_post_revision($post_id)) return;
    $user_id = get_current_user_id();
    $activity = '用户修改了文章ID: ' . $post_id;
    add_user_meta($user_id, 'custom_activity_log', $activity . ' - ' . current_time('mysql'));
}
add_action('save_post', 'track_post_changes');

这样每次保存文章时,就会在日志里多一条修改记录,连草稿更新都不会放过。

  1. 数据多了怕拖慢数据库?加个自动清理机制。每天凌晨删掉30天前的旧日志:
function cleanup_old_logs() {
    $users = get_users();
    foreach ($users as $user) {
        $logs = get_user_meta($user->ID, 'custom_activity_log', false);
        $cutoff_time = strtotime('-30 days');
        foreach ($logs as $index => $log) {
            if (strtotime(substr($log, -19)) < $cutoff_time) {
                delete_user_meta($user->ID, 'custom_activity_log', $log);
            }
        }
    }
}
add_action('wp_scheduled_delete', 'cleanup_old_logs');

用WordPress自带定时任务实现自动归档,数据库就不会膨胀成气球了。

  1. 最后提醒下,这些代码都是示例,真实用时得加权限检查和安全过滤——比如用wp_kses处理输出,用nonce验证请求。监控用户虽好,但别侵犯隐私啊,最好在隐私政策里说明记录行为。要是懒得折腾,还是装现成插件更稳妥,比如前面提的WP Security Audit Log或者Activity Log。

Tags:

WordPress模板插件定制

WP集市

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