web-dev-qa-db-fra.com

Formulaire personnalisé, shortcode et gestionnaire d'envoi

J'ai un formulaire frontal avec un tas de commentaires. Mes exigences me forcent à utiliser un shortcode personnalisé pour créer le formulaire. J'ai déjà testé une page avec ce shortcode.

Voici mon :

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

Basé sur cela, il devrait ouvrir la même page (et il l'a fait). Cependant, lorsque j'ai cliqué sur submit, j'ai reçu 404 sur la même URL. y-a-t'il une solution?

MISE À JOUR # 1

J'essaie différentes routes, en utilisant 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]
    }
}

Ceci exécute avec succès mon action prévue sur submit. Mais! lors de la redirection, il a tout de même 404. Je ne sais pas ce qui ne va pas.

4
ariefbayu

Je prends die() comme solution. Bien que je ne préfère pas cela.

$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

Votre formulaire a-t-il une entrée avec le nom "nom"? Par exemple:

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

Si c'est le cas, cela causera des problèmes. Changer la valeur du nom.

Voir aussi: Le formulaire 'nom' se casse et passe à la page 404 .

0
Geert

Je suppose que la ligne vers la fin

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

est ce qui échoue. Je le changerais en ceci

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

cela devrait le faire fonctionner correctement

0
Norcross