Come creare un form personalizzato con shortcode e gestire l'invio

27 apr 2011, 23:19:43
Visualizzazioni: 5.94K
Voti: 4

Ho un form frontend con diversi input. I miei requisiti mi obbligano a usare uno shortcode personalizzato per creare il form. Ho già testato una pagina con quello shortcode.

Ecco il mio codice:

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

In base a questo, dovrebbe riaprire la stessa pagina (e lo ha fatto). Tuttavia, quando premo invio, ottengo un errore 404 sullo stesso URL. Esiste una soluzione?

AGGIORNAMENTO #1

Provo una strada diversa, usando 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'] ) )
    {
        //eseguo il mio codice qui
        wp_redirect( get_permalink(35) ); //pagina che contiene [shortcode]
    }
}

Questo esegue con successo l'azione prevista all'invio. Ma! dopo il reindirizzamento, ottengo ancora 404. Non capisco cosa sia sbagliato.

2
Commenti

Qual è il tuo codice del modulo?

Bainternet Bainternet
28 apr 2011 09:14:09

@bainternet eccolo qui: http://pastebin.com/fXvyuwnx

ariefbayu ariefbayu
28 apr 2011 09:22:52
Tutte le risposte alla domanda 3
1

Il tuo modulo ha un campo di input con il nome "name"? Ad esempio:

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

Se è così, causerà problemi. Cambia il valore del nome.

Vedi anche: Il 'name' del modulo si interrompe e va alla pagina 404.

28 apr 2011 06:05:42
Commenti

Non ho 'name' nel mio modulo.

ariefbayu ariefbayu
28 apr 2011 06:40:03
4

Suppongo che la riga vicino alla fine

wp_redirect( get_permalink(35) );//pagina che contiene il modulo

sia quella che non funziona. Lo cambierei in questo modo

$redirect_link =  get_permalink(35) ; //pagina che contiene il modulo
wp_redirect( $redirect_link );  // attiva il redirect
exit;

questo dovrebbe far funzionare correttamente la funzione

1 mag 2011 17:36:28
Commenti

non funziona neanche T_T

ariefbayu ariefbayu
1 mag 2011 22:19:55

Qual è il link 404, nello specifico? cioè qual è l'URL della pagina a cui sta cercando di reindirizzare e quindi dà errore 404?

Norcross Norcross
2 mag 2011 00:29:48

proviene da example.com/?page_id=35 e al submit, va su example.com/?page_id=35. Dopo l'elaborazione, dovrebbe reindirizzare a example.com/?page_id=35 in modo che quando l'utente preme aggiorna, non abbia alcun effetto sul sito.

ariefbayu ariefbayu
2 mag 2011 01:13:35

ops, click sbagliato. Beh, è il tuo giorno fortunato per ottenere +50 reputazioni ;))

ariefbayu ariefbayu
2 mag 2011 04:18:10
2

Prendo die() come soluzione. Anche se non è la mia preferita.

$redirect_link =  get_permalink(35) ; //pagina che contiene il modulo
$script_redirect = "<div>Il tuo modulo è stato inviato. Attendi un momento. Se il browser non reindirizza automaticamente, clicca <a href='$redirect_link'>qui</a>.</div>
<script type='text/javasript' language='javascript'> 
    window.location = '$redirect_link';
</script> ";
die( $script_redirect );
1 mag 2011 22:52:34
Commenti

Funziona se aggiungi die() dopo la chiamata a wp_redirect()? Chiamare semplicemente il redirect non interrompe l'esecuzione dello script. Vedrai questo pattern anche nel codice core: wp_redirect( $somewhere ); exit;.

Jan Fabry Jan Fabry
4 mag 2011 15:27:33

In qualche modo lo faremo funzionare. Ho provato wp_redirect(); exit; Strano, vero?

ariefbayu ariefbayu
4 mag 2011 22:53:00