Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

201
Vistas
Cómo aleatorizar imágenes en WordPress con Javascript (Campos personalizados avanzados)

Estoy usando campos personalizados avanzados para crear un sitio de WordPress. Una de las páginas debe tener una imagen de encabezado que cambie aleatoriamente después de un par de segundos. Estoy tratando de hacer posible elegir qué imágenes se mostrarán aleatoriamente con ACF.

Con ACF he creado un campo personalizado llamado Imágenes aleatorias. FCA

En el siguiente paso, la plantilla PHP cargará las imágenes. Luego, las imágenes deben aleatorizarse con Javascript y mostrarse en la página donde uso el campo personalizado. ¿Cómo hago para que esto funcione?

PHP y JavaScript

 <?php if (get_row_layout() == 'random_images') { ?> <section id="gallery"> <img src="' <?php get_sub_field('ra_photo_one'); ?> <img src="' <?php get_sub_field('ra_photo_two'); ?> <img src="' <?php get_sub_field('ra_photo_three'); ?> <img src="' <?php get_sub_field('ra_photo_four'); ?> <img src="' <?php get_sub_field('ra_photo_five'); ?> </section> <?php } ?> <script> const getRandomNumber = (function() { var nums = [1,2,3,4,5,6]; var current = []; function rand(n) { return (Math.random() * n)|0; } return function() { if (!current.length) current = nums.slice(); return current.splice(rand(current.length), 1); } }()); const images = document.querySelectorAll('#gallery img'); getRandomImages = () => { const imagesNums = []; for (let i = 1; i < 7; i++) { imagesNums.push(getRandomNumber()); } images.forEach((img, index) => { img.src = `./images/${imagesNums[index]}.jpg` }) } setInterval(() => { getRandomImages() }, 500); </script
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Primero, tienes que crear 1 sección vacía.

 <section id="gallery"></section>

Ahora agregue todas las imágenes a la matriz de JavaScript.

 <script> var images = [ '<?php get_sub_field('ra_photo_one'); ?>', '<?php get_sub_field('ra_photo_two'); ?>', '<?php get_sub_field('ra_photo_three'); ?>', '<?php get_sub_field('ra_photo_four'); ?>', '<?php get_sub_field('ra_photo_five'); ?>' ]; </script>

Ahora agregue la lógica de imagen aleatoria.

 setInterval(function(){ $('#gallery').html('<img class="fade-in" src="' + images[Math.floor(Math.random() * images.length)] + '">'); }, 3000);

y algo de CSS para suavizar la transición.

 .fade-in{ -webkit-animation: fade-in 2s ease; -moz-animation: fade-in ease-in-out 2s both; -ms-animation: fade-in ease-in-out 2s both; -o-animation: fade-in ease-in-out 2s both; animation: fade-in 2s ease; visibility: visible; -webkit-backface-visibility: hidden; } @-webkit-keyframes fade-in{0%{opacity:0;} 100%{opacity:1;}} @-moz-keyframes fade-in{0%{opacity:0} 100%{opacity:1}} @-o-keyframes fade-in{0%{opacity:0} 100%{opacity:1}} @keyframes fade-in{0%{opacity:0} 100%{opacity:1}}

Verifique el fragmento de trabajo a continuación.

ACTUALIZAR (según la solicitud de OP ahora la imagen cambiará automáticamente)

 var images = [ 'https://via.placeholder.com/150?text=123', 'https://via.placeholder.com/150?text=456', 'https://via.placeholder.com/150?text=789', 'https://via.placeholder.com/150?text=ABC', 'https://via.placeholder.com/150?text=PQR', ]; $('#gallery').html('<img class="fade-in" src="' + images[Math.floor(Math.random() * images.length)] + '">'); setInterval(function(){ $('#gallery').html('<img class="fade-in" src="' + images[Math.floor(Math.random() * images.length)] + '">'); }, 3000);
 .fade-in{ -webkit-animation: fade-in 2s ease; -moz-animation: fade-in ease-in-out 2s both; -ms-animation: fade-in ease-in-out 2s both; -o-animation: fade-in ease-in-out 2s both; animation: fade-in 2s ease; visibility: visible; -webkit-backface-visibility: hidden; } @-webkit-keyframes fade-in{0%{opacity:0;} 100%{opacity:1;}} @-moz-keyframes fade-in{0%{opacity:0} 100%{opacity:1}} @-o-keyframes fade-in{0%{opacity:0} 100%{opacity:1}} @keyframes fade-in{0%{opacity:0} 100%{opacity:1}}
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <section id="gallery"></section>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Según su aclaración de que desea mostrar una imagen a la vez, podría hacer la aleatorización en PHP, creo que será más fácil:

 <?php if (get_row_layout() == 'random_images') { $field_names = ['one', 'two', 'three', 'four', 'five']; shuffle($field_names); // this randomizes that array $name = $field_names[0]; ?> <section id="gallery"> <img src="' <?php get_sub_field('ra_photo_' . $name); ?>" /> </section> <?php } ?>

Eso elegirá una imagen aleatoria en el momento de la carga y la mostrará.

Por cierto, su código de fragmento olvidó incluir la parte de cierre " /> de cada elemento img , así que lo agregué aquí.

Todavía no estaba claro para mí si querías recorrer las imágenes con javascript al azar, así que si quieres eso, puedes hacer esto:

 <?php if (get_row_layout() == 'random_images') { $field_names = ['one', 'two', 'three', 'four', 'five']; shuffle($field_names); // this randomizes that array ?> <section id="gallery"> <?php foreach ($field_names as $field) { ?> <img style="display: none;" src="' <?php get_sub_field('ra_photo_' . $field); ?>" /> <?php } ?> </section> <?php } ?>

Luego, podría continuar con un temporizador en javascript que muestra una imagen a la vez. Necesitará las funciones adecuadas de CSS y Javascript para hacerlo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda