Aujourd’hui, je vous propose une solution originale pour permettre à vos visiteurs d’explorer votre site, et d’augmenter leur durée de visite. C’est également un bon moyen de redonner de la visibilité à d’anciens articles, notamment si vous en avez rédigé beaucoup. Tout cela grâce à un petit bout de code et à un lien à ajouter où vous le souhaitez !
Pour commencer, ouvrez le fichier functions.php de votre thème (ou créez le s’il n’existe pas encore), pour y ajouter le code suivant :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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; } } |
Explications à propos du code :
La première fonction ajoute une variable de requête nommée random, ainsi qu’une règle de réécriture pour pouvoir utiliser une url du type /random/, en utilisant le hook init. La seconde fonction vérifie si la variable random est à 1, puis récupère un article au hasard, pour rediriger vers celui-ci grâce à wp_redirect. Celle-ci est appliquée au hook template_redirect, qui se lance avant la détermination du fichier template à utiliser pour afficher la page.
Deux petits points à noter :
- Il est possible de déterminer n’importer quel type de post à choisir au hasard en changeant la valeur “post” de “post_type” (remplacer post par page, ou l’identifiant de votre custom post type).
- La redirection est en 307, qui est une redirection temporaire, pour empêcher les navigateurs de mettre en cache le résultat.
Une fois le changement sauvegardé, vous pouvez ajouter un lien intitulé “explorer” par exemple avec comme url http://votresite.fr/random/, où vous le souhaitez. Une solution simple est de l’ajouter dans votre menu personnalisé depuis l’interface d’administration de WordPress.

Quid des extensions me direz-vous, pour les allergiques du code ? Il en existe, mais elles n’ont pas été mises à jour depuis un bon moment, elles sont donc à tester par vos soins : Random Redirect et Random Redirect 2. Mais vu le peu de code nécessaire pour faire cela sans extension, est-ce vraiment nécessaire ?
Source du code : Random Post Snippet par Otto
6 Responses to “Créez un lien vers un article au hasard dans WordPress”

Je m’étais toujours posé la question de comment ajouter un nouvelle forme de réécriture d’URL, et ton hack tombe à pic pour comprendre cela.
Bravo pour l’astuce. C’est simple et efficace.
J’avais fait ça une fois
http://www.geekeries.fr/snippet/creer-variable-recuperation-articles-aleatoires/
Au cas ou, mais ton hack semble plus puissant ! Merci
Bonjour, et merci de cette excellente astuce!
Je ne n’y connais pas grand chose en technique. Est-il possible d’utiliser cette fonction pour n’afficher non pas 1 mais 5 articles par exemple ?
En fait cette astuce redirige automatiquement vers un article au hasard lorsque l’on clique sur le lien. Mais le get_posts qui récupère l’article peut être repris pour afficher 5 articles au hasard dans une sidebar par exemple, en faisant une boucle comme on le ferait normalement.
Merci beaucoup de cette réponse rapide !
Merci pour l’astuce. l’utilisateur peut découvrir plus facilement le blog de cette facon.