webentwicklung-frage-antwort-db.com.de

Benutzerdefiniertes Formular, Shortcode und Submit-Handler

Ich habe ein Frontend-Formular mit vielen Eingaben. Meine Anforderungen zwingen mich, einen benutzerdefinierten Shortcode zum Erstellen des Formulars zu verwenden. Ich habe bereits eine Seite mit diesem Shortcode getestet.

Hier ist meins :

<form name="myform" method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>" enctype="multipart/form-data">

Darauf basierend sollte es dieselbe Seite öffnen (und das tat es auch). Als ich jedoch auf "Submit" drückte, erhielt ich 404 für dieselbe URL. Gibt es eine Lösung?

UPDATE # 1

Ich versuche eine andere Route mit add_action ('init'):

add_action('init', 'mbro1_intercept_form_input');
function mbro1_intercept_form_input()
{
    if( !(isset($_POST['action_code']) && $_POST['action_code'] == 'mbro_intercept_form_input') )
        return "";
    if( isset( $_POST['submit'] ) )
    {
        //do my code here
        wp_redirect( get_permalink(35) );//page that has [shortcode]
    }
}

Dadurch wurde meine beabsichtigte Aktion beim Senden erfolgreich ausgeführt. Aber! Bei der Umleitung war es immer noch 404. Ich weiß nicht, was falsch ist.

4
ariefbayu

Ich nehme die() als Lösung. Ich bevorzuge das allerdings nicht.

$redirect_link =  get_permalink(35) ; //page that has form
$script_redirect = "<div>Your form is submitted. Please wait a moment. If your browser didn't redirect, click <a href='$redirect_link'>here</a>.</div>
<script type='text/javasript' language='javascript'> 
    window.location = '$redirect_link';
</script> ";
die( $script_redirect );
0
ariefbayu

Hat Ihr Formular eine Eingabe mit dem Namen "name"? Zum Beispiel:

<input type="text" name="name">

Wenn ja, wird dies zu Problemen führen. Ändern Sie den Namen Wert.

Siehe auch: Formular 'Name' bricht ab und geht zu Seite 404 .

0
Geert

Ich gehe davon aus, dass die Linie am Ende ist

wp_redirect( get_permalink(35) );//page that has form

ist das, was scheitert. Ich würde das ändern

$redirect_link =  get_permalink(35) ; //page that has form
wp_redirect( $redirect_link );  // trigger redirect
exit;

das sollte dazu führen, dass es richtig funktioniert

0
Norcross