¡Atención!

Este artículo contiene código PHP y JavaScript y está destinado a desarrolladores. Ofrecemos este código como cortesía, pero no proporcionamos soporte para personalizaciones de código o desarrollo de terceros.

Para obtener ayuda adicional, consulta el tutorial de WPBeginner sobre cómo añadir código personalizado.

Descartar

Cómo añadir una animación de nieve cayendo a tu mensaje de confirmación

Introducción

¿Te gustaría añadir una animación de nieve cayendo a tu mensaje de confirmación? Puedes añadir fácilmente una animación al mensaje de confirmación que tendría un efecto más interactivo usando PHP y JavaScript. En este tutorial, desglosaremos cada paso sobre cómo lograr esto.

Creación de su formulario

Primero, necesitarás crear tu formulario. Para el propósito de este tutorial, hemos creado un formulario de pedido. Una vez que el pedido esté completo, se mostrará un mensaje de confirmación en el que aparecerá nuestra animación de nieve cayendo.

Si necesitas ayuda para crear tu formulario, por favor visita esta documentación.

Una vez que hayas añadido tus campos, haz clic en la pestaña Configuración y luego en Confirmaciones. Dentro de la ventana Mensaje de confirmación, vamos a añadir un elemento de lienzo HTML con un ID de canvas para poder apuntar exactamente a dónde caerá el confeti.

Una vez dentro de la pestaña Confirmaciones, recuerda hacer clic en la pestaña Texto en el cuadro de mensaje. Necesitarás hacer esto para poder añadir HTML puro en esta área de mensaje.

Para añadir el confeti a la confirmación, debes añadir un elemento de lienzo HTML al cuadro de mensaje de confirmación en la pestaña de Texto.

Simplemente añade <canvas id="canvas" />

Añadir este elemento de lienzo e ID significa que podemos controlar dónde aparecerá esta nieve. Solo queremos que se muestre en el mensaje de confirmación, por lo que estamos añadiendo un elemento al que podemos apuntar específicamente en nuestro fragmento de código.

Este fragmento solo se ejecuta en formularios no AJAX. Necesitarías desactivar tu configuración AJAX dentro del constructor de formularios. Para desactivar esta configuración, ve a la pestaña Configuración dentro del constructor de formularios y, en la configuración Avanzada, desactiva la configuración Habilitar envío de formularios AJAX.

recuerda desactivar AJAX antes de guardar el formulario

Añadir el CSS para el contenedor del lienzo

También necesitamos añadir algo de CSS personalizado para el contenedor de <canvas id="canvas" />. Si necesitas ayuda sobre cómo y dónde añadir CSS personalizado, por favor consulta este tutorial. Simplemente copia y pega este CSS en tu sitio.

canvas#canvas {
    position: absolute;
    top: 0;
    left: 0;
}

Añadir el fragmento de código para crear la nieve

Ahora es el momento de añadir el fragmento de código que hará que la magia suceda. Para cualquier ayuda al añadir un fragmento a tu sitio, por favor consulta este tutorial.

/**
 * Add falling snow to the canvas element on the confirmation message
 *
 * @link  https://wpforms.com/developers/how-to-add-falling-snow-animation-to-your-confirmation-message/
 */
 
function wpf_dev_winter_scene_animation() {
?>

<script type="text/javascript">
    //If the canvas ID does not exist on the page, this script will not run

    if (document.querySelector( '#canvas' ) !== null) {
//canvas init
	var canvas = document.getElementById( "canvas" );
	var ctx = canvas.getContext( "2d" );
	
	//canvas dimensions
	var W = window.innerWidth;
	var H = window.innerHeight;
	canvas.width = W;
	canvas.height = H;
	
	//snowflake particles
	var mp = 50; //max particles
	var particles = [];
	for(var i = 0; i < mp; i++)
	{
		particles.push({
			x: Math.random()*W, //x-coordinate
			y: Math.random()*H, //y-coordinate
			r: Math.random()*4+1, //radius
			d: Math.random()*mp //density
		})
	}
	
	//Lets draw the flakes
	function draw()
	{
		ctx.clearRect(0, 0, W, H);
		
		ctx.fillStyle = "white";
		ctx.beginPath();
		for(var i = 0; i < mp; i++)
		{
			var p = particles[i];
			ctx.moveTo(p.x, p.y);
			ctx.arc(p.x, p.y, p.r, 0, Math.PI*2, true);
		}
		ctx.fill();
		update();
	}
	
	//Function to move the snowflakes
	//angle will be an ongoing incremental flag. Sin and Cos functions will be applied to it to create vertical and horizontal movements of the flakes
	var angle = 0;
	function update()
	{
		angle += 0.01;
		for(var i = 0; i < mp; i++)
		{
			var p = particles[i];
			//Updating X and Y coordinates
			//We will add 1 to the cos function to prevent negative values which will lead flakes to move upwards
			//Every particle has its own density which can be used to make the downward movement different for each flake
			//Lets make it more random by adding in the radius
			p.y += Math.cos(angle+p.d) + 1 + p.r/2;
			p.x += Math.sin(angle) * 2;
			
			//Sending flakes back from the top when it exits
			//Lets make it a bit more organic and let flakes enter from the left and right also.
			if(p.x > W+5 || p.x < -5 || p.y > H)
			{
				if(i%3 > 0) //66.67% of the flakes
				{
					particles[i] = {x: Math.random()*W, y: -10, r: p.r, d: p.d};
				}
				else
				{
					//If the flake is exitting from the right
					if(Math.sin(angle) > 0)
					{
						//Enter from the left
						particles[i] = {x: -5, y: Math.random()*H, r: p.r, d: p.d};
					}
					else
					{
						//Enter from the right
						particles[i] = {x: W+5, y: Math.random()*H, r: p.r, d: p.d};
					}
				}
			}
		}
	}
	
	//animation loop
	setInterval(draw, 25);

    }
</script>

<?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_winter_scene_animation', 1);

Ahora verás la animación de confeti cuando se muestre el mensaje de confirmación.

¡Y eso es todo lo que necesitas! Ahora has añadido con éxito una animación de nieve cayendo a tu mensaje de confirmación. ¿Te gustaría añadir confeti en su lugar? Consulta nuestro tutorial sobre Cómo añadir una animación de confeti a un mensaje de confirmación.

Referencia de acción: wpforms_wp_footer_end