wp_redirect funktioniert nicht nach dem Absenden des Formulars

Ich verwende diese Weiterleitung nach dem Einfügen eines Posts. Es funktioniert nicht, es aktualisiert nur die Seite, auf der sich das Formular befindet. Ich weiß, dass die $ pid die Post-ID bekommt, was ist das Problem? Dies ist das Ende meines PHP-Codes für die Bearbeitung des Formulars.

$pid = wp_insert_post($new_post); update_post_meta($pid,'domain',$domain); update_post_meta($pid,'keywords',$keywords); wp_redirect( get_permalink($pid) ); exit(); 

Hier ist ein Pastebin des kompletten Codes

Die Verwendung von Better HTTP Redirects ist die Ausgabe und verbindet das Wort here mit dem korrekten neu veröffentlichten Post.

 302 Found The document has moved here. 

Solutions Collecting From Web of "wp_redirect funktioniert nicht nach dem Absenden des Formulars"

Sie können wp_redirect nur verwenden, bevor Inhalte an den Browser gesendet werden. Wenn Sie PHP-Debugging aktivieren würden, würden Sie aufgrund von get_header() in der ersten Zeile einen Fehler “Header bereits gesendet” sehen.

Anstatt das Formular in der Vorlage zu verarbeiten, können Sie eine frühere Aktion wie wp_loaded und einige Abfragen in der wp_loaded speichern, wenn Sie nur redirect wp_loaded .

EDIT , Beispiel-

 add_action( 'wp_loaded', 'wpa76991_process_form' ); function wpa76991_process_form(){ if( isset( $_POST['my_form_widget'] ) ): // process form, and then wp_redirect( get_permalink( $pid ) ); exit(); endif; } 

Mit einer Aktion können Sie den Code außerhalb Ihrer Vorlagen aufbewahren. Kombinieren Sie dies mit einem Shortcode, um das Formular auszugeben und alles in eine class zu packen, um den Status zwischen Verarbeitung / Ausgabe zu speichern, und Sie können alles tun, ohne die Frontend-Vorlagen zu berühren.

Verschieben von get_header(); Zum Ende dieses Codes sollte das Problem beheben. Ihr Code wird ausgeführt, bevor Header gesendet werden und die Weiterleitung funktioniert.

 // ... wp_redirect( get_permalink($pid) ); exit(); //insert taxonomies } get_header(); ?> 

Ich nehme an, es gibt mehr Code auf der Seite unter dem, was du gepostet hast? Wenn nicht, sehe ich gar keine Notwendigkeit für get_header() .

Der einzige Vorteil, den ich sehen kann, einen Haken zu verwenden, wie Milo vorschlägt, ist, dass Sie in der Lage sein könnten, etwas Overhead zu vermeiden, wenn Sie einen früh genug Haken wählen. Sie könnten einen Bruchteil einer Sekunde bei der Verarbeitung sparen.