Formulario personalizado, cortocodio y controlador de envío
Pregunta
Tengo un formulario frontend con un montón de entrada. Mis requisitos me obligan a usar un código corto personalizado para crear el formulario. Ya he probado una página con ese código corto.
Aquí está mi :
<form name="myform" method="post" action="<?php echo str_replace( '%7E', '~', $_SERVER['REQUEST_URI']); ?>" enctype="multipart/form-data">
Según esto, debe abrir la misma página (y lo hizo). Sin embargo, cuando llegué a enviar, obtuve 404 en esa misma URL. ¿Hay alguna solución?
Actualización #1
Intento una ruta diferente, 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'] ) )
{
//do my code here
wp_redirect( get_permalink(35) );//page that has [shortcode]
}
}
Esto ejecuta con éxito mi acción prevista para enviar. ¡Pero! Tras la redirección, todavía obtuvo 404. No sé qué está mal.
Solución 3
tomo die()
como solución. Sin embargo, no prefiero esto.
$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 );
Otros consejos
¿Su formulario tiene una entrada con el nombre de "nombre"? Por ejemplo:
<input type="text" name="name">
Si es así, eso causará problemas. Cambiar el valor del nombre.
Ver también: Formulario 'nombre' se rompe y va a la página 404.
Supongo que la línea cerca del final
wp_redirect( get_permalink(35) );//page that has form
es lo que está fallando. Lo cambiaría a esto
$redirect_link = get_permalink(35) ; //page that has form
wp_redirect( $redirect_link ); // trigger redirect
exit;
que debería hacer que funcione funcionando correctamente