Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Les Arguments de Wp_query : Catégories et Tags

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Mastering WP_Query.
WP_Query Arguments: Posts, Pages and Post Types
WP_Query Arguments: Taxonomies

French (Français) translation by Christophe Thomas (you can also view the original English article)

Dans les parties précédentes de cette série, vous avez appris comment WP_Query est structuré et quelles sont ses propriétés et méthodes. La prochaine étape est de comprendre les divers arguments que vous pouvez utiliser avec elle et la meilleure façon de le faire.

Wp_query dispose d’un grand nombre d’arguments possibles, ce qui le rend extrêmement flexible. Comme vous pouvez l’utiliser pour interroger tout ce qui se trouve dans votre table wp_posts, il y a des arguments pour chaque type de requête, que vous pouvez exécuter sur votre contenu.

Dans ce tutoriel, nous allons examiner deux types d’arguments, pour ce qui suit :

  • Les catégories
  • Les Tags

Les arguments de ces deux classifications sont semblables mais ont quelques différences que vous devez connaitre si vous voulez les utiliser efficacement.

Un récapitulatif sur le fonctionnement des Arguments dans WP_Query

Avant de commencer, nous allons avoir un récapitulatif rapide sur le fonctionnement des arguments dans WP_Query. Lorsque vous codez WP_Query dans vos thèmes ou plugins, vous devez inclure les quatre éléments principaux :

  • les arguments de la requête, à l’aide de paramètres qui seront couverts dans ce tutoriel
  • la requête elle-même
  • la boucle
  • Pour finir : réinitialisation de publication des données

Dans la pratique cela ressemblera à ce qui suit :

Les arguments sont ce que indique à WordPress quelles sont les données à extraire de la base de données et ce sont celles que nous aborderons ici. Donc nous allons nous concentrer sur la première partie du code :

Comme vous pouvez le voir, les arguments sont contenues dans un tableau. Vous allez apprendre à coder au fur et à mesure que vous avancez dans ce tutoriel.

Coder Vos Arguments

Il y a une manière spécifique pour coder les arguments dans le tableau, qui se présente comme suit :

Vous devez mettre les paramètres et leurs valeurs entre des guillemets simples, utilisez => entre eux et séparez-les par une virgule. Si vous les positionnez mal, WordPress n'ajoutera pas tous vos arguments qui ne pourront pas correspondre à la requête, et vous pourrez obtenir un écran blanc.

Paramètres de catégorie

Commençons par les paramètres de catégorie. Les options que vous avez ici sont comme suit :

  • cat (int): utilisez l’id de la catégorie.
  • category_name (chaîne): utilisez l'identifiant (slug) de la catégorie (pas de nom).
  • category__and (array): utilisez l’id de catégorie.
  • category__in (array): utilisez l’id de catégorie.
  • category__not_in (array): utilisez l’id de catégorie.

Notez que pour aucun d'entre eux vous utilisez le nom de votre catégorie. Même le paramètre category_name prend l'identifiant (slug) comme valeur, et non son nom. J’ai tendance à utiliser celui-ci, et non l’ID que quand je reviens à mon code, à une date ultérieure, les identifiants (slugs) sont plus faciles à identifier que IDs. Cependant si vous pensez que les utilisateurs de votre site peuvent changer l'identifiant (slug) pour une ou plusieurs catégories, nous vous recommandons d’utiliser l’ID pour éviter tout problème.

Nous allons jeter un coup d’oeil à la façon dont vous utilisez chacun de ces paramètres.

Le paramètre cat

Le paramètre cat est simple : il suffit d’utiliser un ID de catégorie unique ou une chaîne d’ID de catégorie.

Rechercher une seule catégorie ressemble à ceci :

Interroger plusieurs catégories ressemble à ceci :

Ce qui précède indique à WordPress ce qu'il faut aller chercher comme messages qui ne se trouvent dans aucune des catégories énumérées. Si vous voulez trouver des messages dans chacune des cellules d’un tableau des catégories, vous utilisez le paramètre category_and, qui est plus court.

Vous pouvez également utiliser le paramètre cat pour trouver les messages qui se trouvent dans une seule catégorie mais pas dans une autre, en utilisant un signe moins devant l’ID de catégorie comme suit :

Ce qui précède permet d’interroger des messages dans la catégorie 12, mais pas dans la catégorie 13.

Le paramètre category_name

Le paramètre category_name utilise l'identifiant (slug) de catégorie, pas le nom (confus, je sais!). Encore une fois vous pouvez l'utiliser avec une seule catégorie ou une série de catégories pour trouver les messages qui se trouvent dans aucune des catégories.

Pour requêter des messages dans une seule catégorie, vous ajoutez :

Et pour trouver des messages dans un ou plusieurs d’un certain nombre de catégories, utilisez ceci :

Comme pour le paramètre cat, cela ne trouvera pas des messages qui se trouvent dans toutes ces catégories, mais il trouvera des messages qui sont dans au moins une de ces catégories.

Le paramètre category__and

Si vous voulez trouver les messages qui sont dans l’ensemble d’un tableau des catégories, c’est le paramètre que vous devez utiliser. Il prend l’ID de catégorie comme sa valeur. Donc pour trouver des postes dans l’ensemble des trois catégories, vous utiliseriez :

