Post senden mit shortcode und init

Ich versuche, den besten Weg zu finden, Fehler auf eine Seite zurückzugeben, sobald ein Formular mit einem Shortcode eingereicht wurde.

Ich füge eine function zu init wie –

 add_action( 'init', 'contact_form_process_post' ); function contact_form_process_post() { if( isset( $_POST['unique_hidden_field'] ) ) { // process $_POST data here $errors = new WP_Error(); if( empty( $_POST['full_name'] ) ) { $errors->add( 'invalid', __( 'Full name cannot be empty' ) ); } if( count( $errors->get_error_messages() ) == 0 ) { wp_redirect( 'some_url '); exit(); } else { // Return errors here } } } 

Dies funktioniert einwandfrei, wenn keine Fehler vorliegen (dh alle Felder sind gültig), aber wenn einige Felder leer sind, sollte es zum Formular mit diesen Fehlern zurückkehren. Wenn sie gültig sind, wird auf eine Bestätigungsseite weitergeleitet.

Das Problem besteht darin, die Fehler von init an den Inhalt / Shortcode zurückzugeben. Ich kann es folgendermaßen machen –

  1. Weiterleiten an die Seite, die die Fehler in der URL festlegt (query vars)
  2. Globalisieren Sie eine Variable für die Fehler und verwenden Sie diese im Shortcode
  3. Filtern Sie den the_content und fügen Sie die Fehler hinzu
  4. Speichern Sie die Fehler in einer Sitzung

Mir wäre es lieber, wenn die URL gleich bleibt, also ist Option 1 nicht verfügbar. Option zwei funktioniert, aber es fühlt sich etwas “schmutzig” an, zusammen mit Option 3, die nicht großartig ist. Option 4 könnte funktionieren, obwohl WordPress keine Sitzungen verwendet.

Dies wird zusammen mit der JS-validation verwendet (oder wenn JS deaktiviert ist).

Vielleicht vermisse ich einen offensichtlichen Weg, dies zu tun?

Irgendwelche Vorschläge?

Vielen Dank!

Solutions Collecting From Web of "Post senden mit shortcode und init"