{"id":184592,"date":"2024-01-19T08:58:19","date_gmt":"2024-01-19T08:58:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/password-reset-enforcement\/"},"modified":"2025-11-28T14:31:58","modified_gmt":"2025-11-28T14:31:58","slug":"password-reset-enforcement","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/password-reset-enforcement\/","author":21092980,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.11.1","stable_tag":"1.11.1","tested":"6.9.4","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"Password Reset Enforcement","header_author":"Teydea Studio","header_description":"Force users to reset their WordPress passwords.","assets_banners_color":"fbfcfc","last_updated":"2025-11-28 14:31:58","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/teydeastudio.com\/?utm_source=Password+Reset+Enforcement","header_author_uri":"https:\/\/teydeastudio.com\/?utm_source=Password+Reset+Enforcement","rating":4,"author_block_rating":0,"active_installs":100,"downloads":3657,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"teydeastudio","date":"2024-01-19 09:01:53"},"1.1.0":{"tag":"1.1.0","author":"teydeastudio","date":"2024-01-26 15:27:01"},"1.1.1":{"tag":"1.1.1","author":"teydeastudio","date":"2024-02-01 14:06:33"},"1.10.0":{"tag":"1.10.0","author":"teydeastudio","date":"2025-02-21 08:57:31"},"1.10.1":{"tag":"1.10.1","author":"teydeastudio","date":"2025-04-04 10:14:22"},"1.10.2":{"tag":"1.10.2","author":"teydeastudio","date":"2025-05-08 12:43:25"},"1.11.0":{"tag":"1.11.0","author":"teydeastudio","date":"2025-10-31 08:37:13"},"1.11.1":{"tag":"1.11.1","author":"teydeastudio","date":"2025-11-28 14:31:58"},"1.2.0":{"tag":"1.2.0","author":"teydeastudio","date":"2024-03-26 12:19:48"},"1.3.0":{"tag":"1.3.0","author":"teydeastudio","date":"2024-04-26 13:46:48"},"1.4.0":{"tag":"1.4.0","author":"teydeastudio","date":"2024-05-24 13:27:09"},"1.5.0":{"tag":"1.5.0","author":"teydeastudio","date":"2024-07-11 13:44:12"},"1.6.0":{"tag":"1.6.0","author":"teydeastudio","date":"2024-08-30 07:30:40"},"1.7.0":{"tag":"1.7.0","author":"teydeastudio","date":"2024-10-17 19:42:47"},"1.7.1":{"tag":"1.7.1","author":"teydeastudio","date":"2024-10-23 16:57:07"},"1.7.2":{"tag":"1.7.2","author":"teydeastudio","date":"2024-10-25 12:24:27"},"1.8.0":{"tag":"1.8.0","author":"teydeastudio","date":"2024-11-08 12:41:29"},"1.9.0":{"tag":"1.9.0","author":"teydeastudio","date":"2024-12-13 11:18:32"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":1,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3077636,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3077636,"resolution":"256x256","location":"assets","locale":""},"icon.svg":{"filename":"icon.svg","revision":3116506,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3387483,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3387483,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3405287,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/wp-admin\\\/options-general.php?page=password-reset-enforcement-settings-page\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"6.9\"},\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"password-reset-enforcement\"},\"options\":{\"activate\":true}},{\"step\":\"wp-cli\",\"command\":\"wp user create testuser1 testuser1@example.com --role=subscriber --user_pass=password --display_name=\\\"Test User 1\\\" --send-email=false\"},{\"step\":\"wp-cli\",\"command\":\"wp user create testuser2 testuser2@example.com --role=subscriber --user_pass=password --display_name=\\\"Test User 2\\\" --send-email=false\"},{\"step\":\"wp-cli\",\"command\":\"wp user create testuser3 testuser3@example.com --role=editor --user_pass=password --display_name=\\\"Test User 3\\\" --send-email=false\"},{\"step\":\"wp-cli\",\"command\":\"wp user create testuser4 testuser4@example.com --role=editor --user_pass=password --display_name=\\\"Test User 4\\\" --send-email=false\"},{\"step\":\"wp-cli\",\"command\":\"wp user create testuser5 testuser5@example.com --role=editor --user_pass=password --display_name=\\\"Test User 5\\\" --send-email=false\"},{\"step\":\"wp-cli\",\"command\":\"wp user create testuser6 testuser6@example.com --role=author --user_pass=password --display_name=\\\"Test User 6\\\" --send-email=false\"}]}"}},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.1.1","1.10.0","1.10.1","1.10.2","1.11.0","1.11.1","1.2.0","1.3.0","1.4.0","1.5.0","1.6.0","1.7.0","1.7.1","1.7.2","1.8.0","1.9.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3387483,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3387483,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3387483,"resolution":"3","location":"assets","locale":""}},"screenshots":{"1":"Force password reset for all users.","2":"Target users by role, username, or display name.","3":"Process the action."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[14489,241995,15785,1228,1173],"plugin_category":[54],"plugin_contributors":[162490,223836],"plugin_business_model":[],"class_list":["post-184592","plugin","type-plugin","status-publish","hentry","plugin_tags-force-password-change","plugin_tags-password-enforcement","plugin_tags-reset-password","plugin_tags-secure-login","plugin_tags-wordpress-security","plugin_category-security-and-spam-protection","plugin_contributors-bartoszgadomski","plugin_contributors-teydeastudio","plugin_committers-teydeastudio","plugin_support_reps-bartoszgadomski"],"banners":{"banner":"https:\/\/ps.w.org\/password-reset-enforcement\/assets\/banner-772x250.jpg?rev=3387483","banner_2x":"https:\/\/ps.w.org\/password-reset-enforcement\/assets\/banner-1544x500.jpg?rev=3387483","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/password-reset-enforcement\/assets\/icon.svg?rev=3116506","icon":"https:\/\/ps.w.org\/password-reset-enforcement\/assets\/icon.svg?rev=3116506","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/password-reset-enforcement\/assets\/screenshot-1.png?rev=3387483","caption":"Force password reset for all users."},{"src":"https:\/\/ps.w.org\/password-reset-enforcement\/assets\/screenshot-2.png?rev=3387483","caption":"Target users by role, username, or display name."},{"src":"https:\/\/ps.w.org\/password-reset-enforcement\/assets\/screenshot-3.png?rev=3387483","caption":"Process the action."}],"raw_content":"<!--section=description-->\n<p><strong>Enhance your WordPress website's security by forcing users to reset their passwords.<\/strong><\/p>\n\n<p>Password Reset Enforcement is a simple yet powerful security plugin that allows site administrators to require users to update their passwords\u2014ideal after a potential data breach, routine security checks, or during onboarding\/offboarding processes.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Force password reset for all users<\/strong>, specific user roles, or individual users.<\/li>\n<li><strong>Optional email notification<\/strong> to users with a direct reset link.<\/li>\n<li><strong>Flexible login behavior<\/strong>:\n\n<ul>\n<li><em>Allow login before resetting<\/em>: users log in with the old password, are immediately prompted to set a new one.<\/li>\n<li><em>Block login until reset<\/em>: users must reset their password before accessing the dashboard.<\/li>\n<\/ul><\/li>\n<li><strong>Choose reset timing<\/strong>:\n\n<ul>\n<li><em>Immediately<\/em>: forces logout and password reset on next login.<\/li>\n<li><em>After session expiry<\/em>: users are asked to reset after their current session ends.<\/li>\n<\/ul><\/li>\n<li><strong>WP-CLI support<\/strong> for command-line password management and automation.<\/li>\n<li><strong>Multisite compatible<\/strong> (network-wide reset only).<\/li>\n<li>Optimized for performance on large-scale and enterprise WordPress installations.<\/li>\n<\/ul>\n\n<h3>Use Cases<\/h3>\n\n<ul>\n<li>Responding to a <strong>security breach<\/strong> or suspected compromise.<\/li>\n<li>Enforcing <strong>routine password changes<\/strong> in corporate environments.<\/li>\n<li>Applying <strong>onboarding\/offboarding security policies<\/strong> for teams or membership sites.<\/li>\n<\/ul>\n\n<h3>Compatibility<\/h3>\n\n<ul>\n<li>Works on both single-site and multisite (network) WordPress setups.<\/li>\n<li>Supports PHP 7.4+ and WordPress 6.6 through 6.8.<\/li>\n<li>Compatible with modern WordPress admin experience.<\/li>\n<\/ul>\n\n<h3>WP-CLI Commands<\/h3>\n\n<p>This plugin provides WP-CLI commands for automated password reset management:<\/p>\n\n<p><strong>Force Password Reset<\/strong>\n    wp password-reset-enforcement force [--to_all] [--to_roles=] [--to_users=] [--applicability=] [--with_email] [--with_current_password_allowed] [--limit=] [--paged=]<\/p>\n\n<p><strong>Clear Password Reset Enforcement<\/strong>\n    wp password-reset-enforcement clear [--to_all] [--to_roles=] [--to_users=] [--limit=] [--paged=]<\/p>\n\n<p><strong>List Users with Enforced Password Reset<\/strong>\n    wp password-reset-enforcement list [--limit=] [--paged=]<\/p>\n\n<p><strong>Check Password Reset Status<\/strong>\n    wp password-reset-enforcement status [--to_all] [--to_roles=] [--to_users=] [--limit=] [--paged=]<\/p>\n\n<h4>Command Options<\/h4>\n\n<ul>\n<li><code>--to_all<\/code>: Target all users on the site<\/li>\n<li><code>--to_roles=&lt;roles&gt;<\/code>: Comma-separated list of user roles (e.g., editor,administrator)<\/li>\n<li><code>--to_users=&lt;user_ids&gt;<\/code>: Comma-separated list of specific user IDs (e.g., 1,5,10)<\/li>\n<li><code>--applicability=&lt;when&gt;<\/code>: When reset takes effect (immediately, after_session_expiry)<\/li>\n<li><code>--with_email<\/code>: Send email notifications to affected users (default: true)<\/li>\n<li><code>--with_current_password_allowed<\/code>: Allow users to reuse current password (default: false)<\/li>\n<li><code>--limit=&lt;number&gt;<\/code>: Maximum users to process in single operation<\/li>\n<li><code>--paged=&lt;page&gt;<\/code>: Page number for pagination<\/li>\n<\/ul>\n\n<h4>Command Examples<\/h4>\n\n<pre><code>wp password-reset-enforcement force --to_all\nwp password-reset-enforcement force --to_roles=editor,administrator --applicability=after_session_expiry\nwp password-reset-enforcement clear --to_users=1,5,10\nwp password-reset-enforcement list --limit=50 --paged=2\nwp password-reset-enforcement status --to_all --limit=50 --paged=2&lt;h3&gt;Related Plugins&lt;\/h3&gt;\n<\/code><\/pre>\n\n<p>Want to go beyond forced password resets? Check our <a href=\"https:\/\/wppasswordpolicy.com\/?utm_source=Password+Reset+Enforcement\">WP Password Policy<\/a> plugin to enforce strong password rules, block weak passwords, and set automatic expiry policies \u2014 so you'll never need to force a password reset again. [https:\/\/wordpress.org\/plugins\/password-requirements\/](Free version available on WordPress.org).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to the <code>\/wp-content\/plugins\/<\/code> directory or install via the WordPress admin panel.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to <strong>Settings \u2192 Password Reset Enforcement<\/strong> to initiate resets.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id='will%20this%20log%20users%20out%20immediately%3F'><h3>Will this log users out immediately?<\/h3><\/dt>\n<dd><p>Only if you choose the \u201cImmediately\u201d option. Otherwise, users will be asked to reset after their current session expires.<\/p><\/dd>\n<dt id='is%20it%20compatible%20with%20other%20login%20plugins%20or%202fa%20solutions%3F'><h3>Is it compatible with other login plugins or 2FA solutions?<\/h3><\/dt>\n<dd><p>Yes, Password Reset Enforcement is designed for compatibility and works well alongside popular authentication and security plugins.<\/p><\/dd>\n<dt id='can%20i%20use%20this%20on%20a%20woocommerce%20site%3F'><h3>Can I use this on a WooCommerce site?<\/h3><\/dt>\n<dd><p>Absolutely. Works seamlessly with WooCommerce and other membership or eCommerce platforms.<\/p><\/dd>\n<dt id='does%20this%20plugin%20support%20wp-cli%3F'><h3>Does this plugin support WP-CLI?<\/h3><\/dt>\n<dd><p>Yes! The plugin includes comprehensive WP-CLI commands for forcing password resets, clearing enforcement, and checking status. Perfect for automation, server management, and bulk operations.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.11.1 (2025-11-28)<\/h4>\n\n<ul>\n<li>Compatibility with WordPress 6.9 confirmed<\/li>\n<li>Dependencies updated<\/li>\n<\/ul>\n\n<h4>1.11.0 (2025-10-31)<\/h4>\n\n<ul>\n<li>Direct links to force password reset has been added to the Users page along with bulk action<\/li>\n<li>Clear indicators that a password reset has been enforced for a given user has been added to the Users and User Profile screens<\/li>\n<li>User selector component has been improved<\/li>\n<li>WP-CLI commands have been added, allowing power users to force password reset, clear the enforcement, check the status, and list users for whom the password reset has been enforced<\/li>\n<li>Dependencies updated<\/li>\n<li>Code improvements<\/li>\n<\/ul>\n\n<h4>1.10.2 (2025-05-08)<\/h4>\n\n<ul>\n<li>Plugin links and references to Teydea Studio updated<\/li>\n<li>Dependencies updated<\/li>\n<\/ul>\n\n<h4>1.10.1 (2025-04-04)<\/h4>\n\n<ul>\n<li>Compatibility with WordPress 6.8 confirmed<\/li>\n<li>Issue of requesting the translated string too early fixed<\/li>\n<li>Dependencies updated<\/li>\n<li>Code improvements<\/li>\n<\/ul>\n\n<h4>1.10.0 (2025-02-21)<\/h4>\n\n<ul>\n<li>Dependencies updated<\/li>\n<li>Code improvements<\/li>\n<\/ul>\n\n<h4>1.9.0 (2024-12-13)<\/h4>\n\n<ul>\n<li>Dependencies updated<\/li>\n<li>Code improvements<\/li>\n<\/ul>\n\n<h4>1.8.0 (2024-11-08)<\/h4>\n\n<ul>\n<li>Custom capabilities for managing the plugin settings implemented<\/li>\n<li>Compatibility with WordPress 6.7 confirmed<\/li>\n<li>Dependencies updated<\/li>\n<li>Code improvements<\/li>\n<\/ul>\n\n<h4>1.7.2 (2024-10-25)<\/h4>\n\n<ul>\n<li>JS dependency map and tree-shaking optimized<\/li>\n<\/ul>\n\n<h4>1.7.1 (2024-10-23)<\/h4>\n\n<ul>\n<li>Add missing Cache utility class<\/li>\n<\/ul>\n\n<h4>1.7.0 (2024-10-17)<\/h4>\n\n<ul>\n<li>Language mapping file added for easier generation of JSON translation files<\/li>\n<li>Language files updated for Polish translation<\/li>\n<li>Add caching to user roles getter function, along with proper cache invalidation, to improve the plugin's performance<\/li>\n<li>Dependencies updated<\/li>\n<li>Code improvements<\/li>\n<\/ul>\n\n<p>(For older records, see the <code>changelog.txt<\/code> file).<\/p>","raw_excerpt":"Easily enforce password reset for WordPress users. Choose to force password changes site-wide, by user and\/or by role, to boost your site&#039;s security.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/184592","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=184592"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/teydeastudio"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=184592"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=184592"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=184592"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=184592"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=184592"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=184592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}