it-swarm.com.de

Login-Umleitung, wenn Sie von einer bestimmten Seite angemeldet sind

Ich habe ein ziemlich standardmäßiges Anmeldeumleitungsskript in meinen Designfunktionen verwendet, habe jedoch erfahren, dass es einen Fehler mit einem integrierten Plugin für meine Website verursacht. Kurz gesagt, Benutzer können sich innerhalb des Front-End-Systems des Plugins für Konten in einem Lightbox-Modus registrieren. Wenn meine allgemeine Weiterleitung aktiviert ist, kann das Modal die Registrierung nicht abschließen.

Ich versuche also, meine Login-Umleitung auf allen Seiten auszuführen, AUSSER auf einer Seite, die ich an der Schnecke erkennen kann. Diese Seite wird vom Plugin automatisch generiert, daher habe ich keine ID oder ähnliches.

Hier ist meine bestehende Login-Umleitung. Es ist ziemlich einfach.

add_action('wp_login','auto_redirect_after_login');
function auto_redirect_after_login(){
    wp_redirect(home_url());
    exit();
}

Meine Hürde ist, dass diese Benutzerregistrierung auf einer unbegrenzten Anzahl von Seiten erfolgen kann, sie sind jedoch alle "Kinder" des Plugins. Das heißt, sie haben alle die gleiche URL-Struktur.

Alle Seiten, auf denen die Weiterleitung NICHT ausgeführt werden darf, sind .com/courses/*.

Irgendwelche Ideen?

********** UPDATE **********

Hier bin ich jetzt, aber es funktioniert nicht.

add_action('wp_footer', 'detect_page_for_redirect');
function detect_page_for_redirect(){
    if( !is_singular('course')) {
        add_action('wp_login','auto_redirect_after_login');
    }
}

function auto_redirect_after_login(){
    wp_redirect(home_url());
    exit();
}
1
C Porter

Sie können Folgendes versuchen, um ein benutzerdefiniertes Formularfeld hinzuzufügen:

add_action('login_form', 'custom_login_field');
function custom_login_field() {
    if (!is_singular('course')) {
        echo "<input type='hidden' name='context' value='notcourse'>";
    }
}

Was dann abgeholt wird, wenn es gesetzt ist und die Weiterleitung beim Login vornimmt:

add_action('wp_login', 'auto_redirect_after_login');    
function auto_redirect_after_login() {
    if ( (isset($_POST['context'])) && ($_POST['context'] == 'notcourse') ) {
         wp_redirect(home_url()); exit();
    }
}

Damit alle Anmeldeformulare, die von einer Seite außerhalb des Kurses gesendet werden, nach dem Anmelden nach Hause umgeleitet werden, da dies anscheinend Ihre Absicht ist.

AKTUALISIEREN

Das Umschalten der Logik könnte stattdessen funktionieren:

add_action('login_form', 'custom_login_field');
function custom_login_field() {
    if (is_singular('course')) {
        echo "<input type='hidden' name='context' value='course'>";
    }
}

add_action('wp_login', 'auto_redirect_after_login');    
function auto_redirect_after_login() {
    if ( (isset($_POST['context'])) && ($_POST['context'] == 'course') ) {
         return;
    }
    wp_redirect(home_url()); exit();
}
0
majick