Wordpress – Kategorien nur für bestimmte Benutzer freigeben
Montag, der 13. Juli 2009, 07:14 Uhr von
Stefan
Ich habe ein Plugin für Wordpress gesucht, welches mir erlaubt bestimmte Benutzer im Backend auf einzelne Kategorien zuzuweisen. Dabei bin ich auf die Extension “User-Cats Manager” gestoßen.
Leider funktionierte sie out of the box nicht mit meiner Wordpress Version 2.8.x.
Doch mit ein paar Änderungen lief die Extension wie gewünscht.
Jedoch konnte ich sie mit dem einfügen von einer Programmierzeile in die Datei:
/wp-content/plugins/user-cats-manager/user-cats-manager.php
zum laufen bringen:
Einfach diese Zeile nach dem Kopfkommentar einfügen:
include(substr(dirname(__FILE__), 0, strpos(dirname(__FILE__),”wp-content”)) . “/wp-includes/streams.php”);
Wobei man den Pfad eventuell noch anpassen muss falls Wordpress nicht im Root Verzeichnis liegt.
Grund des Fehlers ist, dass die Datei streams.php nicht geladen wird und eine Klasse dieser Datei im Plugin verwendet wird.
Ausserdem scheinen im Frontend Bereich auch alle Kategorien ausgeblendet zu werden.
Dazu kann man das Plugin um diese Codezeilen erweitern (in der Funktion filterCats())
Ersetze
if ($current_user->user_level == 10)
return $cats;
durch
// If user is on frontend or admin is logged in show all categories
if ($current_user->user_level == 10 || !is_admin())
return $cats;
und solage man sich nicht im Admin Bereich befindet werden alle Kategorien angezeigt.
Ansonsten würden gar keine Kategorien angezeigt werden wenn niemand eingeloggt ist
bzw. nur jene bei denen der Benutzer schreibrechte hat. Und das sollte nicht der Sinn dieser Extension sein.

Geschrieben in: Web | Schlagwörter:Benutzerverwaltung, Extensions, Wordpress
0 Trackbacks | 2 Kommentare »
I tried doing what you said but I still get errors. Would you be able to explain exactly where you put that code in the plugin file include(substr(dirname(__FILE__), 0, strpos(dirname(__FILE__),”wp-content”)) . “/wp-includes/streams.php”);
I would be so grateful for your help. thanks
Hi, actually the include statement is the first line of code in the file.
The problem is, that the steams.php isn’t loaded by the script
you can also try to use this:
include($_SERVER['DOCUMENT_ROOT'] . “/wp-includes/streams.php”);
but be carefull, that only will work when wordpress is not located in an additional direcotry.