• Gelöst cer0x

    (@cer0x)


    Hallo ihr lieben,

    nach stundenlanger Suche ohne zufriedenstellendes Ergebnis, dachte ich mir ich frage mal hier nach, in der Hoffnung eine Lösung zu finden.

    Ich möchte die Top-Bar samt allen Menü-Punkten nur angemeldeten Nutzern sichtbar machen. Leider habe ich bislang nur eine Möglichkeit gefunden, einzelne Menüpunkte auszublenden – dann hat man wenn man nicht eingeloggt ist einen weißen Balken über dem Hauptmenü, was nicht wirklich gut aussieht.
    Gibt es eine Möglichkeit die Top-Bar (inkl. aller Menüpunkte) nur einzublenden, wenn man eingeloggt ist?

    Ich nutze Elementor + OceanWP

    Hoffentlich finde ich hier eine Möglichkeit das umzusetzen.

    Vielen Dank für eure Bemühungen im Vorhinein und noch einen schönen Sonntag ☺️

    Gruß
    Anschar

Ansicht von 11 Antworten – 1 bis 11 (von insgesamt 11)
  • Moderator Bego Mario Garde

    (@pixolin)

    Das geht, wenn du ein Child-Theme erstellst und die WordPress-Funktion is_user_logged_in() verwendest – PHP-Vorkenntnisse vorausgesetzt.

    Thread-Starter cer0x

    (@cer0x)

    Okay, das wird vermutlich nichts. Hatte auf ein Plugin oder eine einfachere Lösung gehofft. Danke vielmals

    Moderator Bego Mario Garde

    (@pixolin)

    Eine einfache Lösung wäre, die Top-Bar mit einer CSS-Regel auszublenden. Das lässt sich aber einfach umgehen – entweder schaut der nicht angemeldete Benutzer in den Quellcode der Webseite, in dem auch der ausgeblendete Teil gezeigt wird oder er fügt über die Entwickler-Tools des Browsers nachträglich eine CSS-Klasse ein, um die Top-Bar doch angezeigt zu bekommen. Wenn du da etwas „geheimes“ ausschließlich registrierten Nutzern zeigen möchtest, ist diese „einfache“ Lösung keine Lösung.

    Alternativ wäre es möglich, eine kleine Funktion zu schreiben, um den Hook ocean_top_bar in Verbindung mit is_user_logged_in() zu nutzen. Da es hier aber nicht unser Ziel ist, auf Zuruf Änderungen am Theme vorzunehmen, habe ich mir das nicht mehr im Detail angesehen.

    Moderator Bego Mario Garde

    (@pixolin)

    Probier mal folgende Funktion:

    add_filter( 'ocean_display_top_bar', 'top_bar_users_only' );
    function top_bar_users_only() {
      if( is_user_logged_in() ) {
        return true;
      }
      return;
    }

    Die kannst du entweder im Child-Theme in der functions.php anhängen oder du schreibst rasch ein eigenes Plugin. Dazu ergänzt du den Code um einen Plugin-Header …

    <?php
    /* 
     * Plugin Name: OceanWP TopBar for Users
     * Description: Display OceanWP's Top Bar for logged in users only
     */
    if ( ! defined( 'ABSPATH' ) ) { return; }
    
    add_filter( 'ocean_display_top_bar', 'top_bar_users_only' );
    function top_bar_users_only() {
      if( is_user_logged_in() ) {
        return true;
      }
      return;
    }

    … packst das in eine Datei owp_topbar_users, packst die Datei in ein Verzeichnis owp_topbar_users, komprimierst das Verzeichnis als owp_topbar_users.zip und installierst das Plugin übers Backend deiner Website und aktivierst es.

    Thread-Starter cer0x

    (@cer0x)

    Danke für deine großartige Unterstützung 🙂
    Leider bin ich da wohl ne ziemliche niete.

    Fatal error: Cannot redeclare top_bar_users_only() (previously declared in /var/www/vhosts/imprya-manufaktur.de/huskydays/wp-content/plugins/owp_topbar_users/functions.php:10) in /var/www/vhosts/imprya-manufaktur.de/huskydays/wp-content/plugins/owp_topbar_users/functions.php on line 16

    Also ich habe:
    1. die functions.php erstellt, die sieht so aus:

    <?php
    /* 
     * Plugin Name: OceanWP TopBar for Users
     * Description: Display OceanWP's Top Bar for logged in users only
     */
    if ( ! defined( 'ABSPATH' ) ) { return; }
    
    add_filter( 'ocean_display_top_bar', 'top_bar_users_only' );
    function top_bar_users_only() {
    	if( is_user_logged_in() ) {
      return true;
    	}
    	return false;
    }
    add_filter( 'ocean_display_top_bar', 'top_bar_users_only' );
    function top_bar_users_only() {
    	if( is_user_logged_in() ) {
      return true;
    	}
    	return false;
    }

    in einen Order gepackt. Zur ZIP gemacht und hochgeladen.

    Was habe ich falsch gemacht? :/

    Moderator Bego Mario Garde

    (@pixolin)

    Du hast die Zeilen

    add_filter( 'ocean_display_top_bar', 'top_bar_users_only' );
    function top_bar_users_only() {
    	if( is_user_logged_in() ) {
      return true;
    	}
    	return false;
    }

    jetzt doppelt.

    Thread-Starter cer0x

    (@cer0x)

    Das hat geklappt. Vielen lieben Dank!

    Moderator Bego Mario Garde

    (@pixolin)

    Dann hoffe ich, dass du jetzt ein Plugin erstellt hast, weil

    <?php
    /* 
     * Plugin Name: OceanWP TopBar for Users
     * Description: Display OceanWP's Top Bar for logged in users only
     */
    if ( ! defined( 'ABSPATH' ) ) { return; }

    nicht in die functions.php gehört.

    Thread-Starter cer0x

    (@cer0x)

    Habe ein Plugin erstellt 👍 funktioniert Top. Vielen Dank! Schönen Sonntag noch

    Thread-Starter cer0x

    (@cer0x)

    @pixolin die Top bar wird auf der mobile Ansicht immernoch angezeigt. Wie müsste ich das anpassen, damit es auch mobil seine Wirkung hat? Viele Grüße und vielen Dank

    Moderator Bego Mario Garde

    (@pixolin)

    Dass du in der mobilen Ansicht die Top-Bar noch siehst, wird mit dem Browser-Cache des Smartphones zu tun haben.

Ansicht von 11 Antworten – 1 bis 11 (von insgesamt 11)
  • Das Thema „Top-Bar nur angemeldet sichtbar“ ist für neue Antworten geschlossen.