Come gestire un modulo personalizzato in WordPress per l'invio a un'altra pagina?

13 nov 2018, 00:25:35
Visualizzazioni: 18.3K
Voti: 4

So che in PHP posso semplicemente impostare action uguale a un file random.php ed elaborare i dati lì, ma come posso in WordPress utilizzare una pagina già esistente con un template personalizzato per inviare un modulo, in modo che dopo l'invio di un modulo su una pagina, l'utente venga reindirizzato a un'altra pagina in WordPress con tutte le credenziali inserite ancora disponibili?

0
Tutte le risposte alla domanda 1
6
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">
<input type="hidden" name="action" value="your_action_name">

Aggiungi questi elementi nel tuo form. Dove admin-post.php elaborerà il tuo form. In questo caso, in base al valore di your_action_name che hai fornito, verrà coinvolto un action hook. Ad esempio, se aggiungi un hook come il seguente nel functions.php del tuo tema o nel tuo plugin:

add_action( 'admin_post_nopriv_your_action_name', 'your_function_to_process_form' );

allora per gli utenti non loggati

function your_function_to_process_form(){
// elabora il tuo form qui
}

verrà chiamata. Da qui puoi elaborare il tuo form. Per gli utenti loggati devi rinominare la tua azione in admin_post_your_action_name invece di admin_post_nopriv_your_action_name. Ricorda che admin_post_ o admin_post_nopriv_ sono disponibili in admin-post.php per eseguire do_action sull'azione appropriata. Qualunque cosa aggiungi alla fine di admin_post_nopriv_ o admin_post_ formerà un action hook. Questo deve essere implementato con add_action(). Se passi contactform come azione nascosta, il tuo action hook sarà admin_post_nopriv_contactform o admin_post_contactform o entrambi.

13 nov 2018 01:15:12
Commenti

Wow, molti passaggi. Capisco tutto nella tua spiegazione, tranne una cosa. Quindi, se dopo l'invio del modulo voglio portare l'utente a una nuova pagina con un layout diverso, come faccio? Perché come ho detto, in PHP normale metto un altro nome di file in action e scrivo la struttura HTML in quel nuovo file. Qui dici di mettere admin-post.php e specificare gli hook per functions.php. Ma dove metto l'URL di una nuova pagina con nuovo HTML e stili per reindirizzare l'utente?

Limpuls Limpuls
13 nov 2018 01:26:29

puoi usare wp_redirect( 'la tua posizione' );. Mettilo alla fine della tua funzione dopo aver elaborato il modulo.

user119247 user119247
13 nov 2018 01:29:45

Dentro functions.php?

Limpuls Limpuls
13 nov 2018 01:30:14

function your_function_to_process_form(){ //elabora il tuo modulo e poi wp_redirect( 'la tua destinazione' ); }

user119247 user119247
13 nov 2018 01:31:42

Grazie. Mi chiedo solo perché esattamente deve essere fatto in questo modo. Solo inviando a admin-post.php. Mi chiedo perché proprio questo e non qualcos'altro. È semplicemente il modo in cui WordPress è fatto e gestisce i moduli personalizzati? Mi piacerebbe leggere qualsiasi risorsa su questo se ne hai.

Limpuls Limpuls
13 nov 2018 01:34:01

Se vogliamo duplicare il modulo da qualche altra parte, la stessa azione ti aiuterà. E WordPress include questo file che ti fornisce l'hook appropriato per seguire la sua natura basata sugli eventi. Per maggiori informazioni puoi seguire questo link. grazie

user119247 user119247
13 nov 2018 01:40:30
Mostra i restanti 1 commenti