Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Coupe WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Comment afficher une publication WordPress uniquement si elle possède un champ personnalisé spécifique.

Vous avez peut-être ajouté un champ personnalisé à vos publications WordPress et souhaitez afficher uniquement les publications contenant ce champ. Ou vous essayez de créer une page spéciale qui répertorie les publications avec une valeur de champ personnalisé spécifique. Vous n’êtes pas seul !

L’un de nos lecteurs nous a demandé comment procéder, et nous avons pensé qu’il serait utile de partager la réponse avec tout le monde.

Les champs personnalisés vous permettent d’ajouter des informations supplémentaires à vos publications et à vos pages. Ils sont parfaits pour organiser et filtrer votre contenu. Dans cet article, nous allons vous montrer comment afficher les publications WordPress uniquement si elles possèdent un champ personnalisé spécifique.

How to Display a WordPress Post Only if It Has a Specific Custom Field

Note : Ce tutoriel permet d’afficher les publications WordPress si elles ont une valeur saisie dans un champ personnalisé spécifique. Si vous souhaitez afficher les champs personnalisés sur l’interface publique d’un article WordPress, alors vous pouvez lire notre guide sur la façon d’afficher les champs personnalisés dans les thèmes WordPress.

Pourquoi afficher les publications WordPress avec un champ personnalisé spécifique ?

Lorsque vous créez un article sur votre site WordPress, vous pouvez utiliser des champs personnalisés pour ajouter des métadonnées supplémentaires à la publication. Les métadonnées sont des informations sur la publication, telles que le titre, l’auteur/autrice et la date de publication.

Les champs personnalisés sont un concept WordPress avancé, et il existe de nombreuses façons d’ajouter des champs personnalisés dans WordPress. Vous trouverez de nombreux conseils utiles sur l’utilisation et l’affichage des champs personnalisés dans notre publication, WordPress Custom Fields 101 : Tips, Tricks, and Hacks.

You Can Add Metadata to a Post Using Custom Fields

Un de nos utilisateurs/utilisatrices nous a demandé comment afficher les publications WordPress uniquement si un champ personnalisé spécifique est présent. Cela peut être utile si vous cherchez à créer une page personnalisée qui répertorie toutes les publications qui contiennent un champ personnalisé spécifique et/ou une valeur.

Après avoir répondu, nous avons pensé qu’il serait préférable de partager cette réponse avec tous les autres afin que la communauté WordPress.org puisse en bénéficier.

Modifier les fichiers de votre thème WordPress : Ce qu’il faut garder à l’esprit

Pour pouvoir suivre correctement ce tutoriel, voici quelques éléments à garder à l’esprit :

  1. Ce tutoriel implique de modifier les fichiers de votre thème WordPress avec du code, il n’est donc pas le plus adapté pour les débutants complets. Si vous êtes nouveau dans ce domaine, vous devrez lire notre guide sur la façon de copier et coller du code dans WordPress.
  2. Nous vous recommandons de sauvegarder votre site et/ou d’utiliser un environnement staging afin que votre site direct ne soit pas affecté en cas d’erreur. En effet, vous allez ajouter du code aux fichiers de votre thème, ce qui peut être risqué.
  3. Nous vous recommandons de comprendre comment fonctionne la hiérarchie des fichiers modèles de WordPress afin de savoir où ajouter le code ultérieurement.
  4. Vous devrez également vous familiariser avec le fonctionnement des boucles WordPress, car nous appellerons ces paramètres dans une requête WordPress.

Notez également que ce tutoriel fonctionne uniquement avec les thèmes WordPress classiques, car les thèmes basés sur des blocs ont un ensemble différent de fichiers de thème.

Ceci étant dit, voyons comment afficher une publication WordPress uniquement si elle possède un champ personnalisé spécifique.

Afficher une publication WordPress uniquement si elle contient un champ personnalisé spécifique

Avant de vous afficher le code à utiliser, vous devez savoir à quel fichier du thème vous devez l’ajouter. Le plus souvent, il s’agira d’un modèle de page, tel que index.php, archive.php ou page.php.

Disons que vous voulez l’ajouter au fichier index.php du thème Twenty Twenty-One. Voici à quoi ressemble actuellement la partie de ce fichier consacrée à la boucle WordPress :

<?php
if ( have_posts() ) {

// Load posts loop.
	while ( have_posts() ) {
		the_post();

		get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
	}

	// Previous/next page navigation.
	twenty_twenty_one_the_posts_navigation();

} else {

	// If no content, include the "No posts found" template.
	get_template_part( 'template-parts/content/content-none' );

}

get_footer();

Ce code utilise la boucle par défaut de WordPress(have_posts() et the_post()) pour afficher les publications. Cette méthode convient à la plupart des thèmes WordPress standard et permet d’afficher les publications sans aucun filtre ou tri personnalisé.

Imaginons maintenant que vous utilisiez le champ personnalisé « color » comme dans l’exemple ci-dessus. Vous devrez remplacer l’intégralité de ce code par l’extrait ci-dessous :

<?php
// The Query to show a specific Custom Field
$the_query = new WP_Query('meta_key=color');

// Load posts loop.
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();

        get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
    }

    // Previous/next page navigation.
    twenty_twenty_one_the_posts_navigation();

} else {

    // If no content, include the "No posts found" template.
    get_template_part( 'template-parts/content/content-none' );

}

// Reset Post Data
wp_reset_postdata();

get_footer();

Dans ce nouveau code, nous avons introduit une requête personnalisée($the_query = new WP_Query('meta_key=color') ;) pour récupérer les publications basées sur la valeur d’un champ personnalisé spécifique (dans ce cas, les publications avec un champ personnalisé ‘color’).

Il utilise ensuite une boucle personnalisée(if ($the_query->have_posts())) pour itérer sur les publications obtenues par cette requête personnalisée, en affichant le contenu de chaque publication de la même manière que dans le premier extrait.

Nous avons également ajouté la fonctionwp_reset_postdata() pour nous assurer que WordPress affiche à nouveau toutes les publications correctement après la requête personnalisée. Cela permet de s’assurer que le site fonctionne bien et affiche le bon contenu aux utilisateurs/utilisatrices.

Maintenant, si vous voulez afficher des publications spécifiques qui ont un champ personnalisé avec une valeur spécifique, il vous suffit de modifier la requête de la ligne 3 comme suit :

$the_query = new WP_Query( 'meta_value=blue' );

Ceci affichera toutes les publications qui ont une valeur ‘bleu’ dans un champ personnalisé.

Si vous voulez vous assurer que le champ « color » contient la valeur « blue », votre code de requête ressemblera à ceci :

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );

Pour en savoir plus sur les paramètres supplémentaires que vous pouvez utiliser dans votre requête, consultez la page de référence du code WP_Query de WordPress.

Une fois que vous avez enregistré le code dans le fichier PHP du modèle de page, vous pouvez consulter votre site WordPress sur l’interface publique pour voir votre code en action.

Outil de personnalisation de votre site WordPress

Voici d’autres façons de personnaliser vos pages WordPress :

Nous espérons que ce tutoriel vous a aidé à apprendre comment afficher une publication WordPress uniquement si elle possède un champ personnalisé spécifique. Vous pouvez également consulter notre guide terminé sur la façon de modifier un site WordPress et nos choix d’experts des meilleures extensions Figma pour WordPress.

Si vous avez aimé cet article, veuillez alors vous abonner à notre chaîne YouTube pour obtenir des tutoriels vidéo sur WordPress. Vous pouvez également nous trouver sur Twitter et Facebook.

Divulgation : Notre contenu est soutenu par les lecteurs. Cela signifie que si vous cliquez sur certains de nos liens, nous pouvons gagner une commission. Consultez comment WPBeginner est financé, pourquoi cela compte et comment vous pouvez nous soutenir. Voici notre processus éditorial.

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

L'ultime WordPress Toolkit

Accédez GRATUITEMENT à notre boîte à outils - une collection de produits et de ressources liés à WordPress que tous les professionnels devraient avoir !

Reader Interactions

11 commentairesLaisser une réponse

  1. ahmed

    i have a question sir if i want to display single post and custom fields then what i should do.
    i dont want to display the post with specific custom fields. i want to display all custom fields of post

  2. Dave101

    Hi, thank for the useful tutorial. I have a question, in a wordpress website i set a meta value named « meta_country » and then i set every post with the country of the article, like « us », « uk », « fr »… Now I’m trying to add somewhere in the home of the blog a link that show list of all post with a specific country and a specific tag. For example all « UK » post tagged « APPLE ».
    I don’t understand how to do that, someone could help me?

  3. Максим Каминский

    great thanks, it help wery well!

  4. Mario M

    I wasnt able to generate any results unless I included « post_type » parameter into the query.

    ie: $the_query = new WP_Query(‘post_type=page&meta_key=color’);

  5. sacha

    Wonderful, just so simple and clean.
    Thank you.

  6. scottlee.me

    @ad Great question! I’m curious too.

  7. ad

    Hi,

    How could I show posts that DON’T have a specific Custom Field? Any idea?

    Thanks!!!

    • tara tin

      as I know from php it must be meta_key!=’your key’

      ;just you need to know that « ! » means « not »

  8. brunobruno2

    Beatiful! Many thanks for sharing it. Works like a charm.

Laisser une réponse

Merci d'avoir choisi de laisser un commentaire. Veuillez garder à l'esprit que tous les commentaires sont modérés selon notre politique de commentaires, et votre adresse e-mail ne sera PAS publiée. Veuillez NE PAS utiliser de mots-clés dans le champ du nom. Ayons une conversation personnelle et significative.