En el blog de Ma.tt explican cómo implementar imágenes aleatorias en cualquier parte de tu tema de WordPress.
Por ejemplo, si añadiésemos un bloque de imágenes aleatorias para nuestra cabecera, cada vez que entrásemos en nuestra web veríamos una imagen diferente.

Cómo usar

Para la instalación más simple posible, simplemente introduce este código en un directorio con las imágenes que desea girar, y lo llaman como si fuera una imagen normal, por ejemplo:

<img src="/dropbox/2003/rotate/rotate.php" alt="A Random Image" />

El código que se debe modificar es el de aquí abajo, corresponde a un fichero php que deberá ser subido a la misma carpeta en la que tengáis las imágenes que queréis utilizar. Si las imágenes están en el mismo directorio la variable $folder deberá quedar vacía (como en el ejemplo), si estuviera en otro (por ejemplo dentro de la carpeta en la que hemos subido el fichero php creamos otra carpeta llamada «seccion») deberíamos indicar: $folder=’seccion’

El código

<?php
/*
By Matt Mullenweg > http://photomatt.net
Inspired by Dan Benjamin > http://hiveware.com/imagerotator.php
Latest version always at:

http://photomatt.net/scripts/randomimage

*/// Make this the relative path to the images, like "../img" or "random/images/".
// If the images are in the same directory, leave it blank.
$folder = '';

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif';

$files = array(); $i = -1; // Initialize some variables
if ('' == $folder) $folder = './';

$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) { // for each extension check the extension
if (preg_match('/\.'.$ext.'$/i', $file, $test)) { // faster than ereg, case insensitive
$files[] = $file; // it's good
++$i;
}
}
}
closedir($handle); // We're not using it anymore
mt_srand((double)microtime()*1000000); // seed for PHP < 4.2
$rand = mt_rand(0, $i); // $i was incremented as we went along

header('Location: '.$folder.$files[$rand]); // Voila!
?>

Crear otro bloque más de imágenes aleatorias

Imaginemos que con el ejemplo anterior hayamos creado un bloque de imágenes aleatorias para nuestro index.php o home.php, la página que primero se carga de nuestra web. Si quisiéramos tener otro bloque diferente en una de las secciones de nuestra web, deberíamos duplicar el fichero php, llamarle de otro modo y modificar $folder si nos hiciera falta.

<img src="/dropbox/2003/rotate/rotate-seccion.php" alt="A Random Image" />

Existen plugins de wordpress para añadir imágenes aleatorias a nuestra cabecera, pero al menos yo no vi ninguno que dejara crearlas para cualquier sección de nuestra web, por eso me ha gustado mucho este código que nos da bastante libertad.

FUENTES

Ma.tt

Deprecated: WP_Query ha sido llamado con un argumento que está obsoleto desde la versión 3.1.0. caller_get_posts está obsoleto. Utiliza ignore_sticky_posts en su lugar. in /hosting/www/ddsign.es/public/wp-includes/functions.php on line 5495

4

  • Hola! Ante todo Feliz año y felicidades por el blog!
    No comprendo… (es que soy torpón)
    Bueno si comprendo pero no soy capaz de echarlo a andar…
    Si tengo todas las imagenes en la misma carpeta que el archivo php el campo $folder debe quedar vacio. Pero en que campo le indico cual es el nombre de las imagenes que quiero que cargue?

    • Hola, feliz año también!
      Las imágenes que te va a cargar son las que estén en la carpeta.No te hace falta indicarle los nombres.

      • Hola de nuevo, María.
        Muchas gracias por responder… ya me funcionó!
        Tuve que copiar el código del blog de Ma.tt.
        No entiendo de php no comprendo porqué con el tuyo no era capaz de que funcionase.
        Muchas gracias de nuevo :-)
        Muy bueno tu blog, me gusta.

        • Hola Merkader,
          Me alegra que hayas solucionado y gracias por el comentario. Mi código no funcionaba porque el formateo para código fuente me había jugado una mala pasada transformándome un corchete por otro carácter… por eso no funcionaba. Ya lo he corregido. Gracias!

volver arriba ↑