Partager...
TweetAux heureux détenteurs dun moteur de blog made by WordPress, je vous avais expliqué la dernière fois comme utiliser pour votre thème la fonction get_posts() dans ce tutoriel. Créer un listing des derniers articles de votre blog, c'est désormais facile, et ce même sans dupliquer les derniers titres déjà présents sur la home.
Aujourd'hui, j'ai envie de pousser juste un peu plus loin. Je viens vous montrer comment faire pour obtenir un listing différent suivant que vos visiteurs atterrissent sur votre page d'accueil ou votre page de contenu, tout en interdisant la duplication de l'article affiché sur cette dernière. Pour la page home, vous connaissez, mais pour interdire l'affichage de l'article courant, c'est une astuce que l'on ne trouve pas beaucoup sur la toile.
Le but est d'identifier en premier lieu l'identité de l'article affiché pour pouvoir le retirer. Comme votre listing a de forte chance d'être en dehors de la fameuse boucle, il va falloir interroger la base de donnée, et en profiter pour mettre l'ID de l'article dans une variable, ici $thispost.
<?php global $wp_query; $thispost = $wp_query->post->ID; ?>
Voilà une bonne chose de faite. Il nous reste plus qu'à profiter des tags conditionnels de wordpress pour définir nos deux comportements. On part ici du principe que l'on a besoin d'un comportement spécifique pour la page d'accueil afin de retirer de la liste les 3 derniers articles, et que les autres pages suivront le second comportement qui enlèvera de la liste l'article affiché, si toutefois il devait être présent, grâce à notre identification précédente.
if (is_home()) { $myposts = get_posts('numberposts=10&offset=3'); } else { $myposts = get_posts('numberposts=10&exclude=' . $thispost); }
Voilà, il ne reste plus qu'à mettre tout ça pour former notre listing dans une boucle traditionnelle.
<?php global $post; if (is_home()) {$myposts = get_posts('numberposts=10&offset=3'); } else {$myposts = get_posts('numberposts=10&exclude=' . $thispost);} foreach($myposts as $post) : setup_postdata($post); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?>
Pourquoi les commentaires sont fermés ?