Tout savoir sur WordPress
Tutoriel WordPress

Afficher les images attachées d’un article sans l’image à la une

Cette astuce permet de récupérer et d’afficher toutes les images attachées à un article en n’oubliant pas d’exclure l’image à la une.

Lors du développement d’un thème personnalisé, je devais récupérer et afficher toutes les images attachées d’un article. Ces images permettront par la suite de créer une galerie photo. De plus, il fallait faire en sorte que l’image à la une de l’article ne soit pas présente dans cette galerie.

Grâce à la configuration des paramètres de la fonction get_children() de WordPress, il est facile de se procurer les images d’un article tout en excluant l’image à la une.

Copier le code ci-dessous dans le fichier single.php de votre thème à l’endroit où la galerie doit être affichée :

<?php
// On récupère la liste des images attachées à l'article
$attachments = get_children( array(
	'post_type'      => 'attachment',
	'posts_per_page' => -1,
	'post_parent'    => get_the_ID(),
	'exclude'        => get_post_thumbnail_id()
) );

// On teste si on a des images ou non
if ( $attachments ) {
    echo '<figure>';
    foreach ( $attachments as $attachment ) {
	// On affiche l'image dans un lien hypertexte
	echo wp_get_attachment_link( $attachment->ID, 'thumbnail' );
    }
    echo '</figure>';
}
?>

Grâce à la clé 'exclude' du tableau passé en argument de la fonction get_children(), on a pu préciser qu’on ne devait pas prendre en compte l’image à la une de l’article dont l’ID a été récupéré à l’aide de la fonction get_post_thumbnail().

Cet article a été mis à jour il y a 2184 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

10 Commentaires

  1. C’est pratique, ca évite de modifier le shortcode et d’aller chercher l’id à exclure!

    Question sans trop de rapport, est il possible d’afficher une image à la une par defaut pour les non membres?

  2. Je n’ai jamais utilisé get_children(), merci pour la démo !

    @denny : oui, dans ton thème joue avec « if( is_user_loged_in() )… »

  3. Bonjour,
    Merci pour l’astuce. Par contre j’aurais une question. Avant cette manipulation je pouvais utiliser lightbox sur ma galerie. Le plugin ne marche plus avec ce code. Aurais-tu une idée pour résoudre ce problème ?

  4. @Jeremy : L’astuce ne permet de créer une galerie. Elle permet simplement d’afficher toutes les images attachées à un article. Par conséquent, si vous créer une galerie avec un plugin, il ne devrait pas avoir de conflit.

  5. Est-ce que cette méthode pourrait me permettre de récupérer une image attachée à un portfolio (plugin Go Portfolio) ?

25afb271496e2271ea1620d86def35a3~~~