Notez que cela utilise un tableau pas une chaîne, donc vous codez différemment. Le paramètre a deux traits de soulignement dans son nom : utiliser un seul et cela ne fonctionnera pas.

Le paramètre category__in

Le paramètre suivant recherche dans un ou plusieurs d’un tableau des catégories de messages. Il fonctionne de la même manière que le paramètre cat et prend également l’ID de catégorie comme étant sa valeur.

Donc pour interroger les postes dans une ou plusieurs des cellules d’un tableau des catégories, vous utiliseriez :

Ce qui précède réalisait l’extraction de messages d’une ou plusieurs de ces catégories.

Le paramètre category__not_in

Le paramètre category__not_in fait comme vous vous en doutez : il interroge les messages qui ne sont pas dans une catégorie ou un groupe de catégories.

Pour exclure les messages d’une catégorie, vous devez utiliser ce qui suit :

Et d’exclure les messages d’une kyrielle de catégories :

Cela exclurait les messages de n’importe lequel de ces catégories.

Paramètres de la balise (tag)

Balises (Tags) ont des paramètres légèrement différents des catégories : vous ne pourrez pas capitaliser sur votre connaissance des paramètres de la catégorie, j’en ai peur !

Les paramètres de la balise (tag) sont :

  • Tag (chaîne): utilisez l'identifiant (slug) du tag.
  • tag_id (int): utilisez l’id de la balise (tag)
  • tag__and (array): utilise les ID de la balise (tag).
  • tag__in (array): utilise des ID de la balise (tag).
  • tag__not_in (array): utilise des ID de la balise (tag).
  • tag_slug__and (array): utiliser l'identifiant (slug) de la balise.
  • tag_slug__in (array): utiliser les identifiants (slug) de la balise.

Penchons-nous sur chacun d'entre eux.

Le paramètre tag

Le paramètre tag prend l'identifiant du tag comme valeur et peut être utilisé pour trouver des messages avec une balise ou avec l’un des éléments d’une série de balises.

Donc pour trouver des messages avec un tag que vous utilisez :

Et pour trouver des messages avec des tags parmi une gamme de balises :

Notez que les requêtes ci-dessus recherchent des postes avec n’importe laquelle des balises (tags) présent dans le tableau, pas tous.

Le paramètre tag_id

Le paramètre tag_id fonctionne de manière similaire au paramètre cat: il prend l’ID de la balise et peut être utilisé avec une balise unique ou plusieurs balises.

Pour trouver des messages avec une seule étiquette, vous pouvez utiliser ceci :

Pour trouver des messages avec une ou plusieurs balises d’une chaîne de balise ID :

Vous pouvez également utiliser tag_id pour exclure les étiquettes (tags), soit lors de son utilisation pour les balises unique ou plusieurs balises.

Donc pour interroger des postes sauf ceux avec une balise donnée, vous utiliseriez :

Tandis que pour trouver des messages avec l’une des deux balises, mais sans une autre balise, vous utiliseriez ceci :

Donc ce qui précède interrogera les messages avec ou pour les deux balises 21 ou 23 mais pas de balise 22.

Le paramètre tag__in

Ce paramètre vous permet de trouver des postes avec un ou plusieurs d’un tableau d’étiquettes. Il fonctionne de la même manière en tant que tag lorsqu’il est utilisé avec un tableau :

Ceci retournera les messages avec tout ou partie des balises énumérées. Si vous voulez trouver des messages avec toutes les balises, vous utilisez tag__and, que j’aborderai dans un instant.

Le paramètre tag__not_in

Le paramètre tag__not_in vous permet d'interroger les messages qui n’ont pas de balise donnée ou un tableau d’étiquettes.

Utilisez-le comme ceci pour exclure une balise :

Notez que vous devez toujours utiliser un tableau même si vous utilisez seulement une balise. Pour plus d’étiquettes, utilisez :

Cela interrogera les messages qui n’ont pas toutes les balises ci-dessus.

Les paramètres tag_slug__and et tag_slug__in

Ces deux paramètres se comportent exactement de la même façon que les paramètres tag__and et tag__in, sauf que vous utilisiez cet identifiant (slug) de tag dans vos tableaux au lieu de l’ID de la balise.

Ainsi, par exemple, pour rechercher les messages qui ont tous deux une paire de balises, vous utilisez tag__slug_in :

Ceci permet de trouver des messages avec n’importe laquelles de ces balises. Vous pouvez également utiliser le paramètre tag avec une chaîne d'identifiant (slug) de tag pour obtenir le même résultat.

Pour inclure les messages avec tout un jeu de balises, utiliser tag_slug__and :

Au lieu d’interroger les messages avec n'importe laquelle de ces balises, cela interroge uniquement les postes disposant de toutes les balises.

Résumé

Pour Interroger vos postes par catégorie et/ou par étiquette, c’est une chose que vous aurez maintenant l’occasion de le faire avec WP_Query. En utilisant les arguments ci-dessus et en les combinant, le cas échéant, vous pouvez créer de puissants arguments pour extraire exactement les données de la base de données dont vous avez besoin.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.