Enlever l'article affiché du listing avec get_posts

Aux 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; ?>


Le SNEP diffuse son rapport 2012 : 5% de perte du marché de la musique

Si le marché du numérique des ventes de musiques est en progression selon la conférence de presse du SNEP du premier trimestre 2012, enregistrant 32,6 millions d'euros (+24%), celui-ci ne l'aide pas à compenser pour [...]

La nouvelle adresse de The Pirate Bay ? 194.71.107.80

Alors que le site fait l'objet de nombreuses censures et de filtrages dans beaucoup de pays, beaucoup d'Internautes, pour y échapper et les contourner utilisent des proxys, comme ceux référencés sur PirateReverse. [...]

Yahoo Axis : un navigateur et des extensions pour les autres

Difficile d'y croire, et pourtant, c'est aussi vrai que surprenant : Yahoo lance Axis, son navigateur désaxé sous forme d'applications pour iPhone, iPad, avec une version pour Android en cours de développement, [...]

Ajouter les icônes redémarrer, mettre en veille, éteindre dans le dock Unity

Aucun système d'exploitation n'est parfait, et même si de nombreux efforts ont été apportés à l'environnement Unity d'Ubuntu, on peut lui reprocher par exemple de ne pas mettre à disposition un système rapide de [...]

Restaurer les URL normales des liens de recherches dans Google

Si vous faites des recherches sur Google, vous avez très certainement fait cette expérience malsaine de faire un clic droit pour essayer de copier l'adresse officielle du lien que vous voulez partager ou ouvrir, et [...]