Abonnenten die Bearbeitung ihrer Kommentare erlauben

So langsam entwickelt sich das Thema Berechtigung ja zu einer kleinen Artikelreihe 🙂 Heute habe ich erneut ein hoffentlich spannendes Kapitel dazu im Angebot. In dem Projekt, das schon bei den letzten beiden Artikeln als Grundlage diente, gab es nun die Anforderung, dass Nutzer mit der Rolle “Abonnent” die Möglichkeit haben sollten, ihr Kommentare zu bearbeiten oder zu löschen.

Berechtigung zum Bearbeiten von Kommentaren vergeben

Ein kurzer Blick in den CODEX und die passende Rolle war gefunden. Das Hinzufügen einer Berechtigung zu einem Nutzer kann man nun entweder mit einem fertigen Plugin wie Members tun, oder aber mit wenig Code:

$subscriber = get_role( 'subscriber' );
$subscriber->add_cap( 'edit_comment' );

Das sollte eigentlich schon alles sein. Leider funktioniert es aber nicht. Der Nutzer sieht nach dem Einloggen weder den Menüpunkt zum Bearbeiten, noch kann er direkt auf die Kommentare zugreifen und diese bearbeiten. Es wäre auch keine ganz optimale Lösung, da der Nutzer hierdurch die Kommentare aller Nutzer bearbeiten könnte.

Offenes Core Trac Ticket

Wie schon so oft zuvor, gab es auch zu diesem Problem ein Ticket im Bugtracker von WordPress.org das in diesem über 6 Jahre alt ist. Es gab hier aber lange keinen echten Fortschritt mehr. Um das Problem also zu lösen, habe ich mich erst einmal in den Core begeben um festzustellen, wo genau das Problem liegt. Es sind im Grunde zwei Probleme, die beide auf eine falsche Überprüfung der Berechtigung beruhen.

Sowohl für den Eintrag in die Navigation, als auch auf der Listenansicht der Kommentare wird nicht geprüft, ob der Nutzer Kommentare moderieren oder bearbeiten kann. Es wird vielmehr geprüft, ob er Beiträge bearbeiten darf. Na, erinnert das jetzt den ein oder anderen an das Problem von letzter Woche?

Core Patch erstellt und Fehler vorĂĽbergehend behoben

Ich konnte den Fehler eigentlich recht schnell lösen und habe natürlich gleich einen Patch dafür eingereicht. Ich hoffe mal, dass er spätestens mit WordPress 4.7 umgesetzt wird. Vielleicht ja schon mit 4.6.1, wobei das vielleicht zu optimistisch ist.

Bis er Patch online geht musste ich das Problem aber natürlich auch kurzfristig lösen. Und da ich ja niemals im Core etwas ändern würde, bin ich zu einer anderen Lösung gekommen. Das Ganze habe ich euch natürlich wieder fertig verpackt in einem kleinem Plugin in einem GIST veröffentlicht.

Der Code ist etwas umfangreicher und daher möchte ich ihn hier jetzt nicht im Detail erklären. Es ist ja ohnehin hoffentlich nur ein temporärer Fix, bis das im Core korrekt gelöst worden ist. Bis dahin könnt ihr das Plugin aber gerne mal testen und mir Feedback geben, wenn ihr Änderungswünsche habt.

Fazit

So langsam blicke ich wirklich durch, was das Berechtigungssystem von WordPress im Detail angeht. Manches davon ist im ersten Moment nicht ganz logisch. Und wenn einen ein komisches Gefühl beschleicht, dass etwas falsch ist, dann lohnt sich ein Blick in den Bugtracker, denn oft ging es auch schon anderen so. Ich hoffe also, dass der Bug schon bald behoben wird. Und natürlich, dass ich mit diesem kleinen Hilfsplugin auch wieder dem ein oder anderen von euch weiterhelfen konnte 🙂

 

 

Veröffentlicht von

Bernhard ist fest angestellter Webentwickler, entwickelt in seiner Freizeit Plugin, schreibt in seinem Blog über WordPress und andere Themen, treibt sich gerne bei den WP Meetups in Berlin und Potsdam herum und läuft nach Feierabend den ein oder anderen Halbmarathon.

5 Kommentare » Schreibe einen Kommentar

  1. Hi Bernhard,
    haha, ich bin gestern auch ĂĽber Deinen Patch gestolpert, als ich im API Forum mit dieser Anfrage gearbeitet hatte: https://github.com/WP-API/WP-API/issues/2663

    Da Du Dich ja jetzt schon ziemlich in die Kommentar-Berechtigungen eingefressen hast: WeiĂźt Du, warum die API derzeit nicht nur auf edit_comment aber auch auf manage_comments prĂĽft, bevor ein User ĂĽber die API einen Kommentar editieren kann? WĂĽrde mir grad gut weiterhelfen.

    Vielen Dank 🙂

    • Hallo David,

      ich habe mich bisher leider nicht mit Berechtigungen in Verbindung mit der API beschäftigt. Prüft denn der Core die Berechtigung oder die API? Falls es der Core ist, dann sollte sich das Problem ja für beide mit dem Patch lösen lassen. Falls es die API prüft, dann muss wohl hier ebenfalls ein Patch geschrieben werden. Hast du vielleicht mal einen Direktlink zu der Stelle, an der es in der API geprüft wird?

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.