Support » Allgemeine Fragen » Nachricht bei nicht angemeldetem User entfernen/umleiten

  • Gelöst strgalt

    (@strgalt)


    Hallo zusammen,
    ich bin am verzweifeln. Ich habe bereits einige Probleme an meiner Seite lösen können – aber an dem Folgendem beiße ich mir seit Tagen die Zähne aus.

    Wenn ein Besucher der Seite auf einen Link klickt der auf eine Seite verweißt für den man sich einloggen muss erscheint folgende Meldung:

    „Tut uns leid, aber dieser Inhalt kann nur mit ausreichender Berechtigung angezeigt werden“

    Ich möchte aber, dass statt dieser Nachricht sofort meine Login- Seite aufgerufen wird.

    Das Meiste was man so findet beschäftigt sich mit der Function is_user_logged_in(), auch für bestimmte Seiten. Das ist aber nicht das was ich suche.

    Wenn ein User eine Seite besuchen möchte für die ein Login- erforderlich ist, soll die Login- Seite kommen. Ich möchte weder die gesammte Page mit einem Login belegen noch will ich alle Seiten für die man angemeldet sein muss in einer Function auflisten.

    Kann mir da jemand weiter helfen?

    Vielen Dank im Voraus
    strgalt

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 17)
  • Hallo,
    wenn du dann noch die URL oben einträgst, dann können wir uns das auch ansehen und dir sicher besser helfen.
    Viele Grüße
    Hans-Gerd

    Wenn ein Besucher der Seite auf einen Link klickt der auf eine Seite verweist für den man sich einloggen muss …

    Womit hast du das umgesetzt?

    Wenn ein User eine Seite besuchen möchte für die ein Login- erforderlich ist, soll die Login- Seite kommen. Ich möchte weder die gesammte Page mit einem Login belegen

    Das ist widersprüchlich.

    (Web) Page = Webseite = einzelne Seite einer Webseite.
    Wenn du eine Seite anlegst, für die ein Login erforderlich ist, hast du diese „Page“ (diese Webseite) mit einem Login belegt.

    … noch will ich alle Seiten für die man angemeldet sein muss in einer Function auflisten

    Dazu ist eine Abfrage notwendig, ob die jeweilige Webseite einen Login erfordert. Um diese Abfrage zu erstellen, müssen wir wissen, wie du die Seite sperrst.

    Thread-Starter strgalt

    (@strgalt)

    Hallo,
    vielen Dank für eure Antowrten.

    ich habe heute Nacht noch gefunden, wo diese Nachricht her kommt.
    Die Nachricht kommt von Members von MemberPress.
    Dort ist in den Einstellungen unter „Berechtigungen aktivieren“ der Punkt „Fehlermeldung“.
    Die Fehlermeldung lässt sich allerdings nicht deaktivieren – es sei denn, ich deaktiviere die Berechitungen, was nicht viel Sinn macht 🙂
    Vielleicht habt ihr dafür auch eine Lösung…

    @bego Mario Garde:
    Und genau das möchte ich nicht, eine Abfrage, welche Seite geöffnet ist und ob der User angemeldet ist. Dazu ist die Seite zu dynamisch. Es sei denn, ich könnte nicht nur nach ID/URL/Titel vergleichen sondern auch danach, ob die Seite nur für bestimmte User oder Rollen zugänglich sein soll. Aber das übernehmen ja Plugins wie z.B. das o.g. Members.

    @Hans-Gerd Gerands:
    Die Seite möchte ich aus Sicherheitsgründen noch nicht „publizieren“. Aber es sollte jetzt klar sein, woran es liegt 🙂

    Beste Grüße
    strgalt

    Was bedeutet denn „dynamisch“? Damit wird eigentlich beschrieben, dass sich eine Webseite (im Gegensatz zu statischen Seiten) erst in dem Moment aus einer Vielzahl von Einstellungen zusammensetzt, wenn der Webseitenbesucher sie aufruft.
    Zu dieser Vielzahl von Einstellungen kann auch eine Prüfung gehören, ob die Seite nur für eine bestimmte Benutzergruppe zugänglich ist (oder wie du es beschreibst: „ob die Seite nur für bestimmte User oder Rollen zugänglich sein soll“) und ob der Webseitenbesucher überhaupt angemeldet ist. Das übernimmt im Moment zwar das verwendete Plugin, nur anscheinend nicht so, wie du es gerne möchtest.

    Thread-Starter strgalt

    (@strgalt)

    Hi,
    dynamisch bedeutet in meinem Fall, dass häufig Seiten zu denen nur bestimmte Benutzergurppen zugang haben dürfen hinzugefügt/entfernt werden. Da ist eine Abfrage nach Titel/ID/URL einfach zu viel Aufwand – nicht automatisierbar – zumindest nicht in einem angemessenen Rahmen, daher das Plugin. Und um ein Role- Managment selbst zu implementieren habe ich gerade einfach keine Zeit. Ohnehin habe ich schon das ein oder oder Plugin durch eigene Funktionen ersetzt um den Einsatz von Plugins zu reduzieren.

    Das Members- Plugin funktionier schon gut und richtig. Es nervt nur diese „Fehler“- Meldung die sinnloserweise nicht deaktiviert werden kann.

    Beste Grüße
    strgalt

    Was ist denn beim Plugin Members mit der Einstellung
    Private Website aktivieren: Abgemeldete Benutzer auf die Login-Seite umleiten, bevor es ihnen ermöglicht wird, die Website zu sehen.

    Ist das nicht genau das, was du möchtest?

    Wenn du bei Verwendung des Plugins „Members“ Beiträge/Seiten erstellst oder bearbeitest und angibst, dass der Beitrag/die Seite nur für Nutzer mit einer vorher angelegten Benutzerrolle „Kunde“ sichtbar sein soll, bekommt der Beitrag/die Seite ein Custom Field _members_access_role mit Wert kunde zugewiesen. Die ergänzende Abfrage wäre also, ob der anzuzeigende Beitrag das Custom Field gesetzt hat und der Besucher angemeldet ist. Ich stelle mir das nicht so furchtbar kompliziert vor.

    Thread-Starter strgalt

    (@strgalt)

    nein, leider nicht. Damit wird die komplette Webseite geschützt. Also als würde man eine is_user_logged_in()- Abfrage in der header.php vornehmen.

    nein, leider nicht. Damit wird die komplette Webseite geschützt.

    Das bezieht sich auf meine Frage zur Plugin-Einstellung?
    Deshalb hatte ich eine weitere Antwort geschrieben, dass eine selektive Abfrage des Custom Fields möglich wäre.

    Also als würde man eine is_user_logged_in()- Abfrage in der header.php vornehmen.

    Nein, ich würde das mit einem Hook verbinden.

    add_action( 'template_redirect', 'members_redirect_visitors' );
    function members_redirect_visitors() {
        global $post;
        if ( is_user_logged_in() || ! 'kunde' == get_post_meta( $post->ID, '_members_access_role', true ) ) return;
        wp_redirect( site_url( '/anmeldeseite' ) ); 
        exit();
    }
    • Diese Antwort wurde geändert vor 3 Jahren, 7 Monaten von Bego Mario Garde. Grund: Code ergänzt
    Thread-Starter strgalt

    (@strgalt)

    Meine Antowrt bezog sich komplett auf die Funktion des Addon’s, Da war deine zweite Antowrt wohl noch nicht da.

    okay, verstehe den Code.
    Ich sitzte mit der Struktur von WP noch nocht nicht so ganz im Sattel… Wo liegt der Unterschied zwischen einem Hook oder wenn ich die Abfrage einfach in die Header.php schreibe?

    Um dauerhaft Code im Theme unterzubringen, musst du ein Child Theme erstellen. Sonst werden deine Änderungen beim nächsten Update überschrieben.

    Die Änderung über die wir hier sprechen bezieht sich auf eine funktionale Erweiterung, nicht auf eine gestalterische Anpassung. Richtig wäre also hier, ein eigenes Plugin zu schreiben, damit die Funktionalität auch nach einem Theme-Wechsel erhalten bleibt. Eigene Plugins für solche kleinen Anpassungen halte ich aber für etwas übertrieben (und auch unübersichtlich) – ich nutze dann lieber das Plugin Code Snippets und füge das dort als Code-Snippet ein.

    Der Code ist noch nicht ganz rund, weil du auf einer Beitragsübersichtsseite weitergeleitet wirst, wenn sie einen nur für Kunden einsehbaren Beitrag enthält. Wenn du nur geschützte Seiten verwendest, müsste das hier besser klappen:

    add_action( 'template_redirect', 'members_redirect_visitors' );
    function members_redirect_visitors() {
        global $post;
        if ( is_user_logged_in() || ! 'kunde' == get_post_meta( $post->ID, '_members_access_role', true ) || ! is_page() ) return;
        wp_redirect( site_url( '/anmeldeseite' ) ); 
        exit();
    }

    … aber die Richtung sollte klar sein. 🙂

    Thread-Starter strgalt

    (@strgalt)

    verstehe. Den Code bekomme ich schon hin – WP ist das „Problem“ 🙂

    Mit den Shortcodes habe ich mich noch kaum beschäftigt. Das Tool das du erwähnst hatte ich gestern in der Mache – kam damit auf die Schnelle aber nicht zurecht, weil ich direkt nach der Installation Kein neus Snippet anlegen konnte bzw konnte ich es nich umbennen. Jetzt hängen da vier mit dem Namen „untitled“ (o.ä.) drin und er will die nicht löschen weil sie alle den gleichen Titel haben 🙂

    Wenn ich das recht verstehe, kann dieser/oder ein beliebiger Code dort eingetragen werden? Und den Shortcode muss ich dann wo eintragen damit er ausgeführt wird?

    Thread-Starter strgalt

    (@strgalt)

    oha, falsch gelesen – es ist code snippet und nicht post snippet – sory

    Shortcodes sind etwas ganz anderes (vergleichbar mit Platzhaltern, die vor dem Rendern der Webseite eine Funktion auslösen).

    Wenn du Code Snippets verwendest, solltest du auch unbenannte Code Snippets jederzeit löschen können. Die Code Snippets werden ausgeführt, wenn du sie in den Plugin-Einstellungen aktivierst – du brauchst dann keine Shortcodes zusätzlich irgendwo eintragen.

    Hooks sind Schnittstellen, an denen du eigenen Code „einhaken“ kannst (deshalb der Name). Der Code wird automatisch berücksichtigt, sobald der Hook ausgeführt wird.

    Thread-Starter strgalt

    (@strgalt)

    okay, ich wurstel mich erstmal zurecht und Heise Show läuft auch. Jedenfalls nette Sache das Plugin.

    Vielen Dank dir erstmal !

Ansicht von 15 Antworten - 1 bis 15 (von insgesamt 17)
  • Das Thema „Nachricht bei nicht angemeldetem User entfernen/umleiten“ ist für neue Antworten geschlossen.