WP_Query Arguments Catégories et balises

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:

  • catégories
  • Mots clés

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..

Récapitulation du fonctionnement des arguments dans WP_Query

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:

  • les arguments de la requête, en utilisant des paramètres qui seront abordés dans ce tutoriel
  • la requête elle-même
  • la boucle
  • terminer: réinitialiser les données de post

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..

Coder vos arguments

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..

Paramètres de catégorie

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 paramètre de chat

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 paramètre category_name

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.

La catégorie__et le paramètre

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 category__in

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 paramètre category__not_in

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..

Paramètres de tag

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 paramètre tag

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 paramètre tag_id

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.

Le paramètre tag__in

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 paramètre tag__not_in

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..

Les paramètres tag_slug__and et tag_slug__in

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.

Résumé

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..