Kategorien
FAQ Mehrwert

Userlevel bezogene Ausgabe im Template

Roles

Soll die Ausgabe von einigen Inhalten auf dem Blog nur Personen zugänglich sein, die entsprechende Rechte in Ihrem Weblog haben, so kann man innerhalb des Templates eine Abfrage hinterlegen.

Mit folgendem Code wird geprüft, ob der User eingeloggt ist und ob er die entsprechende Berechtigung hat, dabei stehen die User_Level 0-10 zur Verfügung.

Wie sich die einzelnen Berechtigungen auswirken ist im Codex ausführlich nachzulesen.

<?php if (intval($userdata->user_level) >= 9 ) {
function();
. . .
?>

Update:
Tobias weist mich darauf hin, Danke. Ich bringe gleich mal ein Update, denn WordPress gibt den Nutzer dafür seit geraumer Zeit eine Funktion in die Hand.

<?php if( current_user_can('level_10') ) {
function();
. . .
?>

In einem Template könnte man es dann wie folgt nutzen.


<?php if( current_user_can('level_10') ) { echo 'Level 10'; } else { echo '< LEVEL 10'; } ?>

Das obige Beispiel gibt Level 10 aus, wenn der angemeldete User über Adminrechte verfügt, alternativ wird < LEVEL 10 ausgegeben.

Benötigt man zusätzlich das User-ID, dann ist es wie folgt zu lösen. Die obige Version sollte aber in den meisten Fällen ausreichen.

<?php global $user_ID; if( $user_ID ) : ?>

<?php if( current_user_can('level_10') ) : ?>

<p>Inhalt, nur fuer den Admin (Level 10)</p>

<?php else : ?>

<?php endif; ?>

<?php endif; ?>

Folgende Tabelle stellt eine Übersicht der Berechtigungen in WordPress dar.

Rolle User Level
Administrator 0 – 10
Herausgeber 0 – 7
Autor 0 – 2
Mitarbeiter 0 – 1
Registrierter Leser 0

Von Frank Bültge

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

4 Antworten auf „Userlevel bezogene Ausgabe im Template“

Zwei Fragen/Anmerkungen:
1. Die Userlevel sind doch depricated oder zumindest veraltet. Dafür gibt es doch jetzt current_user_can(‚edit_post‘) und so weiter, oder nicht?

2. Und selbst wenn man noch mit den Userleveln arbeitet, sollte man dann nicht die Hilfsfuntkionsten nehmen statt manuell auf die $userdata-Daten zuzugreifen?

Hallo Frank, noch eine Ergänzung: Das level-Prinzip stammt noch aus WP 1.5 (und davor) (der entsprechend Codex-Artikel dazu schreibt am Kopf „The User Levels described in this article are replaced in WordPress 2.0 by Roles and Capabilities“). Ich halte es für den Alltag für viel einfacher, mit den neuen Rollen zu arbeiten, die du ja auch verlinkt hast. Im Template kann ich einfacher sagen if user can write oder read statt mit den abstrakten leveln zu arbeiten. Abgesehen davon ist das viel einfacher zu verstehen, wenn man rollen verändert, wie du es im Sicherheits-Posting vorschlägst, um die Rechte in einer WP-Installation anzupassen.

Ich empfinde die Abfrage per Level angenehmer, da habe ich eine recht schnelle Zuordnung. Aber im Grunde ist die Abfrage der einzelnen Rechte schon besser. Dazu kann man ja auch die Abfragen erweitern.

Kommentare sind geschlossen.