{"id":287022,"date":"2026-03-25T06:34:58","date_gmt":"2026-03-25T06:34:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/user-suspend\/"},"modified":"2026-03-25T06:35:05","modified_gmt":"2026-03-25T06:35:05","slug":"user-suspend","status":"publish","type":"plugin","link":"https:\/\/kin.wordpress.org\/plugins\/user-suspend\/","author":23461390,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"2.1.2","stable_tag":"2.1.2","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"User Suspend","header_author":"Joel Ledesma","header_description":"Suspend user accounts with timed or permanent bans, ban reasons, email notifications, audit logging, and bulk actions.","assets_banners_color":"203751","last_updated":"2026-03-25 06:35:05","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/joelledesma.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":82,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.2":{"tag":"2.1.2","author":"joelledesmajr","date":"2026-03-25 06:35:05"}},"upgrade_notice":{"2.1.1":"<p>Security hardening release. Recommended for all users.<\/p>","2.1.0":"<p>Admin UI redesign. No database changes \u2014 safe to upgrade.<\/p>","2.0.3":"<p>Rename to User Suspend. No database changes \u2014 safe to upgrade from 2.0.x.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3490563,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3490563,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3490563,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3490563,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.1.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3490563,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3490563,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3490563,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Suspension section on the user profile edit screen.","2":"Suspended Users admin page with audit log.","3":"Status column in the Users list table."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[602,1756,600,169918,1917],"plugin_category":[38,44,54],"plugin_contributors":[258573],"plugin_business_model":[],"class_list":["post-287022","plugin","type-plugin","status-publish","hentry","plugin_tags-login","plugin_tags-moderation","plugin_tags-security","plugin_tags-suspend","plugin_tags-users","plugin_category-authentication","plugin_category-discussion-and-community","plugin_category-security-and-spam-protection","plugin_contributors-joelledesmajr","plugin_committers-joelledesmajr"],"banners":{"banner":"https:\/\/ps.w.org\/user-suspend\/assets\/banner-772x250.png?rev=3490563","banner_2x":"https:\/\/ps.w.org\/user-suspend\/assets\/banner-1544x500.png?rev=3490563","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/user-suspend\/assets\/icon-128x128.png?rev=3490563","icon_2x":"https:\/\/ps.w.org\/user-suspend\/assets\/icon-256x256.png?rev=3490563","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/user-suspend\/assets\/screenshot-1.png?rev=3490563","caption":"Suspension section on the user profile edit screen."},{"src":"https:\/\/ps.w.org\/user-suspend\/assets\/screenshot-2.png?rev=3490563","caption":"Suspended Users admin page with audit log."},{"src":"https:\/\/ps.w.org\/user-suspend\/assets\/screenshot-3.png?rev=3490563","caption":"Status column in the Users list table."}],"raw_content":"<!--section=description-->\n<p>User Suspend gives you a straightforward way to suspend WordPress user accounts. Suspended users are blocked at login and their active sessions are ended immediately.<\/p>\n\n<p>You can set a reason for each suspension, choose a date for it to lift automatically, and track everything through a built-in audit log.<\/p>\n\n<p><strong>Features<\/strong><\/p>\n\n<ul>\n<li>Permanent or timed suspensions \u2014 set an expiry date and the account is automatically restored<\/li>\n<li>Suspension reasons stored and emailed to the user when their account is suspended<\/li>\n<li>Active sessions are destroyed the moment a suspension is applied<\/li>\n<li>Audit log tracks every suspend and unsuspend action with timestamps<\/li>\n<li>Dedicated Suspended Users page under the Users menu<\/li>\n<li>Status column in the Users list table<\/li>\n<li>Bulk suspend and unsuspend from the Users list table<\/li>\n<li>Administrators and the currently logged-in user cannot be suspended<\/li>\n<li>Object caching for fast suspension status lookups<\/li>\n<li>Clean uninstall removes all plugin data<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>user-suspend<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Users \u2192 Suspended Users<\/strong> to manage suspensions, or open any user's profile to suspend them individually.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20suspending%20a%20user%20log%20them%20out%20immediately%3F\"><h3>Will suspending a user log them out immediately?<\/h3><\/dt>\n<dd><p>Yes. The moment you save a suspension, all of that user's active sessions are destroyed.<\/p><\/dd>\n<dt id=\"can%20i%20set%20a%20suspension%20to%20expire%20automatically%3F\"><h3>Can I set a suspension to expire automatically?<\/h3><\/dt>\n<dd><p>Yes. When suspending a user from their profile page, set a date and time in the Expiry field. The account will be restored automatically when that time passes.<\/p><\/dd>\n<dt id=\"can%20administrators%20be%20suspended%3F\"><h3>Can administrators be suspended?<\/h3><\/dt>\n<dd><p>No. Administrator accounts and your own account are protected and cannot be suspended.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20the%20suspension%20data%20if%20i%20deactivate%20the%20plugin%3F\"><h3>What happens to the suspension data if I deactivate the plugin?<\/h3><\/dt>\n<dd><p>Deactivating the plugin does not remove any data. Uninstalling (deleting) the plugin removes all suspension records, audit log entries, and plugin options from the database.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Security hardening: hard-fail on missing or invalid bulk action nonce.<\/li>\n<li>Security hardening: sanitize bulk user ID array with absint before processing.<\/li>\n<li>Security hardening: strip all HTML tags from email notification fields.<\/li>\n<li>Security hardening: escape avatar output with wp_kses_post.<\/li>\n<li>Removed internal meta key from migration summary stored in options.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Redesigned admin UI with stats bar, avatar thumbnails, and card-style layout.<\/li>\n<li>Added dedicated CSS file for all admin styles.<\/li>\n<li>Responsive layout for mobile admin screens.<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Renamed plugin to User Suspend.<\/li>\n<li>Updated Tested up to: 6.9.<\/li>\n<li>Added readme.txt for WordPress.org.<\/li>\n<li>Fixed all WordPress Coding Standards violations.<\/li>\n<li>Added complete PHPDoc coverage across all files.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fixed activation timeout in WordPress Playground by deferring data migration to admin_init.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Complete rewrite with class-based architecture.<\/li>\n<li>Added timed suspensions, reasons, audit log, email notifications, bulk actions, and session destruction.<\/li>\n<li>Fixed critical logic bug in v1.0 where saving any user profile could trigger a ban.<\/li>\n<li>Added automatic migration of v1.0 ban data on activation.<\/li>\n<\/ul>","raw_excerpt":"Suspend WordPress user accounts with timed or permanent bans, reasons, email notifications, and a full audit log.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/287022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=287022"}],"author":[{"embeddable":true,"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/joelledesmajr"}],"wp:attachment":[{"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=287022"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=287022"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=287022"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=287022"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=287022"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kin.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=287022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}