it-swarm.com.de

wp_redirect () - Header bereits gesendet

Ich versuche, wp_redirect() zu verwenden, um den Benutzer nach dem erfolgreichen Absenden eines Anmeldeformulars auf der Seite umzuleiten.

Es funktioniert nicht und zeigt den folgenden Fehler an:

Warnung: Header-Informationen können nicht geändert werden - Header, die bereits von (Ausgabe gestartet unter /Applications/MAMP/htdocs/theme/wp-content/themes/test/header.php:10) in/Applications/MAMP/htdocs/theme/wp- gesendet wurden Includes/pluggable.php in Zeile 1178

Ich verstehe, es wurde bereits zuvor etwas ausgegeben, deshalb funktioniert es nicht, aber ich habe keine Ahnung, wie ich das zum Laufen bringen soll.

Das Anmeldeformular wird von einer Funktion gerendert und von einer anderen Funktion in meiner functions.php gesendet.

if ( isset( $_POST['subscribe'] ) ) {
    // Submits the form and should then redirect
    wp_redirect("/thank-you/");
    exit;
}

Dann werden diese beiden Funktionen verwendet, wenn ich das Anmeldeformular anzeigen möchte.

Ich fürchte, das ist nicht das Beste. Ich sollte eine Aktion erstellen, die das tut, aber ich habe keine Ahnung, wie ich das implementieren soll. Die meisten Tutorials, die ich gefunden habe, zeigen die Ergebnisse direkt auf derselben Seite und erfordern keine zusätzliche Weiterleitung. Vielleicht arbeiten sie deshalb mit Funktionen in der functions.php

9
Snowball

Antwort gefunden (via)

Anstatt die Funktion zu verwenden, habe ich "wp_loaded" eine Aktion hinzugefügt, die sicherstellt, dass sie geladen wird, bevor Header gesendet werden.

<?php
add_action ('wp_loaded', 'my_custom_redirect');
function my_custom_redirect() {
    if ( isset( $_POST['subscribe'] ) ) {
        $redirect = 'http://example.com/redirect-example-url.html';
        wp_redirect($redirect);
        exit;
    }
}     
?>
15
Snowball

Sie müssen wp_redirect() vor get_header() verwenden, dann wird kein Headerfehler angezeigt.

4
mynamAvinash
add_action('template_redirect', function(){
if(isset($_POST['subscriptio'])){// make this condition such that it only matches when a registraiotn form get submitted
/**
 * do your stuff here
 */
wp_redirect();//....
}
});
2
Abhisek Malakar