Заказать получение пользователей() по дате последнего входа в систему. Возможно ли это?


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

Я пробовал использовать функцию get_users(), и я могу успешно получить список пользователей, но не в том порядке, в котором я хочу:

$query = get_users('&offset='.$offset.'&orderby=login&order=DESC&number='.$number); 

Я думаю, что orderby=логин - это не то, что я ищу... Есть ли какой-либо другой способ добиться этого?

Author: stefano1, 2014-01-20

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); 
 6
Author: passatgt, 2014-10-28 20:38:18

Ответ 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() );
}
 4
Author: GaryJ, 2014-01-30 14:22:24