Último inicio de sesión en número de formato días

Estoy tratando de capturar la última fecha de usuario activo y se reproducen en otro campo de usuario meta en días sin ningún texto con él. Siendo muy malo con la codificación, esperaba que alguien me podría ayudar a arrojar algo de luz sobre cómo mejor para lograrlo. Revisé muchas otras soluciones en el foro, pero no funcionó como yo quería.

Actualmente estoy usando esto:
function set_user_last_active( $user_id ) {
$user = get_userdata ( $user_id );

$dateoflast = strtotime( get_user_meta($user_id, 'last_active') );             
$datenow = strtotime( current_time('mysql') );
$difference = abs($datenow - $dateoflast / 86400);

//add or update the last login value for logged in user
update_usermeta( $user->ID, 'last_active', current_time('mysql') );
update_usermeta( $user->ID, 'last_active_days_ago', human_time_diff( strtotime( get_user_meta($user_id, 'last_active', true) ) ) );
update_usermeta( $user->ID, 'last_active_days_ago2', $difference);                              
}
Como puedes ver, estoy tratando de diferentes maneras para lograr esto, pero es lo más cercano a la segunda update_usermeta que un número de minutos. Aunque tomé el tercero de un post aquí, imprime un número largo que sigue aumentando: 1387740860 espero que encuentre alguien que intentó algo parecido o experiencia suficiente para ayudarme a hacerlo.

¡Muchas gracias!.


Solución

Hay un par de cosas que hacer: conseguir
last_active
para el usuario calcular los días desde
last_active
Conjunto
last_active_days_ago
para el usuario, así que puedes ir así:
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() );
También tendrás que establecer
last_active
en algún lugar:
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() );
Nota: También puede pasar en un ID de usuario personalizado dentro de
set_user_last_active
y
set_user_last_active_days_ago
en vez del ID de usuario actual. Actualización: Puedes llamar
set_user_last_active
y
set_user_last_active_days_ago
dentro de cada acción te gustaría. Supongamos que desea configurar
last_active
cada vez que un usuario registrado en 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 );
}
Depende totalmente de ti cuando desee establecer los datos.

Puede ser fijado por sesión (como arriba) o por ejemplo cada vez un post is saved o el profile is updated. Si ninguna de estas acciones ajuste a tu necesidad puedes echar un vistazo el disponible Actions at the Codex.

Actions at the Codex.

.





Problemas relacionados

Redireccionamiento de usuario a la dirección URL de destino después de inicio de sesión

¿Cómo la fuerza a usuario re inicio de sesión después de 4 horas?

Necesidades del usuario para iniciar sesión antes de acceder a la página web

¿Cómo puedo insertar un enlace en la página de inicio de sesión

lambda_xx en todas las páginas de inicio de sesión wordpress

¿Cuántos días desde el último mensaje del usuario actual

¿Son transitorios, pública o privada?

Quitar detección de iPhone en la página de inicio de sesión

Conseguir usuarios registrados 30 días ago(or more)

Quitar vínculos de la página de inicio de sesión

Página de inicio con inicio de sesión

Cambiar url de inicio de sesión de wp sin .htaccess

Source: Stack Exchange Inc; License: cc by-sa 3.0 Contacto / Contact