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

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

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

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

Можете этот код, вставив его в файл 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 = '<li>' . $name . '</li>';
		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 = '<li>' . $name . '</li>';
			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  = '<li><b>' . $userlevelname[$userlevel] . '</b></li>';
		$link .= '<li>' . $name . '</li>';
		echo $link;
	}
}
}

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

<ol>
  
</ol>

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

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

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

<ol>
  
</ol>

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

<ol>
  
</ol>

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

<ol>
  
</ol>

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

tiaurus

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

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

  1. Alex

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

    Ответить