{"id":16323,"date":"2012-08-17T20:26:14","date_gmt":"2012-08-17T20:26:14","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/expire-users\/"},"modified":"2025-09-19T16:05:14","modified_gmt":"2025-09-19T16:05:14","slug":"expire-users","status":"closed","type":"plugin","link":"https:\/\/azb.wordpress.org\/plugins\/expire-users\/","author":123724,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.2.2","stable_tag":"1.2.2","tested":"6.8.5","requires":"5.4","requires_php":"7.4","requires_plugins":null,"header_name":"Expire Users","header_author":"Ben Huson","header_description":"","assets_banners_color":"669999","last_updated":"2025-09-19 16:05:14","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.paypal.com\/cgi-bin\/webscr?cmd=_s-xclick&hosted_button_id=MW3TJNHM283LU","header_plugin_uri":"http:\/\/wordpress.org\/extend\/plugins\/expire-users\/","header_author_uri":"https:\/\/github.com\/benhuson\/expire-users","rating":4.8,"author_block_rating":0,"active_installs":4000,"downloads":53583,"num_ratings":25,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1":{"tag":"0.1","author":"husobj","date":"2012-08-17 20:27:33"},"0.2":{"tag":"0.2","author":"husobj","date":"2012-09-26 23:00:28"},"0.3":{"tag":"0.3","author":"husobj","date":"2012-10-01 21:47:51"},"0.4":{"tag":"0.4","author":"husobj","date":"2012-12-11 18:13:07"},"0.5":{"tag":"0.5","author":"husobj","date":"2013-02-28 00:02:32"},"0.6":{"tag":"0.6","author":"husobj","date":"2013-06-24 11:54:40"},"0.7":{"tag":"0.7","author":"husobj","date":"2014-04-02 08:39:16"},"0.8":{"tag":"0.8","author":"husobj","date":"2014-04-15 22:41:11"},"0.9":{"tag":"0.9","author":"husobj","date":"2014-05-20 08:07:05"},"1.0":{"tag":"1.0","author":"husobj","date":"2016-09-04 20:32:53"},"1.0.1":{"tag":"1.0.1","author":"husobj","date":"2017-05-16 21:32:22"},"1.0.2":{"tag":"1.0.2","author":"husobj","date":"2017-05-17 21:03:16"},"1.0.3":{"tag":"1.0.3","author":"husobj","date":"2018-09-25 21:43:00"},"1.0.4":{"tag":"1.0.4","author":"husobj","date":"2020-01-30 12:51:13"},"1.1":{"tag":"1.1","author":"husobj","date":"2020-04-22 06:55:05"},"1.2":{"tag":"1.2","author":"husobj","date":"2020-12-13 00:10:43"},"1.2.1":{"tag":"1.2.1","author":"husobj","date":"2023-04-07 09:32:09"},"1.2.2":{"tag":"1.2.2","author":"husobj","date":"2025-09-19 16:05:14"}},"upgrade_notice":{"1.2.2":"<p>Fix checking of role data. Tested up to WordPress 6.8.2<\/p>","1.2.1":"<p>Tested up to WordPress 6.2 and PHP 8.2<\/p>","1.2":"<p>Added <code>expire_users_current_user_expire_countdown<\/code> shortcode.<\/p>","1.1":"<p>Sort users by expiry date in admin and fix some login issues.<\/p>","1.0.4":"<p>On expiry, remove expiry date and continue to allow login if set.<\/p>","1.0.3":"<p>If user logged in, check expiration while browsing.<\/p>","1.0.2":"<p>Rollback changes causing multiple emails to be sent!<\/p>","1.0.1":"<p>Fix PHP7 class constructor warnings and beter checking for expire users when displaying them in the admin.<\/p>","1.0":"<p>Added expiry fields to new user admin page and &#039;expire_users_admin_email&#039; filter.<\/p>","0.9":"<p>Expired dates are displayed as red. Dates are internationalized and JavaScript\/CSS files are only loaded on the required admin pages.<\/p>","0.8":"<p>Added [expire_users_current_user_expire_date] shortcode and force check if user expired on login.<\/p>","0.7":"<p>Fix expiry dates to work with site&#039;s timezone.<\/p>","0.6":"<p>Added support for translations.<\/p>","0.5":"<p>Assign expiry details to users when they register via the register form.<\/p>","0.4":"<p>Option to enable email notifications and perform custom actions on user expiry.<\/p>","0.3":"<p>Important security update!<\/p>","0.2":"<p>Ready for translation. Fixed &quot;Expire Date In...&quot; settings.<\/p>","0.1":"<p>First release.<\/p>"},"ratings":{"1":1,"2":0,"3":1,"4":0,"5":24},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":993622,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":993622,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":993622,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":993622,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1","0.2","0.3","0.4","0.5","0.6","0.7","0.8","0.9","1.0","1.0.1","1.0.2","1.0.3","1.0.4","1.1","1.2","1.2.1","1.2.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":637144,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":637144,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":637144,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":637144,"resolution":"4","location":"assets","locale":""}},"screenshots":{"1":"Expire Date column in users admin.","2":"Edit a user's expiry date and expiry actions.","3":"Edit email notification messages.","4":"User login expired error."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[9501,602,1930,1915,1917],"plugin_category":[38,54,58],"plugin_contributors":[77999],"plugin_business_model":[],"class_list":["post-16323","plugin","type-plugin","status-closed","hentry","plugin_tags-expire","plugin_tags-login","plugin_tags-password","plugin_tags-roles","plugin_tags-users","plugin_category-authentication","plugin_category-security-and-spam-protection","plugin_category-user-management","plugin_contributors-husobj","plugin_committers-husobj"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/expire-users_669999.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/expire-users\/assets\/screenshot-1.png?rev=637144","caption":"Expire Date column in users admin."},{"src":"https:\/\/ps.w.org\/expire-users\/assets\/screenshot-2.png?rev=637144","caption":"Edit a user's expiry date and expiry actions."},{"src":"https:\/\/ps.w.org\/expire-users\/assets\/screenshot-3.png?rev=637144","caption":"Edit email notification messages."},{"src":"https:\/\/ps.w.org\/expire-users\/assets\/screenshot-4.png?rev=637144","caption":"User login expired error."}],"raw_content":"<!--section=description-->\n<blockquote>\n  <p>Important security update - if you are using version 0.2 or earlier please upgrade<\/p>\n<\/blockquote>\n\n<p>This plugin allows you to set expiry dates for user logins. You can set a user to:<\/p>\n\n<ul>\n<li>Never expire (default)<\/li>\n<li>Expire in X days, weeks, moths or years<\/li>\n<li>Expire on a specific date<\/li>\n<\/ul>\n\n<p>When a user expires you can:<\/p>\n\n<ul>\n<li>Change the role of that user<\/li>\n<li>Replace the user's password with a randomly generated one<\/li>\n<li>Send an email notification to the user<\/li>\n<li>Send an email notification to the site administrator<\/li>\n<li>Remove expiry details and allow user to continue to login<\/li>\n<li>Perform you own actions using an <a href=\"https:\/\/github.com\/benhuson\/expire-users\/wiki\/expire_users_expired\"><code>expire_users_expired<\/code><\/a> hook<\/li>\n<\/ul>\n\n<p>You can automatically assign expiry details to users who sign up via the register form.<\/p>\n\n<p>The email notification messages can be configured in the admin settings.<\/p>\n\n<p>Please post in the <a href=\"http:\/\/wordpress.org\/support\/plugin\/expire-users\">support forum<\/a> if you have any questions, or refer to the <a href=\"https:\/\/github.com\/benhuson\/expire-users\/wiki\">documentation<\/a>, <a href=\"https:\/\/github.com\/benhuson\/expire-users\/issues\">report bugs<\/a> and <a href=\"https:\/\/github.com\/benhuson\/expire-users\/issues\">submit translations<\/a> at the plugin's <a href=\"https:\/\/github.com\/benhuson\/expire-users\/\">GitHub page<\/a>.<\/p>\n\n<!--section=installation-->\n<p>To install and configure this plugin...<\/p>\n\n<ol>\n<li>Upload or install the plugin through your WordPress admin.<\/li>\n<li>Activate the plugin via the 'Plugins' admin menu.<\/li>\n<li>Edit a user to set password expiry options.<\/li>\n<\/ol>\n\n<h4>Upgrading<\/h4>\n\n<p>If you are upgrading manually via FTP rather that through the WordPress automatic upgrade link, please de-activate and re-activate the plugin to ensure the plugin upgrades correctly.<\/p>\n\n<!--section=faq-->\n<p>None at present.<\/p>\n\n<!--section=changelog-->\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Fix checking of role when saving expiry data.<\/li>\n<li>Tested up to WordPress 6.8.2<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Tested up to WordPress 6.2<\/li>\n<li>Tested up to PHP 8.2<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Tested up to WordPress 5.6<\/li>\n<li>Added <code>expire_users_current_user_expire_countdown<\/code> shortcode.<\/li>\n<li>Fix <code>expire_users_email_notification_{string}<\/code> and <code>expire_users_email_admin_notification_{string}<\/code> being applied in the inverse contexts. Props <a href=\"https:\/\/github.com\/Chaddles23\/\">@Chaddles23<\/a><\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Make Expire Date column sortable in admin panel. Props @loreboldo.<\/li>\n<li>Fix error when user tries to reset password.<\/li>\n<li>Fix issue when expiry check on login happens too early.<\/li>\n<li>Fix translation of \"ERROR:\".<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>On expiry, remove expiry date and continue to allow login if set. Props @loreboldo.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>If user logged in, check expiration while browsing.<\/li>\n<li>Prepare for translation.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Rollback changes causing multiple emails to be sent!<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix PHP7 class constructor warnings.<\/li>\n<li>Check and expire users if needed when displaying in the admin.<\/li>\n<li>Check if cron needs setting up when in admin.<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Add expiry fields to new user admin page.<\/li>\n<li>Add 'expire_users_admin_email' filter to allow admin notifications to be sent to a different email address.<\/li>\n<li>Add French translation. Props ateruel.<\/li>\n<li>Add Italian translation. Props Marco Chiesi.<\/li>\n<li>Tested up to WordPress 4.2<\/li>\n<\/ul>\n\n<h4>0.9<\/h4>\n\n<ul>\n<li>Expired dates are displayed as red in admin.<\/li>\n<li>Dates are correctly internationalized.<\/li>\n<li>JavaScript and CSS files are only loaded on the required pages in admin.<\/li>\n<li>Email notifications checkboxes grouped together under new heading.<\/li>\n<li>Improved expired users database query.<\/li>\n<li>Added Expire_User-&gt;is_expired() method.<\/li>\n<li>Added version constants.<\/li>\n<\/ul>\n\n<h4>0.8<\/h4>\n\n<ul>\n<li>Added [expire_users_current_user_expire_date] shortcode.<\/li>\n<li>Force check if user expired on login.<\/li>\n<li>Fix static method warnings.<\/li>\n<\/ul>\n\n<h4>0.7<\/h4>\n\n<ul>\n<li>Fix expiry dates to work with site's timezone.<\/li>\n<li>Use date formats from WordPress settings.<\/li>\n<li>Use user's real name in notification emails if available.<\/li>\n<li>Ensure custom roles are listed in drop down menu.<\/li>\n<li>Add option to remove user expiry details and continue to allow user to login when they expire.<\/li>\n<li>Add admin help.<\/li>\n<\/ul>\n\n<h4>0.6<\/h4>\n\n<ul>\n<li>Added support for translations. Submissions welcome.<\/li>\n<\/ul>\n\n<h4>0.5<\/h4>\n\n<ul>\n<li>Added option to automatically set expiry details for users who register via the register form.<\/li>\n<\/ul>\n\n<h4>0.4<\/h4>\n\n<ul>\n<li>Enables email notifications to users and administrators.<\/li>\n<li>Add a settings page where you can configure email notification messages.<\/li>\n<li>Perform you own actions on user expiry using an <code>expire_users_expired<\/code> hook.<\/li>\n<li>Only allow users with user editing capabilities (administrators) to edit expiration dates.<\/li>\n<\/ul>\n\n<h4>0.3<\/h4>\n\n<p><strong>Important Security Update!<\/strong><\/p>\n\n<ul>\n<li>Fix authenticate() and login issue.<\/li>\n<\/ul>\n\n<h4>0.2<\/h4>\n\n<ul>\n<li>Prepare for translation.<\/li>\n<li>Fix 'Expire Date In\u2026' settings.<\/li>\n<\/ul>\n\n<h4>0.1<\/h4>\n\n<ul>\n<li>First Release. If you spot any bugs or issues please <a href=\"https:\/\/github.com\/benhuson\/expire-users\/issues\">log them here<\/a>.<\/li>\n<\/ul>","raw_excerpt":"Set expiry dates for user logins.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/16323","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=16323"}],"author":[{"embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/husobj"}],"wp:attachment":[{"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=16323"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=16323"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=16323"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=16323"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=16323"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/azb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=16323"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}