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.

Note éditoriale : Nous percevons une commission sur les liens des partenaires sur WPBeginner. Les commissions n'affectent pas les opinions ou les évaluations de nos rédacteurs. En savoir plus sur Processus éditorial.

Vous souhaitez afficher une publication WordPress uniquement si elle comporte un champ personnalisé spécifique ?

Les champs personnalisés sont une fonctionnalité pratique de WordPress qui vous permet d’ajouter des informations supplémentaires à vos publications et pages WordPress. Vous pourriez souhaiter filtrer votre contenu en fonction de vos champs personnalisés.

Dans cet article, nous allons vous afficher comment afficher une publication WordPress uniquement si elle possède un champ personnalisé spécifique.

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

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 avancé de WordPress, et il existe de nombreuses façons d’ajouter des champs personnalisés dans WordPress, notamment en utilisant l’ extension Advanced Custom Fields (ACF).

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.

Par ailleurs, notez que ce tutoriel fonctionne uniquement avec les thèmes WordPress classiques, car les thèmes par 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.

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 complet sur le référencement WordPress ou consulter notre liste des meilleurs plugins WordPress pour développer votre site.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and 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

12 commentairesLaisser une réponse

  1. Syed Balkhi says

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. ahmed says

    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

  3. Dave101 says

    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?

  4. Mario M says

    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’);

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.