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:, ,
0 Trackbacks | 2 Kommentare »

2 Antworten

  1. Rebecca sagt:

    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 :)

  2. Stefan sagt:

    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.

Einen Kommentar abgeben

Bitte beachten Sie: Die Kommentare werden moderiert. Dies kann Ihren Kommentar verzögern. Es besteht aber kein Grund, ihn nochmal abzuschicken.