WordPress login accessibility & UX

Stop the login form from shaking at every failed attempt

Disable Login Shake removes the side-to-side shake WordPress plays after a rejected login, without changing the error message itself.

  • Removes only the shake animation, not the error message.
  • Uses WordPress's own built-in filter for this exact purpose.
  • Helps visitors with motion sensitivity avoid an unpleasant animation.
  • The one default behaviour a restyled login page usually still carries.
Login ExperienceDisable Login Shake
Error: The password you entered is incorrect.
Username or Email AddressPasswordLog In
No shake animation — the form stays still, message unchanged.
Shake animation removedThe error message still displays clearly.
Active
Quick answer

What does Disable Login Shake do?

When the disable_login_shake module is active, TheOneWP adds a single filter on shake_error_codes that returns an empty array, WordPress's own documented way of turning the animation off. Normally, WordPress checks a rejected login's error code against that list and, if it matches, plays the shake; with the list empty, no error code ever matches, so the form stays still. The error message itself is untouched, since the filter only controls the animation, not what gets displayed or why the login failed.

The "reproach" problem

A shaking form reads as a scolding, not just feedback

The animation doesn't explain anything the error message doesn't already say, and it's often the one piece of default WordPress left standing after a full redesign.

It's motion, not information

The shake doesn't add anything the error message doesn't already say; it's WordPress's oldest, most literal way of signaling "no," and it can read as reproach rather than simple feedback.

It's also the one piece of stock behaviour a restyled login page keeps

A login page rebuilt with a custom logo, colors and layout still shakes exactly the way an unstyled WordPress install does, since the animation isn't part of the visual theme at all.

A dedicated WordPress solution

The message stays, the motion goes

The module removes exactly the animation, using the mechanism WordPress itself documents for this purpose.

Only the shake is removed

The error message, its wording and everything else about a failed login attempt stays exactly the same.

Friendlier for motion-sensitive visitors

Removing a repeated horizontal movement is a small but genuine consideration for anyone affected by motion or vestibular sensitivity.

Matches a fully restyled login page

Removing the shake means a custom-branded login page no longer has one leftover piece of stock WordPress behaviour standing out.

Verified feature set

One native filter, used exactly as documented

Every capability below is present in the plugin's registration logic and its settings field.

Scope

Every error code, at once

Returning an empty array means no error code ever matches the shake condition, covering every kind of rejected login in one change.

__return_empty_arrayAll error codes
Untouched

The error message itself

The filter only controls the animation trigger; the text explaining why a login failed is generated and displayed exactly as before.

Message unchangedAnimation only
Accessibility

A real motion-sensitivity consideration

The shake is a repeated horizontal movement, exactly the kind of animation that can be uncomfortable for people with vestibular or motion sensitivity.

Vestibular sensitivityReduced motion
Consistency

Fits a fully restyled login page

A custom-branded login page built with Custom Login Page keeps one native WordPress behaviour by default; this removes it too.

Custom login pairingFull restyle
Minimal footprint

One filter, nothing else

The entire module is a single conditional filter registration, adding no measurable weight to the login page.

One filter callNo extra assets
Practical use cases

Where removing the shake helps most

The module supports any login page where the animation adds motion without adding meaning.

Motion-sensitive visitors

Remove an animation that can be genuinely uncomfortable for anyone affected by vestibular or motion sensitivity.

Fully custom-branded login pages

Pair it with a restyled login page so no stock WordPress animation stands out against the custom design.

A gentler failed-login experience

Keep the error message clear and informative without the added motion that can make a mistake feel like a scolding.

Operational benefits

Clear feedback, without the motion

The module removes exactly one thing, with a genuine accessibility upside and zero added weight.

Feedback without added motionThe error message alone is enough to explain a failed login; the shake never added information, only movement.
A small, genuine accessibility improvementRemoving an unnecessary animation is a real consideration for visitors sensitive to motion, not just an aesthetic preference.
A more consistent custom login pageA login page redesigned in every other way no longer keeps this one piece of default WordPress behaviour.
Zero added weightA single filter call has no measurable performance cost of its own.
Performance behaviour

One filter, nothing else running

The verified implementation is as minimal as a module can be.

A single filter, nothing else

The module registers one filter callback and does nothing further; there's no ongoing processing involved.

No effect when disabled

When the module isn't enabled, the filter is never registered at all, so there's no overhead either way.

No JavaScript changes required

Since the shake is controlled through a native PHP filter, there's no script to load, modify, or remove on the front end.

Security implementation

A visual setting, with no bearing on login security

The filter used here is documented, purely cosmetic, and leaves everything else about login handling untouched.

01

A documented core filter, not a workaround

shake_error_codes is WordPress's own filter for this exact purpose, not a hack around undocumented behaviour.

02

Administrator-only configuration

Only an administrator with access to TheOneWP settings can enable the module.

03

No effect on login security

The filter only controls a visual animation; it has no bearing on authentication, rate limiting, or any other login-security mechanism.

04

The error message is preserved

Since the filter doesn't touch error generation or display, a failed login is still explained just as clearly as before.

Verified compatibility

Built entirely around one native WordPress filter

The supplied code integrates through APIs present in WordPress core. No compatibility claim beyond the verified implementation is assumed.

Native filter

shake_error_codes

The exact filter WordPress core documents for controlling which login error codes trigger the shake animation.

shake_error_codeswp-login.php
Callback

__return_empty_array

A standard WordPress core helper function, used here to clear the list of error codes that would otherwise trigger the animation.

__return_empty_arrayCore helper function
Login page

wp-login.php

Applies specifically to WordPress's login screen, the only place this animation is used.

wp-login.phpLogin-specific
Solution comparison

TheOneWP versus common alternatives

Compare the verified Disable Login Shake implementation with writing the equivalent snippet by hand.

CapabilityTheOneWP Disable Login ShakeOther common solutions
Removing the shake animation One native filter, applied instantlyUsually a small code snippet added by hand
Error message Left completely unchangedSame, when done correctly, but requires writing the snippet yourself
Accessibility consideration Explicitly documented as a motion-sensitivity benefitRarely framed this way in typical snippets
Pairing with a custom login page A natural companion to full login restylingUsually a separate, unrelated fix
Administration One toggle inside TheOneWP settingsRequires a code snippet or a dedicated plugin
Recommended workflow

Confirm the change in four steps

A quick failed-login test is all that's needed to confirm it worked.

01

Enable Disable Login Shake

Activate the module from the TheOneWP Login settings tab; there's nothing else to configure.

02

Trigger a failed login

Attempt to log in with an incorrect password to confirm the form no longer shakes.

03

Confirm the error message still displays

Verify the explanation for the failed attempt still appears exactly as before.

04

Leave it on

Since there's no ongoing configuration, the module simply keeps working once enabled.

Best practices

A small, worthwhile default to change

This is a low-effort change with a genuine, if modest, upside for most sites.

01

Pair it with a restyled login page

If the login page has been custom-branded, disabling the shake removes the one remaining stock WordPress behaviour.

02

Consider it as a small accessibility improvement

Treat it as part of a broader effort to reduce unnecessary motion for visitors who are sensitive to it.

03

Don't expect any change to the error text

The message explaining a failed login stays exactly as WordPress generates it; only the animation is affected.

04

No further configuration is needed

Since it's a single toggle, there's nothing to revisit once it's enabled.

Common mistakes

Avoid assumptions that overstate its scope

The module's scope is intentionally narrow, which is easy to misjudge at a glance.

Expecting the error message to change too

The filter only removes the animation; the wording and content of the login error stay exactly the same.

Assuming it affects login security

The shake is purely visual feedback; removing it has no effect on authentication or any security mechanism.

Looking for a settings screen that isn't there

Like other single-purpose modules, this one is a toggle by design, with no further configuration screen.

Frequently asked questions

Disable Login Shake FAQ

These answers come directly from the plugin's registration logic and its settings field.

What does Disable Login Shake do?

It removes the side-to-side shake animation WordPress plays after a rejected login, using WordPress's own filter for controlling that behaviour.

Does this change the error message shown after a failed login?

No. The error message stays exactly the same; only the shake animation is removed.

How does WordPress normally decide when to shake the login form?

It checks a failed login's error code against a list of codes registered through the shake_error_codes filter; this module empties that list.

Is this a documented WordPress feature, or a workaround?

It's WordPress's own documented filter for this exact purpose, not a hack or an undocumented behaviour.

Does removing the shake affect login security in any way?

No. The animation is purely visual; it has no connection to authentication, rate limiting, or any other security mechanism.

Why would motion matter for a login form?

A repeated shaking movement can be uncomfortable for visitors with vestibular or motion sensitivity, even though the animation itself carries no extra information.

Does this pair with a custom login page design?

Yes. A login page restyled with a custom logo, colors and layout often still carries the default WordPress shake; this removes that one remaining stock behaviour.

Are there any settings beyond turning the module on?

No. It's a single toggle with no additional configuration.

Does this module add any JavaScript to the login page?

No. The shake is controlled through a PHP filter; there's no script involved on either side.

Who can turn this module on?

Only an administrator with access to the TheOneWP settings screen.

Stop shaking the login form at every mistake.Keep the message, remove the motion.

Use Disable Login Shake to remove the animation with WordPress's own built-in filter, leaving the error message exactly as it was.