iDorian
WordPress : maîtriser le query_post

WordPress : maîtriser le query_post

Lors de mon surf quotidien sur la blogosphère, je constate souvent que vous êtes nombreux à utiliser nombre de plugins pour afficher des informations relatives à vos articles, comme par exemples « les articles les plus commentés« , ou encore les « articles à la une », sans oublier les « derniers ajouts ». Cependant, et ce n’est pas une surprise, […]

J'aime le PHP !Lors de mon surf quotidien sur la blogosphère, je constate souvent que vous êtes nombreux à utiliser nombre de plugins pour afficher des informations relatives à vos articles, comme par exemples « les articles les plus commentés« , ou encore les « articles à la une », sans oublier les « derniers ajouts ».

Cependant, et ce n’est pas une surprise, les plugins ont un peu trop tendance à démultiplier le chargement de requêtes MySQL, ce qui ralentit peu à peu le chargement de vos pages WordPress (ainsi que l’usage de la mémoire).

Nous allons donc utiliser directement du PHP, ainsi qu’une syntaxe native à WordPress depuis la version 2.0. Il ne s’agit ni plus ni moins que de la fonction « query_post« , qui permet d’appeler à peu près n’importe quelles informations relatives à vos articles.

  • afficher les derniers articles les plus commentés :

De manière brute, il suffit d’appeler la fonction « query_post« , et d’affecter un ordre de tri pour les articles (ici « comment_count« , pour le nombre de commentaires). Vous pouvez limiter le nombre d’articles affichés (« posts_per_page ») sans oublier de toujours respecter la syntaxe propre à WordPress (et PHP, naturellement) :

<ul>
	<?php query_posts('orderby=comment_count&posts_per_page=>5');
	if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
		<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?> (<?php comments_number('0','1','%'); ?>)</a></li>
		<?php endwhile; ?>
		<?php else : ?>
		<li>Aucun résultat.</li>
	<?php endif; ?>
</ul>
  • afficher les derniers articles les plus commentés (deuxième méthode) :

Afin de ne pas empiéter sur des processus « query_post » qui pourraient être lancé avant dans la page, nous allons utiliser « wp_query« , dans le seul but d’optimiser le chargement de la page. Le résultat reste le même :

<ul>
<?php $popular = new WP_Query('orderby=comment_count&posts_per_page=5'); ?>
	<?php while ($popular->have_posts()) : $popular->the_post(); ?>

	<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?> (<?php comments_number('0','1','%'); ?>)</a></li>

<?php endwhile; ?>
</ul>
  • c’est encore mieux avec des images ! :

Si vous êtes un adepte des champs personnalisés (les fameux « custom fields« ), vous pouvez également appeler le champ relatif à votre image, afin de le lier à la liste d’articles, comme suit :

<?php $popular = new WP_Query('orderby=comment_count&posts_per_page=5'); ?>

	<?php while ($popular->have_posts()) : $popular->the_post(); ?>

	<?php $justanimage = get_post_meta($post->ID, 'Image', true);
			if ($justanimage) {
			?>
	<img src="<?php echo get_post_meta($post->ID, "Image", true); ?>" alt="<?php the_title(); ?>" />

	<?php } else { ?>

	<img src="http://an-alternative-image.jpg" alt="" />

	<?php } ?>

	<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>

<?php endwhile; ?>
  • Afficher des articles de manière aléatoire :

Afin de dépoussiérer les vieux articles qui dorment bien au chaud dans vos archives, il peut être très intéressant de créer une sélection aléatoire, de type random, qui va tout simplement appeler un nombre X d’articles de manière hasardeuse, comme par exemple :

<?php $my_query = new WP_Query('orderby=rand&showposts=5');
 while ($my_query->have_posts()) : $my_query->the_post();
 ?>
 <li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">
<?php endwhile; ?>

N’hésitez pas à laisser libre cours à votre imagination, tout est possible via php, sans oublier une touche d’HTML et de CSS pour tout mettre en forme ! Une seule référence : le Codex WordPress

L'auteur : iDorian

Ce monde, tel qu’il est fait, n’est pas supportable. J’ai donc besoin de la lune, ou du bonheur, ou de l’immortalité, de quelque chose qui soit dément peut-être, mais qui ne soit pas de ce monde.

  • Antoine

    Bonjour,

    Je suis Antoine Rezvani et je propose des sites internet pas cher grace a la sous traitance offshore.
    N’hesitez pas a me contacter : creation site internet

    A bientot

    Antoine

  • Jason

    Bonjour
    Je suis très intéressé par l’affichage aléatoire d’article.
    Alors , ou doit-on placer tout ces code PHP, je ne vois vraiment pas.

    Merci d’avance

    Cordialement

  • Darknote

    pourquoi ne pas utiliser the_post_thumbnail pour les  images?