Okay, there are a couple of things to do:
- Get
last_active
for the user - Calculate the days since
last_active
- Set
last_active_days_ago
for the user
So you can go like this:
function daysAgo( $time ) {
$time = time() - $time;
$daysAgo = $time / 86400; // calculate days
return $daysAgo;
}
function set_user_last_active_days_ago( $user_id ) {
// get last time active
$time = get_user_meta( get_current_user_id(), 'last_active', true );
if ( !empty($time) ) :
// calculate time since last_active
$time = daysAgo( strtotime($time) );
// update user meta
update_user_meta( $user_id, 'last_active_days_ago', $time );
endif;
}
set_user_last_active_days_ago( get_current_user_id() );
You’ll also have to set last_active
somewhere:
function set_user_last_active( $user_id ) {
update_user_meta( $user_id, 'last_active', date('Y-m-d H:i:s') );
}
set_user_last_active( get_current_user_id() );
Note: You can also pass in a custom user ID within set_user_last_active
and set_user_last_active_days_ago
instead of the current user ID.
Update: You can call set_user_last_active
and set_user_last_active_days_ago
within every action you’d like to. Let’s say you want to set last_active
every time a user logged in to WordPress:
add_action('wp_login', 'user_login_last_active', 10, 2);
function user_login_last_active($user_login, $user) {
set_user_last_active( $user->ID );
}
It’s completely up to you when you want to set the data. It can be set per login (like above) or e.g. every time a post is saved or the profile is updated.
If none of these actions will fit your need you can take a look the available Actions at the Codex.