1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Weiterleitung nach Login auf vorherige Seite

Dieses Thema im Forum "Konfiguration" wurde erstellt von Mino1411, 3. Dezember 2021.

  1. Mino1411

    Mino1411 New Member

    Registriert seit:
    3. Dezember 2021
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo zusammen,

    ich habe ein Anliegen bezüglich der Anmeldung in Wordpress.

    Ich würde gerne die Benutzer nach Aufruf von /wp-login.php wieder zur vorherigen Seite zurückschicken.

    Das können bei uns entweder Beiträge mit der Permalink-Struktur /kategorie/beitragname oder aber bestimmte Seiten, wie z.B. /seitenname sein.

    Da wir unsere Authentifizierung per SSO an Microsoft weiterleiten, ist es uns leider nicht möglich per Parameter eine entsprechende Weiterleitung an wp-login.php mitzugeben. Diese werden von der Microsoft URL Umleitung zum SSO leider abgeschnitten.

    Meine Idee war jetzt, dass ich beim Aufruf einer Seite, diese Seite in einer Session Variable von PHP speichere und dann hinterher per Login Redirect Filter auf diese Seite umleite.

    Leider ist die Session Variable aber immer leer, sodass der Nutzer doch immer auf der Standard-Umleitungsseite landet.

    Haben Sie eine Idee, wieso das nicht funktioniert? Ist vielleicht irgendwie blockiert, dass wir die Daten abfragen können oder die dann in einer Session Variable speichern?

    Ich hatte auch mal versucht mir die Daten in ein Cookie zu speichern, allerdings bekomme ich dann Fehler von Wordpress beim Aufrufen von Seiten, vermutlich weil ich einen Cookie mit Null initialisieren will.

    Die entsprechenden Methoden habe ich in der functions.php im Child-Theme hinterlegt und hier angehängt:


    > // Save the users' site before sending them to the login page

    > function capture_before_login_page_url(){

    >

    > if( !is_user_logged_in() ){

    > session_start();

    > $current_url = home_url(add_query_arg(array(), $wp->request));

    > $_SESSION['referer_url'] = $current_url;

    > }

    >

    > }

    > add_action( 'wp', 'capture_before_login_page_url' );

    >

    > /**

    > * Redirect users after login

    > */

    > function login_redirect( $url ) {

    > session_start();

    >

    > $redirect_url = home_url( '/goethe-portal' );

    > if ( isset($_SESSION['referer_url']) ){

    > $redirect_url = $_SESSION['referer_url'];

    > unset( $_SESSION['referer_url'] );

    > }

    >

    > return $redirect_url;

    > }

    > add_filter( 'login_redirect', 'login_redirect', 9999, 3 );



    Wir verwenden aktuell PHP 8.0 und die aktuellste Wordpress Version.

    Vielen Dank!


    VG
    Simon F.
     
  2. vriic

    vriic Active Member

    Registriert seit:
    3. Dezember 2021
    Beiträge:
    30
    Zustimmungen:
    4
    Ich vermute, dass sessian_start() zu spät kommt. Das ganze passiert bei dir ja erst wenn der Benutzer schon eingeloggt ist. Aber du willst ja die URL bevor er das ist.

    Edit: sorry, ist noch zu früh. Da ist ja ein ! in der Abfrage. Vergiss was ich geschrieben habe.
    PS: Versuch Mal deine Code als PHP hier einzubauen
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #2 vriic, 4. Dezember 2021
    Zuletzt bearbeitet: 4. Dezember 2021
  3. vriic

    vriic Active Member

    Registriert seit:
    3. Dezember 2021
    Beiträge:
    30
    Zustimmungen:
    4
    Aber ich habe gerade gelesen, dass die globale Session Variablen bei wp deaktiviert sind. Das soll man mit
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    aktivieren können. Danach sollte dein Code funktionieren. Dann brauchst du in deiner Funktion auch das session_start() nicht mehr. Mehr dazu hier gefunden
     
    #3 vriic, 4. Dezember 2021
    Zuletzt bearbeitet: 4. Dezember 2021
  4. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.684
    Zustimmungen:
    1.786
    Wo genau hast Du das gelesen?

    Probleme entstehen eher z.B. bei Nutzung von Cache Plugins oder unsauberer Einrichtung/Nutzung von Links mit Mischungen von http und https oder "mit und ohne www" usw. oder bei zu spätem Aufruf von session_start() wenn schon anderweitige Ausgaben erfolgt sind.
    Was genau soll diese Zeile bewirken? Warum ist das array() leer? Woher kommt die Varianle $wp? Siehe auch Dokumentation add_query_arg()
     
    #4 b3317133, 4. Dezember 2021
    Zuletzt bearbeitet: 4. Dezember 2021
  5. vriic

    vriic Active Member

    Registriert seit:
    3. Dezember 2021
    Beiträge:
    30
    Zustimmungen:
    4
    Mein Fehler. Hat auch nur jemand bei stackoverflow behauptet.
     
  6. Mino1411

    Mino1411 New Member

    Registriert seit:
    3. Dezember 2021
    Beiträge:
    2
    Zustimmungen:
    0
    Die sollte die aktuelle URL, auf der sich der User gerade befindet auslesen und dann soll dieser nach dem Login dahin zurückgeschickt werden.

    Könnte aber so funktionieren, oder?
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Das habe ich ausprobiert, klappt leider immer noch nicht.
     
  7. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.684
    Zustimmungen:
    1.786
    Warum ist das array() leer? Woher kommt die Variable $wp? Woher stammt dieser Code ursprünglich? Evtl. wurde beim Kopieren was missverstanden bzw. vergessen. So wie gepostet macht der Code keinen Sinn und verursacht PHP Warnungen.
    Diese Zeile alleine wird einen PHP Fehler erzeugen, die Variable als solche könnte das gewünschte Ergebnis enthalten, aber auch die Kommentare dazu in der PHP Dokumentation beachten.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden