Wer das Debugging in WordPress aktiviert hat, dem wird bestimmt das eine oder andere Mal die Notice
PHP Notice: has_cap wurde mit einem Parameter oder Argument aufgerufen, der seit Version 2.0 <strong>veraltet ist</strong>! Die Benutzung von <code>user_level</code> in Plugins und Themes ist veraltet. Nutze stattdessen das Abfragen von <code>roles</code> oder <code>capabilities</code>. in /wp-includes/functions.php on line 3508
über den Weg gelaufen sein. Immer wieder kommt es vor, dass in Plugins und Themes noch die alte Abfrage der User Levels verwendet wird, anstatt die Capabilities zu prüfen. Im Grunde genommen ist das nicht wirklich schlimm, wer jedoch dauerhaft das Debugging an hat, wird schnell feststellen, dass die debug.log unnötig vollgemüllt wird.
Leider sagt die Notice rein gar nichts aus, ausser dass es irgendwo ein Problem gibt. Rauszufinden wo dieses Problemchen steckt, liegt aber an Dir.
Da ich gerade wieder selber dieses Problemchen hatte, hier nun ein paar Tipps, wonach Du Deine Plugins durchsuchen solltest um den Hinweis weg zu bekommen.
Durchsuche Deine Plugins nach folgenden functions
- has_cap
- add_menu_page
- add_submenu_page
- add_options_page
- add_management_page
Dies geht recht bequem mit dem Totalcommander und der „In Text“ Suche, die den Inhalt sämtlicher Dateien durchsucht. In all diesen Funktionen werden die Capabilities abgefragt. Wenn Du dort folgende Schreibweise findest, besteht handlungsbedarf.
add_options_page(„Quick Adsense Options“, „Quick Adsense“, 8, basename(__FILE__), „ads_admin_page_inc“);
„8“ ist in diesem Beispiel der User Level, der noch nach dem alten System arbeitet. Alternativ kann da auch „administrator“ oder „editor“ stehen. Im WordPress Codex findest Du eine Übersicht, welcher Userlevel welche Rechte/Capabilities hat. 8 ist der Userlevel für Administratoren. Nur Admins dürfen Optionen managen. Entsprechend tausche 8 gegen „manage_options“
add_options_page(„Quick Adsense Options“, „Quick Adsense“, „manage_options“, basename(__FILE__), „ads_admin_page_inc“);
Geh einfach alle Plugins durch und pass sie entsprechend an. Damit bekommst Du die Notice in 99% der Fälle weg. Denk aber daran, dass Du bei einem Pluginupdate prüfen musst, ob der Entwickler die Anpassung selber vorgenommen hat. Hier hilft es, eine entsprechende Nachricht im Supportforum zu hinterlassen, damit es in die offizielle Version aufgenommen wird. Solltest Du mit den o.g. Funktionen die Meldung nicht weg bekommen, kannst Du auf weitere functions prüfen, die ebenfalls die Capabilities benötigen. Diese findest Du im WordPress Codex für eine der genannten Funktionen am Ende im Punkt „Related“ z.b. hier.