{"id":241567,"date":"2025-07-14T13:51:01","date_gmt":"2025-07-14T13:51:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/last-login-info-display\/"},"modified":"2026-10-20T13:42:41","modified_gmt":"2026-10-20T13:42:41","slug":"last-login-info-display","status":"publish","type":"plugin","link":"https:\/\/hr.wordpress.org\/plugins\/last-login-info-display\/","author":14106511,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.0","stable_tag":"2.0.0","tested":"7.1.3","requires":"5.0","requires_php":"7.2","requires_plugins":null,"header_name":"Login Intelligence \u2013 User Activity & Login History","header_author":"Ahmod Musa","header_description":"Adds \"Last Login\" and \"Login Count\" columns to the WordPress Users dashboard to track user activity.","assets_banners_color":"ebf7fa","last_updated":"2026-10-20 13:42:41","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.buymeacoffee.com\/musa379","header_plugin_uri":"https:\/\/ahmodmusa.com\/last-login-info-display\/","header_author_uri":"https:\/\/profiles.wordpress.org\/musabin\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":666,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"musabin","date":"2025-07-14 14:20:58","revision":3327567},"1.1.1":{"tag":"1.1.1","author":"musabin","date":"2026-01-02 13:44:03","revision":3431066},"2.0.0":{"tag":"2.0.0","author":"musabin","date":"2026-10-20 13:42:41","revision":3756826}},"upgrade_notice":{"2.0.0":"<p>Major release introducing consolidated Users &gt; Login Intelligence menu, 4-tab dashboard, Security Radar, User Lifecycle states, custom event store, and configurable retention. Existing login metadata and settings are automatically preserved and migrated.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3756862,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3756862,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3756826,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3756826,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0","1.1.1","2.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3756826,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3756826,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3756826,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3756826,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3756826,"resolution":"5","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Overview Dashboard: Authentication volume KPI cards, 7-day velocity chart, and user lifecycle progress","2":"Activity History: Full event stream table with pagination and event type filters (user_login, login_failed, user_logout)","3":"Security Radar: Rule-based local anomaly detection, advisory signal cards, and active session monitoring","4":"Users List Table: Sortable Last Login and Login Count columns, color-coded lifecycle badges, and state filter tabs","5":"Settings &amp; Privacy: Display preferences, lifecycle thresholds, data retention schedules, and uninstall data policy"}},"plugin_section":[],"plugin_tags":[83,602,600,2461,1917],"plugin_category":[38,54],"plugin_contributors":[244905],"plugin_business_model":[],"class_list":["post-241567","plugin","type-plugin","status-publish","hentry","plugin_tags-admin","plugin_tags-login","plugin_tags-security","plugin_tags-user-management","plugin_tags-users","plugin_category-authentication","plugin_category-security-and-spam-protection","plugin_contributors-musabin","plugin_committers-musabin"],"banners":{"banner":"https:\/\/ps.w.org\/last-login-info-display\/assets\/banner-772x250.png?rev=3756826","banner_2x":"https:\/\/ps.w.org\/last-login-info-display\/assets\/banner-1544x500.png?rev=3756826","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/last-login-info-display\/assets\/icon-128x128.gif?rev=3756862","icon_2x":"https:\/\/ps.w.org\/last-login-info-display\/assets\/icon-256x256.gif?rev=3756862","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/last-login-info-display\/assets\/screenshot-1.png?rev=3756826","caption":"Overview Dashboard: Authentication volume KPI cards, 7-day velocity chart, and user lifecycle progress"},{"src":"https:\/\/ps.w.org\/last-login-info-display\/assets\/screenshot-2.png?rev=3756826","caption":"Activity History: Full event stream table with pagination and event type filters (user_login, login_failed, user_logout)"},{"src":"https:\/\/ps.w.org\/last-login-info-display\/assets\/screenshot-3.png?rev=3756826","caption":"Security Radar: Rule-based local anomaly detection, advisory signal cards, and active session monitoring"},{"src":"https:\/\/ps.w.org\/last-login-info-display\/assets\/screenshot-4.png?rev=3756826","caption":"Users List Table: Sortable Last Login and Login Count columns, color-coded lifecycle badges, and state filter tabs"},{"src":"https:\/\/ps.w.org\/last-login-info-display\/assets\/screenshot-5.png?rev=3756826","caption":"Settings &amp; Privacy: Display preferences, lifecycle thresholds, data retention schedules, and uninstall data policy"}],"raw_content":"<!--section=description-->\n<p>Login Intelligence helps WordPress administrators understand how users access their websites by providing clear, actionable insights into authentication velocity, account engagement, active sessions, and local security signals.<\/p>\n\n<p>All functionality runs entirely on your WordPress server using deterministic database queries and transient caching. There is zero third-party cloud tracking, zero external API dependencies, no automated user lockouts, and no paywalls.<\/p>\n\n<h3>Key Features<\/h3>\n\n<ul>\n<li><strong>Overview Dashboard<\/strong>: Centralized view of authentication velocity, 7-day login volume trends, and user lifecycle distributions.<\/li>\n<li><strong>Activity History<\/strong>: Complete event stream capturing successful logins, failed attempts, and logouts with pagination and event type filters.<\/li>\n<li><strong>Security Radar<\/strong>: Rule-based local anomaly detection highlighting failed login surges, concurrent sessions across devices, dormant account reactivations, and new browser contexts.<\/li>\n<li><strong>User Lifecycle State Engine<\/strong>: Automatically categorizes accounts into Active, Idle, Dormant, and Never Logged In with color-coded badges and native Users list table filter tabs.<\/li>\n<li><strong>Session Intelligence &amp; Device Context<\/strong>: Inspect active sessions with parsed browser, operating system, and device type without intrusive client-side fingerprinting.<\/li>\n<li><strong>Synchronized Dual-Write Engine<\/strong>: Fast user metadata caching for immediate administrative sorting paired with a dedicated append-only <code>wp_llid_events<\/code> database table for historical auditing.<\/li>\n<li><strong>User Profile Activity Timeline<\/strong>: View individual user authentication history directly on the user profile edit screen with efficient cursor pagination.<\/li>\n<li><strong>Automated Data Retention<\/strong>: Scheduled daily WP-Cron pruning maintains a lean database footprint according to your configured retention schedule.<\/li>\n<li><strong>Privacy by Design<\/strong>: On-premise event storage, IP address anonymization options, and full integration with WordPress Core Personal Data Exporter and Eraser tools.<\/li>\n<li><strong>Multisite Compatible<\/strong>: Works seamlessly on single-site WordPress installations and across WordPress Multisite networks.<\/li>\n<li><strong>100% Free<\/strong>: No Pro tiers, paid add-ons, license keys, or upsell notices.<\/li>\n<\/ul>\n\n<h3>How It Works<\/h3>\n\n<ol>\n<li><strong>Authentication Monitoring<\/strong>: When a user attempts to log in or log out, Login Intelligence captures the event via WordPress core authentication hooks (<code>wp_login<\/code>, <code>wp_login_failed<\/code>, and <code>clear_auth_cookie<\/code>).<\/li>\n<li><strong>Dual-Write Storage<\/strong>: The plugin updates the user's metadata summary (last login time, login count, IP, and user agent) for instant sorting in the WordPress Users table, while appending a structured event record to the dedicated <code>wp_llid_events<\/code> custom table.<\/li>\n<li><strong>Local Signal Detection<\/strong>: Security Radar calculates authentication velocity directly from local database queries, comparing recent event frequencies against configurable thresholds (such as 5 failed attempts within 15 minutes or logins from multiple concurrent IPs).<\/li>\n<li><strong>Advisory Feedback<\/strong>: Security Radar provides purely observational, advisory signals. It never blocks, throttles, or locks out users automatically, preserving administrative control and preventing accidental lockout of legitimate users.<\/li>\n<li><strong>Scheduled Maintenance<\/strong>: A daily WP-Cron event automatically purges activity records older than your configured retention window (default 90 days), ensuring database efficiency over time.<\/li>\n<\/ol>\n\n<h3>Privacy and Data Retention<\/h3>\n\n<p>Login Intelligence is designed with a strict privacy-first architecture:<\/p>\n\n<ul>\n<li><strong>On-Premise Storage<\/strong>: All authentication events, session metadata, and configuration options reside exclusively within your WordPress installation's MySQL\/MariaDB database.<\/li>\n<li><strong>IP Address Handling<\/strong>: IP addresses are recorded strictly for authentication auditing and local anomaly detection. Administrators can configure IP retention or anonymization according to their site policies.<\/li>\n<li><strong>WordPress Core Privacy Tools<\/strong>: The plugin fully implements the WordPress Core Personal Data Exporter and Personal Data Eraser APIs. When an administrator fulfills a data export or erasure request, historical login events and metadata associated with that user are included or erased accordingly.<\/li>\n<li><strong>Automated Data Pruning<\/strong>: An automated daily WP-Cron job prunes historical event records older than the administrator-configured retention period (default 90 days).<\/li>\n<li><strong>Controlled Uninstall Policy<\/strong>: Plugin data is retained upon uninstallation by default. Site administrators have explicit control via the \"Delete all plugin data when uninstalled\" setting to remove the custom event table and all plugin options when desired.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>last-login-info-display<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the plugin directly through the WordPress Plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Navigate to <strong>Users \u2192 Login Intelligence<\/strong> to view your authentication dashboard, or inspect the \"Last Login\" and \"Login Count\" columns in your Users list table.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20can%20i%20find%20the%20login%20intelligence%20dashboard%3F\"><h3>Where can I find the Login Intelligence Dashboard?<\/h3><\/dt>\n<dd><p>In your WordPress admin sidebar, navigate to <strong>Users \u2192 Login Intelligence<\/strong>. Administrators can monitor login volume, review activity history, inspect active sessions, examine security signals, and configure plugin settings from this consolidated screen.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20transmit%20data%20to%20external%20servers%20or%20cloud%20services%3F\"><h3>Does this plugin transmit data to external servers or cloud services?<\/h3><\/dt>\n<dd><p>No. Login Intelligence operates entirely on-premise within your WordPress database. No analytics, telemetry, user credentials, or IP data are ever transmitted to third-party servers.<\/p><\/dd>\n<dt id=\"does%20security%20radar%20automatically%20block%20or%20lock%20out%20users%3F\"><h3>Does Security Radar automatically block or lock out users?<\/h3><\/dt>\n<dd><p>No. Security Radar is strictly an observational, advisory signal system designed to provide administrators with situational awareness without risking automated lockouts of legitimate users.<\/p><\/dd>\n<dt id=\"how%20do%20i%20sort%20users%20by%20last%20login%20time%20or%20login%20count%3F\"><h3>How do I sort users by last login time or login count?<\/h3><\/dt>\n<dd><p>Navigate to <strong>Users \u2192 All Users<\/strong> in your WordPress admin. Click on the \"Last Login\" or \"Login Count\" column headers to sort the user list in ascending or descending order.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20deactivate%20or%20uninstall%20the%20plugin%3F\"><h3>What happens to my data if I deactivate or uninstall the plugin?<\/h3><\/dt>\n<dd><p>By default, deactivating or uninstalling Login Intelligence preserves all event history, login metadata, and settings so no data is lost during routine maintenance or re-installation. If you prefer to completely remove all plugin data upon uninstallation, you can enable the \"Delete all plugin data when uninstalled\" checkbox under <strong>Users \u2192 Login Intelligence \u2192 Settings<\/strong>.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20affect%20site%20performance%3F\"><h3>Does this plugin affect site performance?<\/h3><\/dt>\n<dd><p>No. Login Intelligence is engineered for minimal overhead. Fast user metadata caching powers standard user listings, the custom event table uses indexed columns, and administrative aggregates utilize WordPress transient caching.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20compatible%20with%20wordpress%20multisite%3F\"><h3>Is this plugin compatible with WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. The plugin is fully compatible with WordPress Multisite networks, network-activated environments, and Network Admin user management screens.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Stable Release: Production-ready Login Intelligence 2.0.0 release.<\/li>\n<li>Added: Admin Menu Consolidation \u2014 unified all settings, dashboard views, activity logs, and radar tools under <code>Users &gt; Login Intelligence<\/code>.<\/li>\n<li>Added: Tabbed Dashboard navigation with 4 dedicated tabs: Overview, Activity History, Security Radar, and Settings.<\/li>\n<li>Added: Full Activity History tab with pagination and event type filters (<code>user_login<\/code>, <code>login_failed<\/code>, <code>user_logout<\/code>).<\/li>\n<li>Added: Automatic redirection of legacy <code>Settings &gt; Login Intelligence<\/code> links to the consolidated Settings tab.<\/li>\n<li>Fixed: Dashboard action buttons icon vertical alignment using centered CSS flexbox.<\/li>\n<li>Improved: Mobile responsive redesign with fluid layouts, responsive table wrappers, and touch-friendly targets for 360px\u20131440px viewports.<\/li>\n<li>Improved: Rating notice with 14-day threshold, meaningful usage check, 30-day snooze, and direct <code>#new-post<\/code> review links.<\/li>\n<li>Added: Security Radar rule-based local anomaly detection (brute force surges, concurrent sessions, dormant return).<\/li>\n<li>Added: Active session monitoring and zero-fingerprinting device context parsing.<\/li>\n<li>Added: User State Engine categorizing user accounts into Active, Idle, Dormant, and Never Logged In.<\/li>\n<li>Added: Color-coded user state badges displayed in the WordPress Users admin list.<\/li>\n<li>Added: Native Users list table state filter tabs (All, Active, Idle, Dormant, Never Logged In).<\/li>\n<li>Added: Individual User Activity Timeline on user profile edit screen with deterministic keyset\/cursor pagination.<\/li>\n<li>Added: \"Activity History\" action link to user table rows for fast timeline access.<\/li>\n<li>Added: Dedicated append-only <code>wp_llid_events<\/code> custom table for historical audit logs.<\/li>\n<li>Added: Synchronized dual-write login engine (fast user metadata cache + custom event table).<\/li>\n<li>Added: Event domain layer (<code>ActivityEvent<\/code>, <code>EventType<\/code>, <code>EventService<\/code>, <code>EventRepository<\/code>).<\/li>\n<li>Added: Automated daily retention pruning via WP-Cron (<code>RetentionEngine<\/code>).<\/li>\n<li>Added: Configurable uninstall data policy with \"Delete all plugin data when uninstalled\" setting (default OFF).<\/li>\n<li>Added: WordPress Core Personal Data Exporter and Eraser integration for custom event table rows.<\/li>\n<li>Added: Developer action hook <code>llid_activity_event_recorded<\/code>.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Improved: Modernized modular architecture with PSR-4 autoloading and domain\/admin separation.<\/li>\n<li>Improved: Dedicated user meta repository and login recording service.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Performance: Optimized database queries on user listings.<\/li>\n<li>Fix: Resolved column header alignment issues in WordPress admin.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Feature: Added user login count tracking.<\/li>\n<li>Feature: Added sortable columns to WordPress Users screen.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: Basic last login timestamp tracking for WordPress users.<\/li>\n<\/ul>","raw_excerpt":"Track user logins, review activity history, monitor login events, and explore security insights directly from your WordPress dashboard.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/241567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=241567"}],"author":[{"embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/musabin"}],"wp:attachment":[{"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=241567"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=241567"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=241567"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=241567"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=241567"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=241567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}