Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Cómo redirigir o redireccionar a una publicación aleatoria en WordPress

28 octubre, 2019

Comparto este sencillo código que nos vale para poder redirigir o redireccionar a una url random de tu WordPress, después puedes incluirlo como un botón que lance automáticamente una url random o cualquier otra utilidad rara que conozcas.

El código sería así:

El código para devolver una url random

add_action('init','random_add_rewrite');
 
function random_add_rewrite() {
       global $wp;
       $wp->add_query_var('random');
       add_rewrite_rule('random/?$', 'index.php?random=1', 'top');
}
 
add_action('template_redirect','random_template');
 
function random_template() {
       if (get_query_var('random') == 1) {
               $posts = get_posts('post_type=post&orderby=rand&numberposts=1');
               foreach($posts as $post) {
                       $link = get_permalink($post);
               }
               wp_redirect($link,307);
               exit;
       }
}

Cómo lo añado a mi WordPress

Los pasos que tienes que dar son sencillos, copias el código dentro del fichero functions.php de tu theme, o si lo prefieres creas un plugin que llame a estas funciones.

Cómo funciona

Utiliza la url /index.php?random=1 para hacer que se ejecute el código y te devuelva la url random que necesitas.

Solo tienes que enlazar o bien visitar tu url, y la función que acabas de añadir hará el resto.

tu-dominio.com/index.php?random=1

Problemas de cache

En el caso de que utilices plugins de caché entonces es posible que almacene la devolución de la url y siempre te envíe a la misma url hasta que se vuelva a borrar la caché.

Para que no tengas este problema con tu plugin de caché añade las urls en tu plugin a las urls que NO tienes que almacenar en la caché.


/index.php?random=1
/random/

Y listo, con esto tendrías tu flamante redireccionador de urls.