2010-12-21 11 views
1

Ich habe eine benutzerdefinierte Seite Vorlage mit einem Formular (page-report.php).Wordpress Redirect nach erfolgreicher Formularvalidierung und senden

Ich mache Validierung, also brauche ich die Aktion, um zum selben Formular zu führen, aber ich muss auf eine andere Seite bei erfolgreicher Validierung umleiten.

wp_redirect() funktioniert nicht, da spuckt die header() -Funktion aus, nachdem die Ausgabe bereits gestartet wurde.

if ($ _ POST [ 'Bericht']) {

if($validator->ValidateForm()) 
     { 
      wp_redirect('http://thankyou') // redirect 
     } 

}

Ich kann nicht verwenden ob_start() und ob_flush(), weil der Header nicht in diesem enthalten ist Seitenvorlage

ich versuchte, eine Funktion in functions.php zu setzen:

add_action ('get_header', 'redirect_to'); Funktion redirect_to ($ page) { if ($ page) {
wp_redirect ('http://www.google.com'); }

}

Aber das funktioniert nur, wenn ich (nicht die Bedingung, wenn). Wenn ich es verwende, wird die wp_redirect() ausgegeben, nachdem die Ausgabe gestartet wurde.

Was ist meine beste Vorgehensweise, dies zu tun?

Antwort

0

ich es bekommen hätte ... Da ich alles aus dem Innern einer Admin-Seite zu tun, wurde der Header vor dem wp_redirect feuert(), wie es in der Frage erklärt wurde.

So landete ich an der Spitze eine neue Funktion bilden:

add_action('admin_init','redirect_to'); 
function redirect_to() 
{ 
     if (isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action']) { 
        wp_redirect($redirect); 
        die(); 
       } 
     } 

} 

, die sicher macht, dass die redirect_to() Funktion vor dem Kopffeuert wird (auf admin_init). Vielleicht nicht die eleganteste Lösung, aber es funktioniert perfekt.

+0

Was ist $ redirect? Sie haben es nicht definiert –

0

Versuchen Sie, diese

if($_POST['report']) { 

    if($validator->ValidateForm()) { 
     header('Location: http://thankyou') ; 
    } 
} 
+0

Sorry - es nicht funktioniert. wp_redirect() verwendet auch header().Das Problem ist, dass der header() passieren muss, bevor irgendetwas anderes auf der Seite angezeigt wird, und deshalb ist es fehlgeschlagen ... –

1

Ich glaube, Sie den save_post Haken verwenden:

do_action ('save_post', 'custom_add_save');

Auch Sie könnten einfach versuchen, ein Plugin anstelle von Ihrem eigenen Code ... Gravity Forms und Kontaktformular 7 beide gut funktionieren.

}

+0

Ich kann die 'save_post' nicht verwenden, aber Sie haben Recht mit der do_action(). Ich werde das benutzen. –

0

So im Fall sucht jemand für "Redirect nach Post" in Wordpress, das ist, wie Sie es tun:

wp_redirect($_SERVER['REQUEST_URI']); 
+0

Dies wird fehlschlagen, wenn Ihre Formularaktion 'admin-post.php' ist –

Verwandte Themen