Si organizas sorteos con mi código en tu tienda WooCommerce, seguramente ya tienes un sistema bien montado: venta de números, bloqueo de los ya comprados, descarga de boletos, lista de participantes, página de gestión de sorteos, envío de emails… Todo funciona bien, pero hasta ahora, la elección del ganador dependía de algo externo como los últimos 4 números del sorteo de la ONCE y que tú mismo revisaras el resultado y lo anunciaras manualmente.
Un suscriptor me propuso un reto interesante: automatizar la elección del ganador. Es decir, que el sistema seleccione aleatoriamente un número de los vendidos y lo muestre directamente en la página del producto.
Eso es exactamente lo que vamos a implementar.
Recordarte que estos códigos nuevos son independientes al codigo principal, es decir, no tienes que modificar el código original, ni siquiera tienen que estar en el mismo Snippet de Código. Estos códigos son funcionalidades extra que tú decides si implementar o no.
¿Cómo funciona este sistema?
La lógica es simple:
- Un cliente compra su número en la tienda, y el sistema lo guarda.
- Cuando finaliza la venta, puedes pulsar un botón que elige al azar uno de los números comprados.
- El ganador se muestra automáticamente en la página del producto.
- Para evitar errores o trampas, una vez elegido el número, no se puede volver a seleccionar otro, a menos que marques una casilla especial para reiniciar el sorteo.

Paso 1: Agregar un botón para elegir al ganador
Cuando editas el producto en WooCommerce, verás dos elementos nuevos en la configuración:
- Una casilla llamada «Permitir nueva selección de ganador».
- Un botón llamado «Elegir Ganador».
Si la casilla no está marcada, una vez que el sistema elige un ganador, no se podrá cambiar, sin importar cuántas veces presiones el botón. Esto evita que alguien intente modificar el resultado después de ver que su número no salió.
Si en algún momento necesitas reiniciar el sorteo (por error o porque el ganador no reclama su premio), puedes marcar la casilla, guardar los cambios y volver a seleccionar un nuevo número.

Paso 2: Elección automática del número ganador
Cuando presionas el botón «Elegir Ganador», el sistema hace lo siguiente:
- Busca la lista de números comprados en ese sorteo.
- Selecciona uno al azar.
- Guarda ese número como el ganador oficial.
- Si ya hay un ganador y no activaste la opción para reiniciar, el sistema muestra un aviso indicando que no puedes volver a elegir.
Esto garantiza que siempre haya un ganador y que el proceso sea completamente aleatorio.
Paso 3: Mostrar el número ganador en la página del producto
Después de que se elige un ganador, la página del producto muestra un mensaje visible para todos los visitantes:
«Tenemos un ganador. El número ganador es: [número seleccionado]»
El mensaje se muestra con un diseño llamativo para que no pase desapercibido.

Seguridad y transparencia en el sorteo
Este sistema está diseñado para evitar manipulaciones:
- No se puede elegir un número manualmente, solo el sistema lo hace de forma aleatoria.
- Una vez seleccionado el ganador, no se puede cambiar a menos que se active la opción de reinicio y se guarden los cambios.
- Si intentas seleccionar un número sin haber activado la opción de reinicio, el sistema lo impedirá y mostrará una advertencia.
Así se evita cualquier forma accidental de alterar el resultado final a menos que lo hagas a consciencia.
Lógica de Selección de Ganador
La elección del número ganador sigue una lógica clara basada en la función array_rand(), que es la clave del proceso. Vamos a explicarlo paso a paso.
1. Selección de la Lista de Posibles Ganadores
El sistema parte de un conjunto de números que han sido comprados, almacenados en _numeros_comprados. Esta lista contiene solo los números que realmente fueron adquiridos, evitando cualquier selección de números no vendidos.
Ejemplo:
Supongamos que en un sorteo de 100 números, solo se han vendido los siguientes:[3, 15, 22, 37, 45, 50]
El sistema trabaja únicamente con esta lista, ignorando cualquier número que no haya sido comprado.
2. Uso de array_rand() para Selección Aleatoria
La función array_rand($array) toma un array como entrada y devuelve un índice aleatorio dentro de esa lista.
Ejemplo práctico con los números vendidos [3, 15, 22, 37, 45, 50]:
array_rand()devuelve un índice aleatorio entre0y5(porque hay 6 números en la lista).- Si el índice seleccionado es
2, el número ganador será22, porque es el que ocupa la posición2en la lista.
Cada vez que se ejecuta array_rand(), el índice seleccionado es diferente, lo que hace que la elección sea completamente aleatoria.
3. Garantía de que Siempre Haya un Ganador
Dado que solo se elige entre los números comprados, siempre habrá un número ganador. No se permite que el sorteo quede sin resultado.
Si intentáramos elegir un ganador en un sorteo donde nadie ha comprado números, el sistema lo detecta y muestra un mensaje de error, evitando una selección vacía.
Este sistema aporta más transparencia y automatización a los sorteos en WooCommerce. Ya no tendrás que revisar listas de participantes ni anunciar manualmente el ganador. Ahora el propio sistema se encarga de elegir el número de forma justa y mostrarlo automáticamente en la página del producto.
El siguiente código tienes que agregarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS. También puedes crear tu propio plugin con unos simples pasos.
🔐 Este contenido es solo para suscriptores premium.
Estos códigos de la zona premium se mantienen regularmente. Si usas un código y no te funciona correctamente, puedes abrir un ticket de soporte explicando los detalles y lo vemos.




¿Qué te parece este sistema?