Force logout, four ways
A row action for one user, a bulk action for selected users, by role in batched chunks, or everyone at once in a single query. Terminating a compromised account's access takes seconds, not a support ticket.
See exactly who holds a session on your site, end the ones that shouldn't be there — and flip a site-wide lockdown when you need everyone out. Built to stay fast on sites with hundreds of thousands of users.
free forever · no pro tier · no ads · nothing phones home
Guard watches the front door; Sessions manages everyone already inside — visibility first, then the lever to act.
A row action for one user, a bulk action for selected users, by role in batched chunks, or everyone at once in a single query. Terminating a compromised account's access takes seconds, not a support ticket.
Last-login and online columns, sortable and batch-loaded in one indexed query. Users who have never logged in sort sensibly instead of silently vanishing from the list.
One switch blocks every non-admin authentication attempt — for the middle of an incident, or a maintenance window. A persistent admin banner means nobody forgets it's on, and deactivating the plugin always releases the lock.
Online threshold (how recent counts as "online"), heartbeat throttle (how often presence writes), role-logout batch size, and the message blocked users see — all tunable, all sane by default.
Oiko Sessions began with a full audit of a widely used force-logout plugin — the kind of review WP HealthKit runs every day. It found four problems worth fixing properly, so rather than patch around them, we rebuilt the idea on the Oiko boilerplate.
The result does the same job — log users out, see who's in, lock the doors — with the queries, checks and storage a large site actually needs.
Built the Oiko way
No. The all-users action is a single SQL statement against WordPress's own session storage — no user objects are loaded into memory. Role-based logouts run in batched chunks (1,000 per pass by default, tunable), which is how the plugin stays comfortable on sites with 250,000+ users.
Administrators always pass — lockdown only blocks non-admin authentication. And as a safety net, deactivating the plugin releases the lock automatically, so the standard "rename the plugin folder" escape hatch works too.
Nothing. The plugin drops its own presence table and deletes its own options — and touches nothing else. It never alters shared core tables, so there's no cleanup debt if you move on.