这个代码之前是在网上找到的然后拿来测试发现只要是网站用户登录成功和失败都会发送邮件到站长这,后面我就加了个判断。
我们首先通过get_user_by函数尝试获取尝试登录的用户的信息。然后,我们检查该用户是否存在,并且是否拥有administrator角色。只有当这两个条件都满足时,才会发送通知邮件。这样,只有当管理员账号登录时,您才会收到通知。

如果有人登录了系统,就会发一封邮件到邮箱,提醒你有人登录了,如果当时不是你登录,就要引起警惕了。将以下代码放入主题的functions.php中
/***************************************************** 
 函数作用:有成功登录wp后台就会email通知
******************************************************/  
function notify_admin_login($user_login, $user) {
    date_default_timezone_set('PRC');
    // 检查用户角色是否为管理员
    if (in_array('administrator', $user->roles)) {
        // 设置邮件内容
        $admin_email = get_bloginfo('admin_email');
        $subject = 'WordPress后台登录成功提醒';
        $message = '<p>你好!您的网站(' . get_option("blogname") . ')后台登录成功提醒!</p>' .
                   "<p>登录名:{$user_login}</p>" .
                   "<p>登录时间: " . date("Y-m-d H:i:s") . "</p>" .
                   "<p>登录IP: " . $_SERVER['REMOTE_ADDR'] . "</p>";
        // 设置邮件头部信息
        $from = "From: WordPress Admin <no-reply@" . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])) . ">";
        $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
        // 发送邮件
        wp_mail($admin_email, $subject, $message, $headers);
    }
}
add_action('wp_login', 'notify_admin_login', 10, 2);有人尝试登陆你的系统,但是没有成功,这种反复尝试的动作本身就需要被记录下来,发给博主,这样,只要有错误的登录,就会发一封邮件到自己的邮箱,将对方尝试的登录名和登录密码发送到你邮箱。

将以下代码放入主题的functions.php中
/***************************************************** 
 函数作用:有错误登录wp后台就会email通知
******************************************************/  
function notify_admin_login_failed($username) {
    date_default_timezone_set('PRC');
    // 获取网站管理员的电子邮件地址
    $admin_email = get_bloginfo('admin_email');
    // 尝试获取用户信息
    $user = get_user_by('login', $username);
    // 检查用户是否存在且是管理员
    if ($user && in_array('administrator', $user->roles)) {
        // 设置邮件内容
        $subject = 'WordPress后台登录失败提醒';
        $message = '<p>你好!您的网站(' . get_option("blogname") . ')后台登录失败提醒!</p>' .
                   "<p>登录名:{$username}</p>" .
                   "<p>登录时间: " . date("Y-m-d H:i:s") . "</p>" .
                   "<p>登录IP: " . $_SERVER['REMOTE_ADDR'] . "</p>";
        // 设置邮件头部信息
        $from = "From: WordPress Admin <no-reply@" . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])) . ">";
        $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
        // 发送邮件
        wp_mail($admin_email, $subject, $message, $headers);
    }
}
