Отслеживание последнего входа в систему и последнего посещения


Я использую приведенный ниже код для отслеживания последнего входа пользователя в систему. Я понимаю, однако, что если они проверят опцию Remember Me, это не будет отслеживать их последний визит .

// Catch the time they login and save it
function set_last_login($login) {
  $user = get_userdatabylogin($login);
  update_usermeta( $user->ID, 'last_login', current_time('mysql') );
}
add_action('wp_login', 'set_last_login');

// Function to display the time
function get_last_login($user_id) {
  $last_login = get_user_meta($user_id, 'last_login', true);
  $date_format = get_option('date_format') . ' ' . get_option('time_format');
  $the_last_login = mysql2date($date_format, $last_login, false);
  return $the_last_login;
}

В дополнение к приведенному выше рабочему коду для отслеживания входа в систему, я хочу узнать, когда пользователь был последним активным , если он уже вошел в систему .

Какие-нибудь советы?

Author: Pat, 2013-03-25

1 answers

Вы можете создать новую запись для метаданных пользователя и обновлять ее на каждой загруженной странице администратора.

Поместите следующее в свою тему functions.php или, возможно, оберните ее в плагин:

function update_last_action_time() {
    $user = wp_get_current_user();
    update_user_meta($user->ID, 'last_action_time', current_time('mysql'));
}
add_action('admin_init', 'update_last_action_time');

Конечно, вы могли бы уточнить это (и, таким образом, снизить накладные расходы), ограничив это определенными страницами, например, только панелью мониторинга.

// Редактировать: вы должны использовать update_user_meta вместо устаревшего update_usermeta.

// Редактировать, снова

Если вы хотите отслеживать пользователей на интерфейсе, поместите этот код в нужный шаблон:

if (is_user_logged_in()) {
    $user = wp_get_current_user();
    update_user_meta($user->ID, 'last_action_time', current_time('mysql'));
}

Опять же, чтобы снизить накладные расходы, я бы предпочел поместить это , а не в файл footer.php. Я бы предпочел взять home.php (если он у вас есть) или проверить наличие конкретных запросов (например, вашу домашнюю страницу , что означает: home_url() == 'http://'.$_SERVER['SERVER_NAME']). Но, как было сказано ранее (имеется в виду: ниже;)), накладные расходы, конечно, в порядке при использовании его, тем не менее, в footer.php.

 2
Author: tfrommen, 2013-03-25 19:22:07