Skip to content

Instantly share code, notes, and snippets.

@RalfAlbert
Forked from eteubert/activate.php
Created December 23, 2011 01:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RalfAlbert/1512706 to your computer and use it in GitHub Desktop.
Save RalfAlbert/1512706 to your computer and use it in GitHub Desktop.
WordPress: Find Users by Last Login Activity
<?php
/*
Plugin Name: User Activity
Plugin URI:
Description: Provides means to query users by last login activity.
Version: 1.0
Author: Eric Teubert, Ralf Albert
Author URI: ericteubert@googlemail.com, neun12@googlemail.com
License: MIT
*/
namespace UserActivity;
add_action( 'wp_login' , '\UserActivity\add_login_time' );
function add_login_time( $user_login ) {
global $wpdb;
$sql = $wpdb->prepare( "SELECT ID FROM $wpdb->users WHERE user_login = %s", $user_login );
$user_id = $wpdb->get_var( $sql );
update_user_meta( $user_id, 'last_activity', current_time( 'mysql' ) );
}
add_action( 'auth_cookie_valid', '\UserActivity\stay_logged_in_users' );
function stay_logged_in_users( $user ){
add_login_time( $user['username'] );
}
register_activation_hook( __FILE__, '\UserActivity\add_last_activity_for_all_users' );
function add_last_activity_for_all_users() {
global $wpdb;
$sql = $wpdb->prepare( "
SELECT
u.ID
FROM
$wpdb->users AS u
LEFT JOIN $wpdb->usermeta m ON u.ID = m.user_id AND m.meta_key = 'last_activity'
WHERE
m.meta_value IS NULL" );
$userids = $wpdb->get_col( $sql );
if ( $userids ) {
foreach ( $userids as $userid ) {
update_user_meta( $userid, 'last_activity', current_time( 'mysql' ) );
}
}
}
/**
* Find user ids from user who were inactive for a certain amount of days.
*
* @param int $days
* @return array list of user ids.
*/
function find_inactive_user_ids( $days = 30 ) {
global $wpdb;
$query = $wpdb->prepare( "
SELECT
u.ID
FROM
$wpdb->users AS u
LEFT JOIN $wpdb->usermeta m ON u.ID = m.user_id AND m.meta_key = 'last_activity'
WHERE
m.meta_value < %s", date( 'Y-m-d', strtotime( '-' . $days . ' days' ) ) );
return $wpdb->get_col( $query );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment