2011-02-28 30 views
5

tiene una forma propia y personalizada en wordpress.wordpress form action submit

action=<?php bloginfo('template_url'); ?>/send_form.php" 

en enviar, va siempre a send_form.php pero esto es php para el envío de la información - y no puedo estilo con el tema ....

hay una manera de permanecer en la página actual mientras envía la información e imprime y envía un mensaje indicando que el formulario ha sido enviado con éxito ???

alguien tiene alguna sugerencia para mí?

Respuesta

9

La respuesta a esto es un poco complicado y hacerlo bien se necesita un poco de cuidado, pero aquí están los puntos esenciales de un enfoque:

  1. La acción debe ajustarse a cargar la página actual y se puede hacer esto al cambiar el atributo action en la etiqueta <form> a: action=""
  2. En el archivo de plantilla para esta página, detectar cuando la página se carga después de un envío de formulario. Puede hacer esto al verificar el estado de $_POST variable.
  3. Si hay variables de publicación en, procese el envío del formulario en el archivo de plantilla. Debe ver lo que sucede en "send_form.php" para descubrir qué hacer. Tenga cuidado de no introducir problemas de seguridad (por ejemplo, asegúrese de utilizar el NONCE).
  4. Redirige a la misma página para eliminar las variables de publicación. Si no lo hace, la gente recibirá los mensajes de advertencia "¿Desea volver a enviar el formulario?". Consulte el PHP header() function para hacer el redireccionamiento y tenga en cuenta que esto debe suceder antes de que se envíe cualquier salida a la página.
  5. Utilice server sessions para mostrar un "Envío de formulario exitoso". Establezca una variable de sesión para su mensaje antes de la redirección, luego detecte cuando la página se carga, muéstrela y elimínela para que el mensaje no se muestre la próxima vez que se cargue la página.

Eso debería darle un punto de partida.

Si alguien más tiene una solución más simple, me encantaría escucharla también.

+0

gracias por la ayuda! Descubrí que ajax era una solución para esto. Así que vamos a probar ajax en este caso. – Cam

+2

Eso es cierto y debería haberlo mencionado. Una cosa a considerar es que los navegadores sin Javascript habilitado no admitirán el enfoque AJAX, por lo que debe pensar en la experiencia alternativa cuando eso suceda. Este es un pequeño% de usuarios y cada vez más pequeño, por lo que dependiendo de su tráfico, esto puede no ser un problema. – Greg

+1

sí, eso es cierto. el% es realmente pequeño, ya que el 90% + de los sitios web actuales usa jquery/scriptacluous, etc. así que no pienses que afectará tanto – Cam

Cuestiones relacionadas