Créez un lien vers un article au hasard dans WordPress

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 :

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.