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 |
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?
Definitiv richtig, der Zugriff auf die Variable ist immer schlechter.
Ein Beispiel habe ich oben hinzugefügt.
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.