Widgets nur bestimmten Benutzergruppen sichtbar machen

  • Hallo,

    Ich stehe vor einem großen Problem.

    Ich versuche gerade Widgets nur bestimmten benutzern sichtbar zu machen.

    Ein Bsp:

    Ein Counter welcher nur von Admins gesehen werden soll.


    leider finde ich nirgends ne Info wie bzw ob das geht.
    Evtl. suche ich auch einfach nur nach dem falschen.

    Das einzige was ich gefunden habe ist das Plugin Widgetlogic aber so wie ich das verstanden habe ist das nur damit die Widgets nur auf bestimmten seiten sichtbar ist.


    danke schonmal

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ein Plugin dafür ist mir nicht bekannt, ABER:
    nach etwas rumprobieren habe ich dafür einen Hack gefunden, den man in Widget Logic einbauen kann. Nachteil: er ist nicht ganz so bequem anzuwenden wie Widget Logic selbst, also einfach mit Eingabe der entsprechenden Tags - man muss in den Quelltext von WL eingreifen und das bei einem Update wiederholen.

    Widget-Logic "schaltet sich in den Original-Callback für die Widgets" ein, prüft anhand der Template-Tags, ob der Wert $wl_value TRUE oder FALSE ist. Ist er TRUE, wird das Widget angezeigt, ist er FALSE, nicht.

    Hier greifen wir im Plugin ein:

    PHP
    function widget_logic_redirected_callback()




    Über

    PHP
    if ( $wl_value )



    und UNTER

    PHP
    $wl_value=(eval($wl_value) && is_callable($callback));



    fragen wir zunächst die Gruppe (Rolle) des Users ab (im Widget "Counter" ist im Widget Logic-Teil nix eingetragen, der Wert wäre also immer TRUE für das Widget Counter.

    PHP
    global $current_user;
        get_currentuserinfo();
        $user_roles = $current_user->roles;
        $user_role = array_shift($user_roles);



    In $user_role steht nun die Rolle des Users.

    Nun brauchen wir die ID des Widgets:

    Hierzu einfach mal mit echo diese ausgeben lassen:

    PHP
    echo "WERT: $wl_value ID-Widget: $id";



    Hat man die ID des Widgets, kann man das wieder auskommentieren.

    Und jetzt entwscheiden wir anhand von $id und Rolle, ob der Wert $wl_value TRUE bleibt oder nicht.

    Eine angenommene Widget-ID von counter-2 und dass das Widget nur für Admins sichtbar sein soll, ergäbe also zuguterletzt:

    PHP
    if ($id=="counter-2" && $user_role!="administrator") {
    $wl_value=false;
    }



    Nun dürfte das Counter-Widget nur noch für angemeldete Administratoren sichtbar sein.

    Hoffe, das hilft Dir weiter.

    Einmal editiert, zuletzt von MStemberg (20. Oktober 2011 um 09:10)

  • Erstmal danke für die Antwort,


    Leider verstehe ich nur Bahnhof :) ich hätte evtl. erwähnen sollen das ich nicht wirklich Ahnung davon habe und auch erst seit kurzem WP benutze.

    Dachte es wäre einfacher :(

    Naja mal schauen vllt bekomme ich es ja noch hin :)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!