shortcode – Ich muss eine Nachricht schreiben oder eine andere Seite laden

Ich zeige ein Formular auf der öffentlichen Seite unter Verwendung von shortcode an. Der shortcode ist in Post add_new enthalten, das sich unter http://localhost/wordpress/add_new/ . Nach dem erfolgreichen Speichern der Formulardaten muss die Seite entweder 1) den Speicherort der Seite ändern und eine Meldung über den erfolgreichen Abschluss anzeigen oder eine Nachricht über den erfolgreichen Abschluss auf der Seite add_new anzeigen.

Das ist meine Kurznummer:

 add_shortcode( 'show_INT_form', function() { $int_class = new int_class; if ( isset( $_REQUEST['int_prefix'] ) && isset( $_REQUEST['int_suffix'] ) ) { // ???? Area X // What do I do here? // ???? } else { $ret = $int_class->public_form(); // function that loads the form onto the page } return $ret; } ); 

Wie kann ich mit der Seite add_new eine weitere Seite laden?

Ich habe Beispielcode gesehen, der einfach im Bereich X in den Kommentaren im obigen Code . Ich habe das versucht, und es funktioniert, aber ist das richtige Verfahren?

Ich habe keine anderen Methoden ausprobiert, da ich nicht weiß, wie ich die function und den classnumfang umgehen soll. Wie kann ich einen neuen Ereignis-Listener (z. B. add_action( 'send_headers' ) ) außerhalb meiner add_shortcode-function aufrufen und ihm ein Argument übergeben, z. B. eine ‘Erfolgs-‘ oder ‘Fehler’-Nachricht?

Solutions Collecting From Web of "shortcode – Ich muss eine Nachricht schreiben oder eine andere Seite laden"

Verschieben Sie den Code für die Formularverarbeitung außerhalb des Shortcodes, damit Sie ihn mit einer früheren Aktion verknüpfen können, bevor die Header gesendet werden. Anschließend können Sie die gewünschte Weiterleitung durchführen, nachdem das Formular verarbeitet wurde.

 function process_int_form(){ if ( isset( $_REQUEST['int_prefix'] ) && isset( $_REQUEST['int_suffix'] ) ) { // process form wp_redirect( home_url( $_SERVER['REQUEST_URI'] ) ); } } add_action( 'init', 'process_int_form' );