WordPress, Funktion für die Ausgabe aller Benutzer

Die Ausgabe aller Benutzer in WordPress ist im Standard nicht vorgesehen. Damit man eine einfache Liste alle User aus der Datenbank bekommt, kann mittels folgender Funktion die User aufgrund ihrer Userlevel ausleiten.
Für die Ausgabe von einzelnen Benutzergruppen oder User stehen eine Reihe von Template-Tags zur Verfügung, siehe WordPress-Codex - Author Tags.

Es ist eine einfache, nicht optimierte Datenbankabfrage. Sie soll lediglich als Basis dienen und kann bzw. muss ausgebaut werden. Auspassen, „Registrierte Leser” werden nicht via user_level in der Datenbank gespeichert. Dies macht es erforderlich, dass eine eigene Datenbankabfrage hinterlegt wurde.

Es besteht die Möglichkeit der Funktion zwei Parameter mitzugeben. Für die Ausgabe nur einer Benutzergruppe steht Parameter $userlevel zur Verfügung. Sollen Vor- und Zuname ausgegeben werden, dann muss Parameter $show_fullname auf TRUE gesetzt werden, ansonsten wird der Benutzername ausgegeben.

Um die Funktion zu nutzen, ist es am einfachsten, man legt sie in der functions.php im verwendeten Theme ab bzw. erzeugt die Datei. Die Funktion könnte dann folgendermaßen mittels PHP-Plugin (z.B. Exec-PHP) oder im Template aufgerufen werden.

Nur Administratoren, nur Benutzernamen

    <?php fb_list_authors(10, FALSE); ?>
Alle Benutzer, Vor- und Zuname

    <?php fb_list_authors(); ?>
Nur Leser, Vor- und Zuname

    <?php fb_list_authors(1, TRUE); ?>

Die Funktion für die functions.php oder direkt im verwendeten Template.


function fb_list_authors($userlevel = 'all', $show_fullname = true) {
	global $wpdb;
	
/*
 all = Ausgabe aller User
 1 = Registrierte Leser
 2 = Mitarbeiter
 3 = Autoren
 7 = Herausgeber
10 = Administratoren
*/

	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 = '
  • ' . $name . '
  • '; echo $link; } $i = 0; while ( $i <= 10 ) { $userlevel = $i; $authors = $wpdb->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 = '
  • ' . $name . '
  • '; 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 = '
  • ' . $userlevelname[$userlevel] . '
  • '; $link .= '
  • ' . $name . '
  • '; echo $link; } } }

    4 Comments

    1. Hallo,

      Danke für die Tolle Anleitung, funktioniert ja schon mal klasse =)
      Eine Frage hätte ich aber noch: Ich habe bei mir auf der Webseite auch den WP User Manager installiert, so dass sich die Nutzer bei der Registrierung verschiedenen Gruppen "zuordnen" können. Ich hab jetzt in WordPress für jede "Gruppe" eine Seite erstellt und würde eben gerne alle Nutzer die bei der Registrierung Gruppe1 ausgewählt haben, auf der Seite "Gruppe1" ausgeben, alle die Gruppe2 ausgewählt haben auf der Seite "Gruppe2" ausgeben und so weiter...

      Lässt sich das noch irgendwie einbauen?

      Anstonsten TOP Arbeit von dir =)
      Danke und viele grüße,
      Klaus

    2. Das kann ich nicht sagen, aber der Autor des Plugins sicherlich, denn er muss ja WP um das Feld 'gruppe' erweitert haben. Frage mal dort an oder untersuche das Plugin, es gibt sicher schon eine Möglichkeit die das Lesen aller User pro Gruppe ermöglicht, vielleicht im Backend.

    Comments are closed.