Todo lo relacionado a Internet, Programación 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 que molestarse en describirlas, el código habla por si solo.

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

# Si la opcion es 0 o no tiene numero, 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 numero. Se puede ajustar, y siempre debe ser un numero 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 numero 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 numero 0.
  2. El Loop se limita a 1 entrada.
  3. Se muestran entradas ordenando por ID de entrada y titulo.
  4. Cada que se muestra una entrada, se aumenta el numero 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.

Escrito por Alan en 2018-02-11 00:59:53 UTC

Enlace permanente - categorías: Herramientas para webmasters, Internet, WordPress - etiqueta: php

« Detectar User-Agent del navegador web del visitante con PHP - Tipos de comentarios que podemos usar en PHP »