Yard Warden hardens core WordPress password and login flows:
yard::warden/password/min-length (default 16) – Minimum character count.yard::warden/password/min-score (default 4) – Minimum zxcvbn score (0-4).yard::warden/login/generic-error (default Invalid credentials.) – Replacement login error message.yard::warden/login/leaky-error-codes (default ['invalid_username', 'invalid_email', 'incorrect_password']) – WP_Error codes to rewrite.yard::warden/onboarding/welcome-subject (default Welcome to <site>!) – Multisite welcome email subject.yard::warden/onboarding/welcome-body (default reset-link body) – Full welcome email body. Receives $user, $resetUrl, original body.yard::warden/limit-login/enabled (default true) – Set to false to disable login limiting entirely.yard::warden/limit-login/client-ip (default REMOTE_ADDR) – Override IP detection (e.g. for reverse proxies).yard::warden/limit-login/error-message (default Too many failed login attempts...) – Lockout error shown to the user.yard::warden/limit-login/skip-error-codes (default ['expired_session']) – WP_Error codes that do not count as failed attempts.yard::warden/limit-login/threshold/{dimension} (default 5 / 50 / 3) – Attempts before lockout per dimension (ip_user / ip / username).yard::warden/limit-login/window/{dimension} (default 300 / 3600 / 1500) – Counting window in seconds per dimension.yard::warden/limit-login/lockout/{dimension} (default 300 / 3600 / 1500) – Lockout duration in seconds per dimension.add_filter('yard::warden/password/min-score', function (int $score) {
return max($score, 4);
});