=== WP Last Login === Contributors: obenland Tags: admin, user, login, last login, login date Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=K32M878XHREQC Requires at least: 6.5 Tested up to: 6.9 Requires PHP: 7.4 Stable tag: 7 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Adds a sortable "Last Login" column to the Users screen — spot inactive accounts and see who's actually using your site. == Description == **WP Last Login** records when each user signs in and surfaces it as a sortable column on the Users screen — so you can see who's active, identify dormant accounts, and confirm that real people are coming back. **Features** * Sortable "Last Login" column on the Users screen, including the network admin user list on multisite. * Hover any date to reveal the exact login time. * Captures logins via the standard `wp_login` action, so it works with any login flow that triggers it — including the [Two Factor](https://wordpress.org/plugins/two-factor/) plugin, WooCommerce, BuddyBoss, and most social-login plugins. * Users without a recorded login show a neutral em-dash (—) — never a misleading "never" — and still sort correctly when ordered by last login. * Lightweight: one user meta key, no settings page, no extra database tables. * Filter hooks let you customize the date format or hide the column from non-admin roles. == Installation == 1. Download WP Last Login. 2. Unzip the folder into the `/wp-content/plugins/` directory. 3. Activate the plugin through the 'Plugins' menu in WordPress. == Frequently Asked Questions == = Why does the column show an em-dash (—) for all my users? = The plugin records a login when a user signs in *after* it's been activated. WordPress doesn't store historical login data, so existing accounts will start populating their "Last Login" the next time each user logs in. Hovering the dash shows a tooltip explaining the same. = How do I change the date format or show the time? = The date follows your site's general date format (Settings → General); the exact time appears on hover. To override the date format, use the `wpll_date_format` filter: add_filter( 'wpll_date_format', function() { return 'Y-m-d H:i'; } ); = How do I hide the column from non-admin users? = Filter `wpll_current_user_can` and return a capability check. Login tracking still happens — only column visibility is gated: add_filter( 'wpll_current_user_can', function() { return current_user_can( 'manage_options' ); } ); = Does it work with multisite, Two Factor, WooCommerce, BuddyBoss, or social login plugins? = Yes. The plugin hooks into WordPress's standard `wp_login` action, so any login method that triggers it is captured. The Two Factor plugin (which interrupts `wp_login`) is supported via a dedicated hook. = What happens to my data if I deactivate the plugin? = Deactivating leaves stored login timestamps intact, so reactivating preserves history. Uninstalling (deleting the plugin entirely) removes all of the plugin's user meta. == Screenshots == 1. Last login column in the user table. == Changelog == = 7 = * Added compatibility with Two Factor plugin. Props @bkno. * Improved date display to display login time on hover. = 6 = * Revamped file structure to remove unnecessary files. * Fixed a bug where login dates were overwritten on plugin reactivation. Props @richardbuff. = 5 = * Improved uninstall routine (no longer queries all users). * Updated utility class. * Tested with WordPress 6.1. = 4 = * Improved date display to account for the timezone of the site. Props @knutsp. = 3 = * Fixed a bug where users who haven't logged in disappear from user lists when ordering by last login. See https://wordpress.org/support/topic/new-users-dont-get-the-meta-field/ = 2 = * Maintenance release. * Updated code to adhere to WordPress Coding Standards. * Tested with WordPress 5.0. = 1.4.0 = * Fixed a long standing bug, where sorting users by last login didn't work. * Tested with WordPress 4.3. = 1.3.0 = * Maintenance release. * Tested with WordPress 4.0. = 1.2.1 = * Reverts changes to wp_login() as the second argument seems not to be set at all times. = 1.2.0 = * Users are now sortable by last login! * Updated utility class. * Added Danish translation. Props thomasclausen. = 1.1.2 = * Fixed a bug where content of other custom columns were not displayed. = 1.1.1 = * Updated utility class. = 1.1.0 = * Made the display of the column filterable. * Widened the column a bit to accommodate for large date strings. = 1.0 = * Initial Release. == Upgrade Notice == == Plugin Filter Hooks == **wpll_current_user_can** (*boolean*) > Whether the column is supposed to be shown. > Default: true **wpll_date_format** (*string*) > The date format string for the date output.