Una de las características nuevas que agregamos en nuestro nuevo diseño es esta característica llamada «Explorar» que se ve prominente en toda nuestra red. Cuando un usuario hace clic en este botón, se lo lleva a una publicación aleatoria en un sitio. Anteriormente, lo hacíamos para que los usuarios fueran llevados a una página que mostraría una publicación aleatoria. Hubo algunos problemas con eso. El principal es que el usuario nunca supo la URL real de la página. Al lanzar nuestro sitio más nuevo, List25, pensamos que sería genial agregar un botón llamado «Tengo curiosidad y permitir que los usuarios naveguen de esa manera». En este momento, estaba hablando en WordCamp Louisville. Un amigo nuestro al que admiro por muchas cosas (@ Otto42) asistió. Durante mi sesión, Otto escribió este fragmento en lugar de escuchar mi charla (como si realmente necesitara aprenderla). En resumen, en este artículo, le mostraremos cómo redirigir a los usuarios a una publicación aleatoria en WordPress.

Abra el archivo functions.php de su tema o cree un archivo de complemento en blanco y pegue el siguiente código:

add_action ('init', 'random_add_rewrite');
 función 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');
 función random_template () {
        if (get_query_var ('random') == 1) {
                $ posts = get_posts ('post_type = post & orderby = rand & numberposts = 1');
                foreach ($ publicaciones como $ publicación) {
                        $ link = get_permalink ($ post);
                }
                wp_redirect ($ link, 307);
                salida;
        }
 } 

Eso es todo y listo. Ahora crea un botón que enlace a yourdomain.com/random/ y el fragmento de arriba se encargará del resto.

Explicación del fragmento:

Este fragmento primero agrega una variable de consulta Aleatoria. Luego usa template_redirect enganchar en WordPress y decir si la variable aleatoria está allí, luego obtener una publicación del tipo de publicación «Publicar» aleatoriamente. Luego hace un simple redireccionamiento 307.

La razón por la cual el fragmento de código usa la redirección 307 es porque es una redirección temporal. Los navegadores a menudo almacenan en caché 302 redirigir, que es famoso por redireccionamientos temporales.

Pocos errores con los que nos encontramos:

Si está utilizando W3 Total Cache y tiene caché en la base de datos, entonces necesita agregar las siguientes reglas en la lista de exclusión.

/aleatorio/
/index.php?random=1

Si usa el plugin SEO de WordPress de Yoast, no use la casilla Redirect Ugly URLs en el área de enlaces permanentes, de lo contrario, este código no funcionará.

Ahora puede crear un pequeño botón Explorar como el que tenemos en nuestro sitio.