Cómo manejar un formulario personalizado en WordPress para enviar a otra página

13 nov 2018, 00:25:35
Vistas: 18.3K
Votos: 4

Sé que en PHP puedo simplemente poner action igual a random.php y procesar los datos ahí, pero ¿cómo en WordPress puedo usar una página existente con una plantilla personalizada para enviar un formulario, de modo que después de enviar un formulario en una página, el usuario sea redirigido a otra página en WordPress con todas sus credenciales ingresadas aún disponibles?

0
Todas las respuestas a la pregunta 1
6
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">
<input type="hidden" name="action" value="your_action_name">

Añade esto en tu formulario. Donde admin-post.php procesará tu formulario. En ese caso, basado en el valor de your_action_name que proporciones, se activará un gancho de acción. Por ejemplo, si añades un gancho como el siguiente en el functions.php de tu tema o en tu plugin:

add_action( 'admin_post_nopriv_your_action_name', 'your_function_to_process_form' );

entonces para usuarios no logueados:

function your_function_to_process_form(){
// procesa tu formulario aquí
}

será llamado. Desde allí puedes procesar tu formulario. Para usuarios logueados necesitas renombrar tu acción a admin_post_your_action_name en lugar de admin_post_nopriv_your_action_name. Recuerda que admin_post_ o admin_post_nopriv_ están disponibles en admin-post.php para do_action de la acción apropiada. Lo que añadas al final de admin_post_nopriv_ o admin_post_ formulará un gancho de acción. Eso necesita ser implementado con add_action(). Si pasas contactform como acción oculta, entonces tu gancho de acción será admin_post_nopriv_contactform o admin_post_contactform o ambos.

13 nov 2018 01:15:12
Comentarios

Vaya, muchos pasos. Entiendo todo en tu explicación, excepto una cosa. Entonces, digamos que después del envío del formulario quiero llevar al usuario a una nueva página con otro diseño, ¿cómo lo hago? Porque como dije, en PHP plano pongo otro nombre de archivo en action y simplemente escribo la estructura HTML en ese nuevo archivo. Aquí dices que pongas admin-post.php y especifiques hooks para functions.php. Pero ¿dónde pongo una nueva URL de página con nuevo HTML y estilos para que el usuario sea redirigido?

Limpuls Limpuls
13 nov 2018 01:26:29

puedes usar wp_redirect( 'tu ubicación' );. Ponlo al final de tu función después de haber procesado tu formulario.

user119247 user119247
13 nov 2018 01:29:45

¿Dentro de functions.php?

Limpuls Limpuls
13 nov 2018 01:30:14

function your_function_to_process_form(){ //haz el procesamiento de tu formulario y luego wp_redirect( 'tu ubicación' ); }

user119247 user119247
13 nov 2018 01:31:42

Gracias. Solo me pregunto por qué exactamente tiene que hacerse de esta manera. Solo enviando a admin-post.php. Me pregunto por qué a este y no a otro. ¿Es simplemente la forma en que WordPress funciona y maneja formularios personalizados? Me encantaría leer cualquier recurso sobre esto si tienes.

Limpuls Limpuls
13 nov 2018 01:34:01

Si queremos duplicar el formulario en otro lugar, la misma acción te ayudará. Y WordPress viene con este archivo que te proporciona el hook apropiado para seguir su naturaleza basada en eventos. Para más información puedes seguir este enlace. Gracias.

user119247 user119247
13 nov 2018 01:40:30
Mostrar los 1 comentarios restantes