可以通过安装第三方插件来实现限制WordPress登录尝试次数的功能。以下是一个常用的插件:
此插件可以设置登录尝试次数以及失败的时间间隔。如果用户在规定的时间内多次尝试,将会被锁定,直到管理员手动解锁。插件下载链接:Limit Login Attempts Reloaded
此插件可以根据IP地址和时间戳限制用户登录的次数。如果达到限制,将会暂时禁用该IP地址。插件下载链接:Login LockDown
以下是用于限制登录尝试次数的示例代码:
add_action('wp_login_failed', 'custom_login_failed');
function custom_login_failed($username){
$ip = $_SERVER['REMOTE_ADDR'];
$user = get_user_by('login', $username);
if($user){
$uid = $user->ID;
$loginAttempts = get_user_meta($uid, 'login_attempts', true);
$loginAttempts++;
if($loginAttempts >= 5){
add_action('wp_login', 'custom_login_locked');
$currentTime = current_time('timestamp');
add_user_meta($uid, 'login_locked_until', $currentTime + 600, true);
}else{
update_user_meta($uid, 'login_attempts', $loginAttempts);
}
}
}
function custom_login_locked($username){
$user = get_user_by('login', $username);
if($user){
$uid = $user->ID;
delete_user_meta($uid, 'login_attempts');
}
wp_die('登录失败次数过多,请稍后重试。');
}
add_action('login_init', 'custom_login_check_locked');
function custom_login_check_locked(){
$ip = $_SERVER['REMOTE_ADDR'];
$user = get_user_by('ip', $ip);
if($user){
$uid = $user->ID;
$lockedUntil = get_user_meta($uid, 'login_locked_until', true);
$currentTime = current_time('timestamp');
if($currentTime < $lockedUntil){
wp_die('登录失败次数过多,请稍后重试。');
}else{
delete_user_meta($uid, 'login_locked_until');
}
}
}
代码中的示例限制了每个用户最多尝试登录5次。如果达到限制将会锁定用户10分钟。可以根据需要进行修改。