Heute werden wir die Benutzerberechtigungen im Rahmen Ihres Plugins durchgehen. Ich werde insbesondere besprechen, was Sie verwenden sollten, um festzustellen, wer die verschiedenen Admin-Menüs Ihres Plugins sehen kann.
Ich bin über die Komplexität der Benutzerberechtigungen gestolpert, wenn ich an einer Installation von WordPress mit mehreren Standorten arbeite. Wir hosten ungefähr 15 bis 20 Websites und hatten ungefähr 30 Plugins installiert. Blogs hatten jeweils Benutzer verschiedener Ebenen und Verantwortlichkeiten. Meine Arbeitgeber erhielten Anfragen oder Plugins mit Funktionen, die sie anbieten wollten, und es liegt an mir, sie zu installieren und zu konfigurieren. Da stieß ich auf Probleme. Oft stellte ich fest, dass ich Plugins modifizierte, um die Benutzerrollen, die wir verwendeten, einfach anzupassen. Das Durcheinander war hauptsächlich auf die unterschiedlichen Möglichkeiten zurückzuführen, mit denen Sie in WordPress festlegen können, wer Ihr Plugin anzeigen und verwenden darf.
Es war einmal in WordPress "User Levels". Es gibt 10 Stufen, von denen jede dem Benutzer mehr Berechtigungen gewährt als die letzten. Der Entwickler zielt also häufig auf eine bestimmte Benutzerebene wie folgt:
Für diejenigen, die mit WordPress-Funktionen nicht vertraut sind, ist die Funktion add_menu_page definiert als:
add_menu_page ($ $ page_title, t $ menu_title, $ $ - Fähigkeit, menu $ menu_slug, $ $ - Funktion, icon $ icon_url, я $ positionя);
Dieser bestimmte Codesatz richtet sich an die Benutzerebene 10, die der höchste Berechtigungssatz wäre. Die Benutzerebenen waren zwar in bestimmten Situationen nützlich, aber nicht so flexibel, wie ich wollte. Glücklicherweise erhielten wir bei der Veröffentlichung von WordPress 2.0 "Rollen und Fähigkeiten". Die Funktionen ersetzten die Benutzerebenen und in WordPress 3.0 wurden die Benutzerebenen abgeschrieben.
Mit der neuen Art, Benutzerberechtigungen zu definieren, haben wir zusätzliche Möglichkeiten gefunden, Benutzer anzusprechen. Die erste ist von den Rollen selbst. Mit den gleichen Funktionen wie oben erläutere ich, wie Sie einen Benutzer nach Rollen ansprechen.
Im Wesentlichen unterscheidet sich dies nicht sehr von der Verwendung von User Levels, und in meiner Situation war das keine gute Sache. Bei der Einrichtung mehrerer Standorte wurden die Administratorrollen nur von Mitarbeitern im Haus verwendet. Die oberste Rolle, die ein Kunde haben durfte, waren Redakteure. Sie mussten jedoch immer noch in der Lage sein, bestimmte Dinge auf ihrer Website zu tun. Leider haben viele Plugins, auf die ich gestoßen bin, immer noch entweder Benutzerlevel oder die Rollen selbst verwendet, um die Verwendung ihres Plugins zu gewähren oder zu verweigern. WordPress bietet jedoch eine wesentlich robustere Lösung für dieses Problem hinsichtlich seiner Möglichkeiten.
Mit den Funktionen können Sie einen Benutzer eher auf der Grundlage dessen, was er tun kann, als der Rolle, die er hat, anvisieren. Betrachten Sie das Beispiel unten.
Die Funktionen testen nun, ob ein Benutzer upload_files hochladen kann oder nicht. Wenn die Funktionen nicht geändert wurden, kann das Menü sichtbar sein und der Code für Superadministratoren, Administratoren, Bearbeiter und Autoren ausgeführt werden. Dies ist eine viel bessere Lösung, da einzelne Funktionen zu Rollen in den Designfunktionen hinzugefügt oder daraus entfernt werden können.
Obwohl dies unter vielen Umständen die beste Lösung ist, gehe ich gerne einen Schritt weiter. Wenn ich ein Plugin für nicht administrative Funktionen entwickle, z. B. eine Galerie oder ein Testimonial-Plugin, ziehe ich dem Benutzer den Zugriff auf der Grundlage einer benutzerdefinierten Funktion vor, die für das Plugin erstellt wurde. Ich habe unten ein Beispiel dafür gegeben.
Wie Sie sehen, fügen wir der Editorrolle eine Funktion mit dem Namen "my_plugin_cap" hinzu. Dann fügen wir eine Menüseite hinzu, die für alle Benutzer mit dieser Funktion sichtbar ist. Was schön ist, ist, dass Sie im Plugin die Funktion den richtigen Benutzern hinzufügen können. Wenn der Administrator anderen Rollen Zugriff gewähren möchte, kann er dies durch Hinzufügen der Funktion über die Designfunktionen tun. In meinem Fall bedeutet das, dass ich die Plugins nicht mehr selbst bearbeiten muss und ich sie jederzeit aktualisieren kann, ohne mir Sorgen zu machen, dass meine vorgenommenen Änderungen verloren gehen.
Ich hoffe, dieser Tipp war für Sie nützlich. Lassen Sie mich wissen, wenn Sie Fragen oder Bedenken in den Kommentaren haben. Glückliche Plugin-Programmierung!