Inicio
Internet, Informática y Tecnología

Entrada aleatoria que no se repita en WordPress

Si alguna vez necesitamos mostrar alguna entrada aleatoria en WordPress, y de alguna forma buscamos que esta no se repita (Esto ya no es aleatorio). Hay varias formas de lograrlo, pero para qué molestarse en describirlas, el código habla por sí solo.

# Se establece la opción que llevará un número, para ir recorriendo el Loop.
$opcion_slug = 'entrada-aleatoria-offset';

# Si la opción es 0 o no tiene número, se establece en 0.
if ( get_option( $opcion_slug ) < 1 ) {
    update_option( $opcion_slug, 0 );
    $offset = 0;
    # Si la opción es 999 o mayor, se reinicia el número. Se puede ajustar, y siempre debe ser un número mayor al de las entradas publicadas en WordPress.
} elseif ( get_option( $opcion_slug ) >= 999 ) {
    update_option( $opcion_slug, 1 );
    $offset = 1;
    # Si la opción es mayor o igual a 1, se establece correctamente el $offset para ser usado en el Query de WordPress.
} elseif ( get_option( $opcion_slug ) >= 1 ) {
    $offset = get_option( $opcion_slug );
}

$posts = query_posts($query_string .
"&orderby=title ID&
order=asc&
posts_per_page=1&
offset=$offset");

if (have_posts()):
    while (have_posts()): the_post();
        # Se incrementa el número de offset cada que se muestra una entrada.
        $numero = get_option( $opcion_slug );
        $numero++;
        update_option( $opcion_slug, $numero );
    endwhile;
else:
    echo 'No hay entradas.';
endif;

El código trabaja de la siguiente forma:

  1. Se crea una opción en la base de datos, en donde se guarda el número 0.
  2. El Loop se limita a 1 entrada.
  3. Se muestran entradas ordenando por ID de entrada y título.
  4. Cada que se muestra una entrada, se aumenta el número de offset.
  5. El offset es un valor numérico que recorre de posición el cursor, de esta forma se busca lograr un efecto aleatorio.
Categorías
Etiquetas
Alan D.
Fundador, Administrador y Editor.

Soy el fundador, administrador y editor de este pequeño sitio. Entusiasta por las tecnologías de la información e Internet.

Tengo conocimientos básicos en electrónica, inglés, algunos lenguajes de programación, bases de datos, servicios en la nube, Windows, Linux, finanzas personales y contaduría. Por esta razón el contenido de este sitio es un poco variado. Tengo este sitio web desde el 2009.

Contenido relacionado