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

Contenido relacionado