Заказать получение пользователей() по дате последнего входа в систему. Возможно ли это?
Я хочу создать страницу, на которой будут отображаться все пользователи блога, упорядоченные по дате последнего входа в систему.
Я пробовал использовать функцию get_users(), и я могу успешно получить список пользователей, но не в том порядке, в котором я хочу:
$query = get_users('&offset='.$offset.'&orderby=login&order=DESC&number='.$number);
Я думаю, что orderby=логин - это не то, что я ищу... Есть ли какой-либо другой способ добиться этого?
2 answers
Во-первых, вам нужно сохранить фактическую дату входа в систему, потому что по умолчанию она не сохраняется. Вы можете использовать этот код для этого (используйте его в своем functions.php)
add_action('wp_login','user_last_login', 0, 2);
function user_last_login($login, $user) {
$user = get_user_by('login',$login);
$now = time();
update_usermeta( $user->ID, 'user_last_login', $now );
}
После этого вы можете использовать мета-поле для сортировки результатов:
$query = get_users('&offset='.$offset.'&orderby=meta_value&meta_key=user_last_login&order=DESC&number='.$number);
Ответ Passatgt можно немного упростить. Нет необходимости захватывать объект пользователя, когда он уже присутствует в качестве второго аргумента:
add_action( 'wp_login','prefix_save_user_last_login', 0, 2 );
function prefix_save_user_last_login( $login, $user ) {
update_usermeta( $user->ID, 'user_last_login', time() );
}