WordPress Inhalte nur für registrierte User sichtbar machen

Es gibt viele Gründe, bestimmte Blog-Inhalte nur für registrierte Nutzer sichtbar zu machen (Premium Content, Anweisungen, interne Links).

Leider gibt es keine Standard-Lösung von WordPress für dieses Vorhaben. Ich zeige dir, wie du dieses Problem elegant lösen kannst (mit wenigen Zeilen Code oder Plugins).

Premium-Inhalte durch Plugins oder Themes

Einige Plugins bietet dir genau die gewünschte Funktionalität. Teilweise ist dieses Feature auch bereits in Themes integriert.

Vielleicht passt eines der nachfolgenden Produkte genau zu deinem Vorhaben?

Digimember (Plugin)

Möchtest du bestimmte Inhalte verkaufen, kannst du direkt ein Memberplugin wie zum Beispiel Digimember* benutzen. Dann hast du im Backend die Möglichkeit, deine Beiträge und Seiten einem „Produkt“ zuzuweisen, welches nur noch Käufern angezeigt wird.

Besucht ein nicht eingeloggter User eine Produktseite, bekommt er eine Login-Maske angezeigt.

Was (mir) in Digimember fehlt, ist eine elegante Möglichkeit, Inhalte für alle registrierte Nutzer anzuzeigen – unabhängig von einem Produktkauf. Daher findest du weiter unten meine Lösung, wie ich diese Funktion in Digimember doch nutzen kann.

GeneratePress (Theme)

Das sehr beliebte WordPress Theme GeneratePress* (welches übrigens wirklich genial ist) bietet in der Premium-Version ebenfalls eine fertige Möglichkeit um Inhalte zu verstecken.

Mit Hilfe der sogenannten „Elements“ lassen sich beliebige Inhalte, an beliebigen Stellen, nach unterschiedlichen Kriterien in deinem Blog anzeigen.

So ist auch eine Konfiguration möglich, bestimmte Inhalte (Blöcke) beispielsweise nur für eingeloggte Leser sichtbar zu machen.

Es gibt natürlich noch eine Vielzahl anderer Plugins, die ähnliche Funktionen bieten. Wenn du einen Favoriten hast, hinterlasse gern einen Kommentar!

Eigener Shortcode mit weiteren Vorteilen

Die Fertiglösungen passten mir (wie immer) nicht. Daher habe ich mir, trotz Einsatz von Digimember, einen kleinen Shortcode geschrieben, der folgendes erlaubt:

  • Inhalte für nicht registrierte Nutzer ausblenden
  • Inhalte für registrierte Nutzer einblenden
  • Inhalte für alle Nutzer anzeigen

Und dies unabhängig voneinander und sogar auf der gleichen Seite.

So lässt sich beispielsweise eine Login-Seite mit einem Dashboard kombinieren – abhängig davon, ob der User eingeloggt ist oder nicht.

Möglich wird dies alles durch die WordPress Funktion is_user_logged_in().

Folgende Funktion brauchst du dazu in deiner functions.php:

//Inhalte für registrierte / nicht registrierte Nutzer ausspielen
function function_os_content($atts, $content = null) {

    //Standard Werte
    $values = shortcode_atts( array(
        'type'      => 'logged_out',
    ), $atts );

    //Nur für ausgeloggte User sichtbar
    if($values['type'] == "logged_out" && !is_user_logged_in()){
        return do_shortcode($content);
    }

    //Nur für eingeloggte User sichtbar
    if($values['type'] == "logged_in" && is_user_logged_in()){
        return do_shortcode($content);
    }

}
add_shortcode('os_content', 'function_os_content');

Inhalte, die für ausgeloggte User angezeigt werden sollen, schreibst du zwischen die Shortcodes [os_content type=“logged_out“] und [/os_content].

Nur für ausgeloggte User

Inhalte, die nur für eingeloggte User sichtbar sein sollen, kommen zwischen [os_content type=“logged_in“] und [/os_content].

Nur für eingeloggte User

Du kannst innerhalb der Shortcodes weitere Shortcodes einsetzen.

Sollen Inhalte immer angezeigt werden, dürfen sie von keinem der Shortcodes umschlossen sein.

Mit diesem einfachen Code-Schnipsel kannst du Inhalte jetzt beliebig ein- und ausblenden. Viel Spaß beim Tüfteln!

Schreibe einen Kommentar