Si vous avez suivi cette série, vous comprendrez comment WP_Query
est structuré et comment vous l'utilisez pour écrire des requêtes personnalisées. Pour pouvoir définir quoi WP_Query
va chercher dans la base de données, vous devez savoir quels arguments vous pouvez utiliser pour interroger des données.
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 tutoriel, je regarderai les arguments des champs personnalisés. Mais d’abord, un bref récapitulatif sur la manière dont vous codez les 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:
si
et tandis que
balises et réinitialisation des données de publicationEn 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 indiquent à 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..
Les champs personnalisés, également appelés post-métadonnées, peuvent utiliser une classe séparée appelée WP_Meta_Query
. Cela signifie que si vous souhaitez exécuter une requête uniquement pour les métadonnées de publication, vous pouvez utiliser WP_Meta_Query
ou WP_Query
(qui accède WP_Meta_Query
), alors que si vous souhaitez interroger des métadonnées de publication et d’autres éléments tels que le type de publication, vous utilisez WP_Query
.
le WP_Meta_Query
La classe est traitée en détail ailleurs dans cette série, je ne vais donc pas entrer dans les détails ici, mais la principale différence entre WP_Query
est-ce WP_Query
vous permet de créer des arguments simples sans utiliser de tableaux imbriqués.
Les principaux paramètres pour utiliser WP_Query
pour interroger les champs personnalisés sont les suivants:
meta_key
(chaîne): Clé de champ personnalisée.meta_value
(chaîne): Valeur du champ personnalisé.meta_value_num
(nombre): Valeur du champ personnalisé.meta_compare
(chaîne): Opérateur pour tester le 'meta_value'
. Les valeurs possibles sont '='
, '! ='
, '>'
, '> ='
, '<'
, '<='
, 'COMME'
, 'PAS COMME'
, 'DANS'
, 'PAS DEDANS'
, 'ENTRE'
, 'PAS ENTRE'
, 'N'EXISTE PAS'
, 'REGEXP'
, 'PAS REGEXP'
ou 'RLIKE'
. La valeur par défaut est '='
.Utilisez ces paramètres pour une requête de champ personnalisé simple. Ainsi, par exemple, pour publier des publications qui ont un champ personnalisé avec la clé touche 1
(quelle que soit sa valeur), vous utilisez cet argument:
$ args = array ('meta_key' => 'key1');
Cela renverrait toutes les publications avec un champ personnalisé avec le touche 1
clé, quelle que soit la valeur.
Si vous voulez spécifier une valeur, vous ajouterez un argument supplémentaire pour cela:
$ args = array ('meta_key' => 'key1', 'meta_value' => 'value1');
Cela renverrait toutes les publications avec un champ personnalisé avec le touche 1
clé et la valeur1
valeur pour cela.
Sinon, vous pouvez récupérer toutes les publications avec un champ personnalisé avec la valeur valeur1
, indépendamment de la clé. Cela peut être utile lorsque vous avez plusieurs clés de champ personnalisées avec des valeurs en double:
$ args = array ('meta_value' => 'value1');
Comme vous pouvez le constater, vous pouvez interroger uniquement la clé ou la valeur du champ personnalisé. Vous n'êtes pas obligé de spécifier les deux..
Vous avez peut-être remarqué ci-dessus qu'il existe de nombreux paramètres potentiels pour le meta_compare
argument, et leur utilisation peut ne pas toujours être immédiatement évident. Jetons un coup d'oeil à ceux que vous pourriez utiliser le plus:
=
: Équivaut à. C'est la valeur par défaut, donc si vous n'incluez pas de meta_compare
argument, c’est ce que WP_Query utilisera.!+
: N'est pas égal à.>
: Plus grand que.> =
: Plus grand ou égal à.<
: Moins que.<=
: Inférieur ou égal à.COMME
: Cela ignorera la casse de la valeur que vous utilisez et vous pouvez également l'utiliser avec des caractères génériques pour rechercher des valeurs telles que celle que vous recherchez.PAS COMME
: Fonctionne de la même manière que LIKE mais demande le contraire!DANS
: Utilisez ceci avec un tableau dans l'argument 'valeur' pour rechercher des publications avec une ou plusieurs des valeurs du tableau.ENTRE
: À utiliser avec un tableau de deux valeurs numériques (spécifié dans le meta_value
argument) pour rechercher des publications avec une valeur de champ personnalisée entre ces valeurs (mais pas égale à celles-ci).PAS ENTRE
: Requêtes avec des valeurs de champ personnalisées en dehors d'un tableau de deux valeurs numériques spécifiées par meta_value
argument.Jetons un coup d'oeil à quelques exemples d'utilisations de cet argument.
Tout d’abord, vous pouvez exclure les clés de champ ou les valeurs personnalisées à l’aide de la touche meta_compare
argument. Donc, pour aller chercher tous les posts sauf ceux avec un champ personnalisé avec le touche 1
clé, vous utiliseriez ceci:
$ args = array ('meta_key' => 'key1', 'meta_compare' => '! =');
Vous pouvez aussi utiliser le 'PAS DEDANS'
valeur pour le meta_compare
argument, qui peut également être utilisé avec une chaîne de plusieurs valeurs:
$ args = array ('meta_key' => 'key1, key2', 'meta_compare' => 'NOT IN');
Cela interrogerait les publications qui n'ont pas de champs personnalisés avec le touche 1
ou clé2
valeurs. Si vous voulez être plus précis, par exemple pour rechercher des publications avec un champ personnalisé et pas un autre, vous utilisez un tableau imbriqué, auquel nous reviendrons dans quelques instants..
Les exemples ci-dessus utilisent des valeurs non numériques. Vous pouvez utiliser WP_Query
avec des champs personnalisés ayant des valeurs numériques, non seulement pour récupérer les publications avec un champ personnalisé avec cette valeur, mais également pour extraire celles ayant des champs personnalisés avec des valeurs supérieures ou inférieures. Vous pouvez utiliser ceci dans un magasin, par exemple, si vous recherchez des articles supérieurs ou inférieurs à un prix donné..
Pour rechercher des publications avec une valeur de champ personnalisée supérieure à un nombre donné, utilisez quelque chose comme ceci:
$ args = array ('meta_key' => 'numkey', 'meta_value' => '100', 'meta_compare' => '>');
Cela renverrait toutes les publications avec un champ personnalisé avec le numkey
clé et une valeur de plus 100
. Si vous souhaitez interroger des valeurs de 100 ou plus, vous utiliserez 'meta_compare' => '> ='
.
Vous pouvez également rechercher des publications dont les champs personnalisés ont des valeurs comprises entre deux nombres que vous spécifiez à l'aide de la touche ENTRE
argument et un tableau:
$ args = array ('meta_key' => 'numkey', 'meta_value' => array ('100', '200'), 'meta_compare' => 'ENTRETIEN');
Cela trouverait tous les messages ayant une valeur dans le numkey
champ personnalisé entre 100 et 200.
Si vous souhaitez interroger plusieurs champs personnalisés ou utiliser plusieurs opérateurs, vous pouvez utiliser un tableau imbriqué..
Ceux-ci prennent la structure suivante:
$ args = array ('meta_query' => array ('relation' => ", // argument optionnel. array (// les arguments 'meta_query' vont ici.)));
La façon dont vous structurez le 'meta_query'
argument dans WP_Query
est exactement la même chose que comment vous le faites en utilisant le WP_Meta_Query
classe, qui est couvert dans un tutoriel ultérieur de cette série, donc je ne vais pas dupliquer ici.
Depuis WordPress version 4.1, vous pouvez également utiliser plusieurs niveaux de tableau imbriqué pour créer des requêtes toujours plus complexes et précises. Celles-ci ressemblent à ceci:
$ args = array ('meta_query' => array ('relation' => ", // argument optionnel. array ('relation' =>", array (// Le premier ensemble d'arguments 'meta_query' va ici.), array (// Le second ensemble d'arguments 'meta_query' va ici.))));
Cela vous permet d'utiliser différentes relations à différents niveaux de votre requête, par exemple pour rechercher des publications avec une valeur dans une clé de champ personnalisée ou avec les deux valeurs dans une autre clé de champ personnalisé. Ceci est couvert plus en détail, avec des exemples, dans le tutoriel sur le WP_Meta_Query
classe, qui fait partie de cette série.
En utilisant le WP_Query
La classe pour interroger les métadonnées (ou les champs personnalisés) de vos publications vous donne beaucoup de flexibilité, avec de nombreux arguments potentiels combinés avec un certain nombre d'opérateurs pour vous aider à interroger votre base de données exactement comme vous le souhaitez..
Si vous souhaitez uniquement utiliser les arguments de métadonnées de publication dans votre requête (et non les combiner avec d'autres arguments, par exemple pour les types de publication), vous pouvez également utiliser l'option WP_Meta_Query
classe, qui est couvert plus tard dans cette série.