Dans les premières parties 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 consiste à comprendre les différents arguments que vous pouvez utiliser et comment le faire au mieux..
WP_Query
a un grand nombre d’arguments possibles, ce qui le rend extrêmement flexible. Comme vous pouvez l'utiliser pour interroger à peu près tout ce qui se trouve dans votre wp_posts
table, il a des arguments pour chaque permutation de requête que vous pourriez vouloir exécuter sur votre contenu.
Dans ce didacticiel, nous examinerons deux types d’arguments, à savoir:
Les arguments en faveur de ces deux taxonomies sont similaires, mais il existe certaines différences que vous devez connaître pour pouvoir les utiliser efficacement..
Avant de commencer, récapitulons brièvement le fonctionnement des arguments dans WP_Query
. Quand vous codez WP_Query
Dans vos thèmes ou plugins, vous devez inclure quatre éléments principaux:
En pratique, cela ressemblera à quelque chose comme ceci:
have_posts ()) // Commence à boucler sur les résultats de la requête. while ($ query-> have_posts ()) $ query-> the_post (); // Le contenu des résultats postés interrogés est disponible ici. // Restaure les données de publication d'origine. wp_reset_postdata (); ?>
Les arguments sont ce qui indique à WordPress quelles données extraire de la base de données et ce sont celles que je vais couvrir ici. Nous nous concentrons donc sur la première partie du code:
$ args = array (// Arguments pour votre requête.);
Comme vous pouvez le constater, les arguments sont contenus dans un tableau. Vous apprendrez à les coder au fil de ce didacticiel..
Il existe un moyen spécifique de coder les arguments du tableau, comme suit:
$ args = array ('paramètre1' => 'valeur', 'paramètre2' => 'valeur', 'paramètre3' => 'valeur');
Vous devez mettre les paramètres et leurs valeurs entre guillemets simples, utilisez =>
entre eux, et séparez-les avec une virgule. Si vous vous trompez, WordPress peut ne pas ajouter tous vos arguments à la requête ou vous pouvez obtenir un écran blanc..
Commençons par les paramètres de catégorie. Les options que vous avez ici sont les suivantes:
chat
(int): identifiant de la catégorie d'utilisation.Nom de catégorie
(chaîne): limace de catégorie d'utilisation (pas de nom).catégorie__et
(tableau): identifiant de la catégorie d'utilisation.catégorie__in
(tableau): identifiant de la catégorie d'utilisation.catégorie__not_in
(tableau): identifiant de la catégorie d'utilisation.Notez que vous n'utilisez pour aucune de ces catégories le nom de votre catégorie. Même le Nom de catégorie
paramètre prend le slug comme valeur, pas son nom. J'ai tendance à utiliser celui-ci plutôt que l'identifiant, car lorsque je reviens sur mon code ultérieurement, les slugs sont plus faciles à identifier que les identifiants. Toutefois, si vous pensez que les utilisateurs de votre site risquent de modifier le slug pour une ou plusieurs catégories, je vous recommande d'utiliser l'ID pour éviter tout problème..
Voyons comment vous utilisez chacun de ces.
le chat
paramètre est simple: il suffit d'utiliser un seul ID de catégorie ou une chaîne d'ID de catégorie.
Interroger une catégorie ressemble à ceci:
$ args = array ('cat' => '12');
Rechercher dans plusieurs catégories ressemble à ceci:
$ args = array ('cat' => '12, 13, 14 ');
Ce qui précède indiquera à WordPress de récupérer les publications appartenant à l’une des catégories répertoriées. Si vous souhaitez rechercher des articles dans chacune des catégories d'un tableau, utilisez le catégorie_et
paramètre, dont plus bientôt.
Vous pouvez également utiliser le paramètre cat pour rechercher des publications appartenant à une catégorie mais pas à une autre, en utilisant un signe moins devant l'ID de la catégorie, comme suit:
$ args = array ('cat' => '12, -13 ');
Ce qui précède interrogerait les messages de la catégorie 12
mais pas dans la catégorie 13
.
le Nom de catégorie
paramètre utilise la catégorie slug, pas le nom (déroutant, je sais!). Là encore, vous pouvez l’utiliser avec une seule catégorie ou avec une chaîne de catégories pour rechercher des publications appartenant à l’une des catégories..
Pour interroger les publications dans une seule catégorie, ajoutez:
$ args = array ('category_name' => 'my-slug');
Et pour trouver des publications dans une ou plusieurs catégories, utilisez ceci:
$ args = array ('category_name' => 'my-slug, your-slug, another-slug');
Comme pour le paramètre cat, cela ne trouvera pas les posts qui sont dans tout des catégories, mais il trouvera des messages dans tout des catégories.
Si vous souhaitez rechercher des publications dans l'ensemble d'un tableau de catégories, vous devez utiliser ce paramètre. Il prend les identifiants de catégorie pour sa valeur. Donc, pour trouver des articles dans les trois catégories, utilisez:
$ args = array ('category__and' => array ('12', '13', '14'));
Notez que ceci utilise un tableau et non une chaîne, vous le codez donc différemment. Le paramètre a deux traits de soulignement dans son nom: utilisez un seul et cela ne fonctionnera pas.
Le paramètre suivant recherche les publications dans une ou plusieurs catégories de tableaux. En fait, il fonctionne de la même manière que le paramètre cat et prend également la catégorie ID comme valeur..
Ainsi, pour interroger les publications dans une ou plusieurs catégories de tableaux, utilisez:
$ args = array ('category__in' => array ('12', '13', '14'));
Ce qui précède chercherait des messages dans une ou plusieurs de ces catégories.
le catégorie__not_in
paramètre fait ce que vous attendez: il interroge les publications qui ne font pas partie d'une catégorie ou d'un tableau de catégories.
Pour exclure les publications d'une catégorie, utilisez les éléments suivants:
$ args = array ('category__not_in' => '12');
Et pour exclure les publications d'un tableau de catégories:
$ args = array ('category__not_in' => array ('12', '13', '14'));
Cela exclurait les publications de ces catégories..
Les balises ont des paramètres légèrement différents des catégories: vous ne pouvez pas déterminer ce qu’elles pourraient être en fonction de votre connaissance des paramètres de catégorie.!
Les paramètres de la balise sont:
étiquette
(chaîne): utilisez la balise tag.tag_id
(int): utiliser l'identifiant.tag__et
(tableau): utiliser les identifiants.faire
(tableau): utiliser les identifiants.tag__not_in
(tableau): utiliser les identifiants.tag_slug__and
(tableau): utiliser des slugs tag.tag_slug__in
(tableau): utiliser des slugs tag.Regardons chacun de ces.
le étiquette
paramètre prend la balise tag comme valeur et peut être utilisé pour rechercher des publications avec une balise ou avec une chaîne de balises.
Donc, pour trouver des messages avec un tag que vous utilisez:
$ args = array ('tag' => 'my-tag');
Et pour trouver des posts avec des tags dans un tableau de tags:
$ args = array ('tag' => 'mon-tag, votre-tag, un autre-tag');
Notez que les requêtes ci-dessus avec les messages tout des tags dans le tableau, pas tous.
le tag_id
paramètre fonctionne de manière similaire à la chat
paramètre: il prend l'identifiant de l'étiquette et peut être utilisé avec une ou plusieurs étiquettes.
Pour trouver des publications avec une seule balise, utilisez ceci:
$ args = array ('tag_id' => '21');
Pour rechercher des publications avec une ou plusieurs balises dans une chaîne d'ID de balises:
$ args = array ('tag_id' => '21, 22, 23 ');
Vous pouvez aussi utiliser tag_id
pour exclure des balises, que ce soit lors de son utilisation pour des balises simples ou multiples.
Donc, pour interroger les publications sauf celles avec une balise donnée, vous utiliseriez:
$ args = array ('tag_id' => '-21');
Tandis que pour trouver des publications avec l’une des deux balises mais sans une autre balise, vous utiliseriez ceci:
$ args = array ('tag_id' => '21, -22, 23 ');
Donc, ce qui précède interrogera les publications avec une ou les deux balises. 21
ou 23
mais pas tag 22
.
Ce paramètre vous permet de rechercher des publications avec un ou plusieurs tableaux. Cela fonctionne de la même manière que étiquette
lorsqu'il est utilisé avec un tableau:
$ args = array ('tag_in' => array ('21', '22', '23'));
Cela interrogera les publications avec une ou toutes les balises répertoriées. Si vous voulez trouver des publications avec toutes les balises, vous utilisez tag__et
, que je couvrirai dans un instant.
le tag__not_in
paramètre vous permet d'interroger les publications qui n'ont pas une balise donnée ou un tableau de balises.
Utilisez-le comme ceci pour exclure une balise:
$ args = array ('tag__not_in' => array ('21'));
Notez que vous devez toujours utiliser un tableau même si vous n'utilisez qu'une seule balise. Pour plus de tags, utilisez:
$ args = array ('tag__not_in' => array ('21', '22', '23'));
Ceci interrogera les publications qui n'ont aucune des balises ci-dessus..
Ces deux paramètres se comportent exactement de la même manière que le tag__et
et faire
paramètres, sauf que vous utilisez cette balise tag dans vos tableaux au lieu de l'ID de la balise.
Ainsi, par exemple, pour trouver des publications qui ont toutes les deux une paire de balises, vous utilisez tag__slug_in
:
$ args = array ('tag_slug__in' => array ('mon-tag', 'votre-tag', 'autre-tag'));
Cela trouve les messages avec l'une de ces balises. Vous pouvez également utiliser le paramètre tag avec une chaîne de slugs pour obtenir le même résultat..
Pour inclure des publications avec l’ensemble des tags, utilisez tag_slug__and
:
$ args = array ('tag_slug__and' => array ('mon-tag', 'votre-tag', 'autre-tag'));
Au lieu d’interroger les publications avec l’une des balises, cela concerne uniquement les publications ayant tout des tags.
Interroger vos messages par catégorie et / ou tag est une bonne chose que vous aurez l'occasion de faire. WP_Query
. En utilisant les arguments ci-dessus et en les combinant si nécessaire, vous pouvez créer des arguments puissants pour extraire exactement les données dont vous avez besoin de la base de données..