Shortcode nur für eingeloggte Benutzer sichtbar machen

  • Hey Community,

    darf ich mit meinem Problem hier weitermachen, andernfalls gerne ein neues Thema erstellen.

    Ich habe ein Formular, dass mittels Shortcode hinzugefügt wird: [wcj_product_add_new]

    Wie muss ich es anstellen, dass dieser Inhalt nur für eingeloggte User sichtbar wird?

    Gerne kann hierfür auch eine separate Template-Datei geschrieben werden, aber auch hier bekomme ich es einfach nicht hin, dass der Inhalt nur für eingeloggte User sichtbar wird?!?

    Ich habe folgendes Snippet gefunden:

    Code
    function member_check_shortcode($atts, $content = null) { 
        if (is_user_logged_in() && !is_null($content) && !is_feed()) { 
            return do_shortcode($content); 
        } 
        return '<p>Please register to add content.</p>'; 
    } 
    add_shortcode('member', 'member_check_shortcode');

    [SIZE=14px][FONT=Monaco][COLOR=rgb(197, 200, 198)][/COLOR][/FONT][/SIZE]
    Wenn ich jedoch jetzt im Seiteneditor folgendes eingebe:
    [member][wcj_product_add_new][/member]

    dann wird zwar für nichteingeloggte User nichts mehr angezeigt, jedoch für diejenigen die eingeloggt sind, nur noch der Shortcode und nicht mehr das Formular. Also irgendwas mache ich falsch....

    Wenn das so nicht umzusetzen ist, dann doch definitv über die TemplateDatei, oder?

    Hier ist mein Auszug daraus:


    Schöne Grüße
    Karsten

    Schöne Grüße
    Karsten

    • 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

  • Geht beides nicht... beide Varianten bleiben so, wie auf dem zweiten Bild.

    Ich bin nicht abgeneigt, mein Template umzuschreiben....im Prinzip ist dieser Short auch nur für eine einzige Seite zuständig.
    Also könnte ich doch quasi hier schon die Abfrage machen, wenn user logged in, dann...

    Den Code vom Template hatte ich weiter oben schon gepostet....dieser müsste halt nur irgendwie umgeschrieben werden ?!?

    Schöne Grüße
    Karsten

  • Wenn der [wcj_product_add_new] Shortcode im Frontend im Klartext angezeigt wird, ist das entspr. Plugin o.ä., das den Shortcode verarbeiten würde, nicht aktiv.

    Stelle erstmal sicher, dass in einem Classic Block oder im Classic Editor bei Eingabe des Shortcodes im Frontend Dein Formular angezeigt wird. Wenn das dann der Fall ist, kann man eine angemeldet/nicht angemeldet Unterscheidung angehen.

  • Dann zurück zu #2.

    Wenn für nicht eingeloggte Benutzer nichts angezeigt wird, wird nicht der o.g. PHP-Code verwendet, mit dem PHP-Code müsste Please register to add content. angezeigt werden.

    Evtl. gibt es noch einen anderen member Shortcode im System.

  • [member]Inhalt mit Text funktioniert. [/member]
    Aber: [member]Inhalt mit [shortcode] funktioniert nicht. [/member]


    Ich hab das ganze mal mit einem anderen Shortcode ausprobiert...

    [member]
    [shortcode_button]
    [/member]

    ...das funktioniert auch nicht. Also entweder können keine Shortcodes eingebunden werden, oder ich hab irgendwo einen Fehler im System....

    Schöne Grüße
    Karsten

  • Evtl. gibt es noch einen anderen member Shortcode im System.

    Das vermute ich auch fast. Irgendwie passt die beschriebene Ausgabe so gar nicht zum gezeigten Shortcode.

    Versuch Mal folgendes:

    1. Lösch den oben gezeigten Shortcode mal vollständig. Funktioniert [member][/member] dann noch?

    2. Ändere Mal folgende Zeile:

    Code
    add_shortcode('member', 'member_check_shortcode');

    in

    Code
    add_shortcode('member_wpde', 'member_check_shortcode');

    Führt [member_wpde][/member_wpde] zur gleichen Ausgabe, oder hat sich etwas verändert?

  • Warum so kompliziert? Der Booster Shortcode hat ein Attribute um festzulegen für wen der Inhalt angezeigt wird: https://booster.io/shortcodes/wcj_product_add_new/

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Damit scheint das grundsätzliche Problem ja gelöst zu sein.

    Wäre jetzt trotzdem noch interessant zu erfahren, wo das Problem bzw. die Probleme bzgl. dieses/dieser member-Shortcodes lagen.

  • @b3317133 evtl. Outputbuffering im Booster Shortcode

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Ich werde auf jeden Fall heute Abend die vorher genannte Variante von Daniel ausprobieren.
    Vielleicht funktioniert das damit ja ?!?

    Wenn Du es unbedingt kompliziert haben willst mit Zeitverlust für den doppelten Durchlauf der Parserroutine, kannst Du das natürlich machen. Ich würde einfach die Funktionen nutzen, wie von Booster bereitgestellt (siehe mein Posting)

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

Jetzt mitmachen!

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