近期公司运维的站点遭遇了恶意注册问题, 大量IP注册账号, WordPress后台并没有分辨的能力, 遂添加以下功能进行记录与追踪, 以下代码需添加到主题或子主题的 functions.php 内
WordPress后台用户列表添加注册时间, 并添加注册时间排序
add_filter('manage_users_columns', function($column_headers){
$column_headers['registered'] = '注册时间';
return $column_headers;
});
add_filter('manage_users_custom_column', function($value, $column_name, $user_id){
if($column_name=='registered'){
return get_date_from_gmt(get_userdata($user_id)->user_registered);
}else{
return $value;
}
},11,3);
add_filter('manage_users_sortable_columns', function($sortable_columns){
$sortable_columns['registered'] = 'registered';
return $sortable_columns;
});
增加注册时IP地址记录
function log_ip($user_id){
$ip = $_SERVER['REMOTE_ADDR'];
update_user_meta($user_id, 'signup_ip', $ip);
}
add_action('user_register', 'log_ip');
// 添加IP地址栏目
function signup_ip($column_headers) {
$column_headers['signup_ip'] = __('IP地址', 'signup_ip');
return $column_headers;
}
if ( is_multisite() ) {
// 多站点支持
add_filter('wpmu_users_columns', 'signup_ip');
} else {
// 单站点支持
add_filter('manage_users_columns', 'signup_ip');
}
// 格式化输出内容
function ripms_columns($value, $column_name, $user_id) {
if ( $column_name == 'signup_ip' ) {
$ip = get_user_meta($user_id, 'signup_ip', true);
if ($ip != ""){
$ret = '<em>'.__($ip, 'signup_ip').'</em>';
return $ret;
} else {
$ret = '<em>'.__('暂无数据', 'signup_ip').'</em>';
return $ret;
}
}
return $value;
}
add_action('manage_users_custom_column', 'ripms_columns', 10, 3);
评论区