WordPress Meta_Query : tout ce que vous devez savoir

Publié: 2022-04-30

L'un des outils les plus puissants de WordPress est la possibilité d'ajouter des champs personnalisés aux publications. De nombreux développeurs utilisent des champs personnalisés avancés ou des champs méta personnalisés pour les publications.

Dans cet article, nous verrons comment interroger les publications par champ personnalisé à l'aide de la fonction meta_query dans WordPress. Ceci est utile pour les sites avec beaucoup de fonctionnalités personnalisées.


Interroger les messages par une méta-valeur

La façon la plus populaire d'interroger les publications avec un champ personnalisé est probablement de cibler une méta-valeur spécifique. Par exemple, disons que nous avons un site où les messages ont un champ personnalisé utilisé pour déterminer si un message est "en vedette". Ceci est courant lors de la création d'une section en vedette sur un site WordPress.

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'featured_post' ,
'value' => 'yes' ,
'compare' => '='
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value.php hosted with by GitHub

Bien sûr, le code ci-dessus variera en fonction de l'intitulé de vos champs et de vos méta-clés, mais la "clé" est le nom du champ personnalisé tandis que la "valeur" correspond à ce que nous interrogeons sur les publications. Le champ 'comparer' est utilisé pour une gamme d'opérations de comparaison que nous verrons plus tard dans le post.

L'utiliser dans WP_Query nous permettra d'obtenir un tableau idéal pour les fonctions de boucle pour afficher les publications. Dans cet article, nous n'aborderons que les fonctions meta_query plutôt que la façon d'afficher la sortie WP_Query.


Interroger les messages par plusieurs méta-valeurs

Si vous souhaitez comparer une valeur de clé méta à plusieurs valeurs, il est préférable d'utiliser l'opérateur "IN".

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value-multiple.php hosted with by GitHub

Interroger les messages par plusieurs méta-clés

Maintenant que nous avons interrogé les publications avec une seule clé méta, faisons-en une avec plusieurs champs/clés interrogés. Cela vous permettra d'interroger les publications en fonction de plusieurs champs personnalisés. Cet exemple combine les deux choses que nous avons faites ci-dessus en imbriquant les requêtes dans un tableau et en ajoutant une "relation" à meta_query.

<?php
$ meta_query_args = array (
'meta_query' => array (
'relation' => 'AND' ,
array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
),
array (
'key' => 'featured_post' ,
'value' => true ,
'compare' => '='
)
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-meta-query-multiple-keys.php hosted with by GitHub

Le champ 'relation' peut être défini sur 'AND' ou 'OR' afin que vous puissiez exiger que toutes les conditions soient remplies ou une seule.


Opérateurs de comparaison de méta-requêtes

Il existe quelques opérateurs qui seront utiles pour interroger vos publications par méta-requête. Voici une ventilation rapide de chaque opérateur de comparaison et comment vous pouvez les utiliser.

  • '=' Interroge les méta-clés égales à une méta-valeur
  • '!=' Interroge les méta-clés qui ne sont PAS égales à une méta-valeur
  • '>' Interroge les clés méta qui sont supérieures à la valeur méta
  • '>=' Interroge les méta-clés supérieures et égales à la méta-valeur
  • '<' Interroge les clés méta qui sont inférieures à la valeur méta
  • '<=' Interroge les méta-clés inférieures et égales à la méta-valeur
  • 'LIKE' Interroge les clés méta qui contiennent un mot/une phrase (par exemple, la requête « rouge » correspondrait aux phrases « Rouge », « looksred » et « redstyle »)
  • 'PAS COMME' Le contraire de ci-dessus
  • 'IN' Interroge les clés méta où la valeur existe dans un tableau
  • 'NOT IN' Interroge les clés méta où la valeur n'existe pas dans un tableau
  • 'BETWEEN' Interroge les clés méta dont la valeur est comprise entre deux nombres
  • 'NOT BETWEEN' Interroge les clés méta dont la valeur n'est pas comprise entre deux nombres
  • 'EXISTS' Interroge les clés méta où la valeur existe
  • 'NOT EXISTS' Interroge les clés méta où la valeur n'existe pas du tout
  • 'REGEXP' Interroge les clés méta basées sur une expression régulière
  • 'PAS REGEXP' En face de REGEXP ci-dessus

Comment trier les publications par champs méta

Bien sûr, WordPress vous permet de trier les publications à l'aide de vos champs personnalisés à l'aide de l'option "orderby" dans WP_Query. Vous devrez définir 'orderby' sur 'meta_value', puis définir une valeur 'meta_key' sur votre nom de champ. Par défaut, cela est particulièrement utile lorsque vous souhaitez que votre requête soit renvoyée par ordre alphabétique ou triée par numéro lorsque votre champ est un nombre.

<?php
$ meta_query_args = array (
'post_type' => 'page' ,
'order' => 'ASC' ,
'meta_key' => 'city_name' ,
'orderby' => 'meta_value'
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-orderby-meta-query.php hosted with by GitHub