要在 WordPress 网站上实现类似的功能,通常你需要开发一个 WordPress 插件。以下是一步步创建一个插件的指南,它可以记录访问者的访问记录,区分搜索引擎蜘蛛,并保存访客的 IP 地址。
1. 创建插件目录和文件
- 进入你的 WordPress 插件目录。路径通常是:
wp-content/plugins/
- 在
plugins
文件夹中创建一个新目录,例如:visitor-tracker
。 - 在
visitor-tracker
目录中创建一个 PHP 文件,例如:visitor-tracker.php
。
2. 插件文件结构
插件的文件结构大概如下:
wp-content/
plugins/
visitor-tracker/
visitor-tracker.php
3. 编写插件代码
在 visitor-tracker.php
文件中,添加以下代码:
<?php
/**
* Plugin Name: Visitor Tracker
* Plugin URI: https://yourwebsite.com
* Description: A simple plugin to track visitors and identify search engine bots.
* Version: 1.0
* Author: Your Name
* Author URI: https://yourwebsite.com
*/
// 确保 WordPress 已加载
if (!defined('ABSPATH')) {
exit; // 禁止直接访问
}
// 定义数据库表名
global $visitor_tracker_table;
$visitor_tracker_table = 'wp_visitor_logs';
// 插件激活时创建数据库表
function vt_create_table() {
global $wpdb, $visitor_tracker_table;
$charset_collate = $wpdb->get_charset_collate();
// 创建数据库表
$sql = "CREATE TABLE IF NOT EXISTS $visitor_tracker_table (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
visitor_type VARCHAR(50),
user_agent TEXT,
ip_address VARCHAR(100),
spider_name VARCHAR(100)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
register_activation_hook(__FILE__, 'vt_create_table');
// 插件停用时删除数据库表
function vt_remove_table() {
global $wpdb, $visitor_tracker_table;
$sql = "DROP TABLE IF EXISTS $visitor_tracker_table";
$wpdb->query($sql);
}
register_deactivation_hook(__FILE__, 'vt_remove_table');
// 访问记录处理函数
function vt_log_visitor() {
global $wpdb, $visitor_tracker_table;
// 获取访客的 IP 地址
$ip_address = $_SERVER['REMOTE_ADDR'];
// 获取 User-Agent
$user_agent = $_SERVER['HTTP_USER_AGENT'];
// 判断是否为搜索引擎蜘蛛
$spiders = ['Googlebot', 'Bingbot', 'Slurp', 'DuckDuckBot', 'Baiduspider', 'YandexBot', 'Sogou', 'Exabot'];
$is_spider = false;
$spider_name = '';
foreach ($spiders as $spider) {
if (strpos($user_agent, $spider) !== false) {
$is_spider = true;
$spider_name = $spider;
break;
}
}
// 记录访客或蜘蛛
$visitor_type = $is_spider ? 'Spider' : 'Visitor';
// 将访问记录保存到数据库
$wpdb->insert(
$visitor_tracker_table,
[
'visitor_type' => $visitor_type,
'user_agent' => $user_agent,
'ip_address' => $ip_address,
'spider_name' => $is_spider ? $spider_name : null
]
);
}
// 捕获所有页面请求
add_action('wp_head', 'vt_log_visitor');
// 创建管理页面以查看记录
function vt_add_admin_menu() {
add_menu_page(
'Visitor Tracker Logs', // 页面标题
'Visitor Tracker', // 菜单标题
'manage_options', // 权限要求
'visitor-tracker-logs', // 菜单 slug
'vt_display_logs', // 回调函数
'dashicons-visibility', // 图标
30 // 位置
);
}
add_action('admin_menu', 'vt_add_admin_menu');
// 显示日志的回调函数
function vt_display_logs() {
global $wpdb, $visitor_tracker_table;
$logs = $wpdb->get_results("SELECT * FROM $visitor_tracker_table ORDER BY timestamp DESC LIMIT 20");
echo '<div class="wrap">';
echo '<h1>Visitor Tracker Logs</h1>';
if ($logs) {
echo '<table class="wp-list-table widefat fixed striped">';
echo '<thead><tr><th>ID</th><th>Timestamp</th><th>Visitor Type</th><th>IP Address</th><th>Spider Name</th><th>User Agent</th></tr></thead>';
echo '<tbody>';
foreach ($logs as $log) {
echo '<tr>';
echo '<td>' . $log->id . '</td>';
echo '<td>' . $log->timestamp . '</td>';
echo '<td>' . $log->visitor_type . '</td>';
echo '<td>' . $log->ip_address . '</td>';
echo '<td>' . ($log->spider_name ? $log->spider_name : '-') . '</td>';
echo '<td>' . $log->user_agent . '</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
} else {
echo '<p>No logs available.</p>';
}
echo '</div>';
}
解释:
- 插件头部信息:
Plugin Name
、Description
、Version
等字段描述了插件的基本信息。 - 数据库表创建:
- 插件激活时会创建一个名为
wp_visitor_logs
的表,存储访问记录。表中包括字段id
、timestamp
、visitor_type
(访客类型)、user_agent
(用户代理)、ip_address
(IP 地址)、spider_name
(蜘蛛名称)。
- 插件激活时会创建一个名为
- 访问记录:
- 通过
wp_head
钩子函数,每次访问页面时会记录访问者的信息。如果访问者是搜索引擎蜘蛛,则会记录蜘蛛的名称;否则,记录访客的 IP 地址。
- 通过
- 管理界面:
- 插件创建了一个 WordPress 后台菜单项,允许管理员查看最近的访问日志。显示的字段包括访问时间、访客类型、IP 地址、蜘蛛名称和用户代理。
4. 启用插件
- 将
visitor-tracker
文件夹上传到你的 WordPress 插件目录中:wp-content/plugins/
。 - 登录到 WordPress 后台,进入 插件 页面,启用 Visitor Tracker 插件。
5. 查看访问记录
启用插件后,后台会出现一个新的菜单项 Visitor Tracker,点击该菜单可以查看最近的访问日志,包括访客的 IP 地址、蜘蛛名称和用户代理。
总结
这个插件实现了以下功能:
- 捕获并记录访问网站的访客和搜索引擎蜘蛛。
- 对于蜘蛛,记录蜘蛛类型(如 Googlebot、Bingbot 等)。
- 对于访客,记录 IP 地址。
- 提供一个后台界面,让管理员可以查看记录的日志。
如果你有任何进一步的定制要求,或者需要帮助解决其他问题,请随时告诉我!
发布者:myrgd,转载请注明出处:https://www.object-c.cn/4411