Как вывести список всех пользователей, учитывая их роли

Как вывести список всех пользователей, учитывая их роли | n-wp.ru
Пример функции, выводящей список всех пользователей. С ее помощью можно выводить всех пользователей, либо пользователей с определенной ролью (администраторов, авторов, подписчиков).
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

Как вывести список всех пользователей, учитывая их роли

Можете этот код, вставив его в файл functions.php используемой темы:

function tp_list_authors($userlevel = 'all', $show_fullname = true) {
	global $wpdb;

if ( $userlevel == 'all' ) {
	$author_subscriper = $wpdb->get_results("SELECT * from $wpdb->usermeta WHERE meta_key = 'wp_capabilities' AND meta_value = 'a:1:{s:10:"subscriber";b:1;}'");
	foreach ( (array) $author_subscriper as $author ) {
		$author    = get_userdata( $author->user_id );
		$userlevel = $author->wp2_user_level;
		$name      = $author->nickname;
		if ( $show_fullname && ($author->first_name != '' && $author->last_name != '') ) {
			$name = "$author->first_name $author->last_name";
		}
		$link = '
<ul>
 	<li>' . $name . '</li>
</ul>
'; echo $link; } $i = 0; while ( $i get_results("SELECT * from $wpdb->usermeta WHERE meta_key = 'wp_user_level' AND meta_value = '$userlevel'"); foreach ( (array) $authors as $author ) { $author = get_userdata( $author->user_id ); $userlevel = $author->wp2_user_level; $name = $author->nickname; if ( $show_fullname && ($author->first_name != '' && $author->last_name != '') ) { $name = "$author->first_name $author->last_name"; } $link = '
<ul>
 	<li>' . $name . '</li>
</ul>
'; echo $link; } $i++; } } else { if ($userlevel == 1) { $authors = $wpdb->get_results("SELECT * from $wpdb->usermeta WHERE meta_key = 'wp_capabilities' AND meta_value = 'a:1:{s:10:"subscriber";b:1;}'"); } else { $authors = $wpdb->get_results("SELECT * from $wpdb->usermeta WHERE meta_value = '$userlevel'"); } foreach ( (array) $authors as $author ) { $author = get_userdata( $author->user_id ); $userlevel = $author->wp2_user_level; $name = $author->nickname; if ( $show_fullname && ($author->first_name != '' && $author->last_name != '') ) { $name = "$author->first_name $author->last_name"; } $link = '
<ul>
 	<li><b>' . $userlevelname[$userlevel] . '</b></li>
</ul>
'; $link .= '
<ul>
 	<li>' . $name . '</li>
</ul>
'; echo $link; } } }

Чтобы вывести список пользователей, нужно вставить в шаблон:

Функция может ограничивать вывод пользователей с определенной ролью. Для этого в ней предусмотрен параметр [codei_php]$userlevel = 'all'[_php] — изменяя его, вы можете выводить только пользователей с определенной ролью:

all = показывать всех пользователей
1 = показывать подписчиков
2 = показывать редакторов
3 = показывать авторов
10 = показывать администров

Например, чтобы вывести всех авторов, нужно вставить в шаблон:

Так же в функции предусмотрен параметр [codei_php]$show_fullname = true[_php], ограничивающий представление пользователей. С его помощью можно показывать имя и фамилию, либо только ник. Чтобы вывести администраторов с именем и фамилией, используйте в шаблоне:

Чтобы вывести подписчиков только с никами, используйте:

Использование параметров дает гибкость при выводе пользователей — можно настроить несколько списков с разным представлением пользователей.

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. Alex

    Можете сделать урок как вывести онлайн пользователей на опр.странице. Например http://www.example.com/page1 и показывать список пользователей только которые находятся в данный момент на этой странице. Как только кто-то вышел он исключается из списка без перезагрузки страницы. А если кто-то вошел то список обновляется. В сети нет такой инфы для ворд пресс. Буду благодарен.

    Ответить