上次登录天数格式

时间:2013-12-22 作者:Dr.Hariri

我正在尝试捕获最后一个用户活动日期,并在几天内将其复制到另一个用户元字段中,但没有任何文本。由于编码非常糟糕,我希望有人能帮助我阐明如何最好地实现这一点。

我在论坛上查看了许多其他解决方案,但都没有按照我想要的方式工作。

目前我正在使用:

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);                              
}
正如您所看到的,我正在尝试不同的方法来实现这一点,但最接近的是第二个update\\u usermeta,它输出一个数字和分钟数。

虽然我从这里的帖子中得到了第三个,但它输出的数字很长,而且还在不断增加:1387740860

我希望我能找到一个尝试过类似事情或有足够经验的人来帮助我做到这一点。

非常感谢!

1 个回复
最合适的回答,由SO网友:Sven 整理而成

好的,有两件事要做:

获取last_active 对于用户,计算自last_activelast_active_days_ago 对于用户,您可以这样做:

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() );
您还必须设置last_active 某处:

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() );
注意:您还可以在中传入自定义用户IDset_user_last_activeset_user_last_active_days_ago 而不是当前用户ID。

Update: 你可以打电话set_user_last_activeset_user_last_active_days_ago 在你想做的每一件事中。假设您要设置last_active 每次用户登录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 );
}
何时设置数据完全取决于您。可以在每次登录(如上所述)或每次post is saved 或者profile is updated.

如果这些操作都不符合您的需要,您可以查看可用的Actions at the Codex.

结束

相关推荐

WP_Query in functions.php

我有一些代码要转换成函数。它工作得很好,直到我将其包装到所述函数中: $args = array( \'posts_per_page\' => -1, \'post_type\' => \'asset\', \'category_name\' => $cat ); $cat_query = new WP_Query( $args );