Jusqu'à présent dans cette série, vous avez appris à accéder aux métadonnées WordPress et à utiliser les tableaux dans lesquels elles sont renvoyées. Nous ne faisons pas qu'ajouter des champs personnalisés aux publications WordPress pour pouvoir afficher ces informations, mais également pour les trier..
Maintenant que vous savez comment récupérer et afficher les métadonnées, il est temps d'apprendre à personnaliser la boucle WordPress pour ne renvoyer que les publications contenant des méta-valeurs spécifiques..
Afin de personnaliser les publications renvoyées par WordPress en fonction des champs méta, nous devons utiliser WP_Query
et spécifier un meta_query
. Si, par exemple, nous avions un type de message personnalisé appelé "films" comportant un champ personnalisé appelé "réalisateur", nous pourrions interroger les films dont le réalisateur était le réalisateur de l'un des trois Guerres des étoiles des films.
Regardez le code ci-dessous et voyez si vous pouvez utiliser votre maîtrise des tableaux que vous avez acquis dans la dernière partie pour comprendre ce qui se passe avec le meta_query
, que je vais décomposer ce qui se passe sous le code.
$ sw_args = array ('post_type' => 'films', 'meta_query' => array (array ('key' => 'director', 'value' => array ('George Lucas', 'Richard Marquand', Irvin Kershner '),' compare '=>' IN ',))); $ query = new WP_Query ($ sw_args); if ($ the_query-> have_posts ()) echo 'Films par réalisateurs
'; écho '
Comme vous pouvez le constater, nous avons un tableau de noms de réalisateurs niché dans trois autres tableaux. Démontons-le, morceau par morceau.
Tout d'abord, nous commençons un tableau pour notre WP_Query
args. Après notre premier argument 'post_type', nous commençons un tableau pour héberger notre meta_query
arguments.
À l'intérieur de cela, nous spécifions la clé à rechercher - dans le cas "directeur". Nous fournissons également un tableau de valeurs à rechercher dans cette clé.
Le dernier argument est de savoir comment comparer ces valeurs. Dans ce cas, nous spécifions "IN" pour récupérer toutes les publications avec ces valeurs dans le directeur de clé..
Et si nous voulions des films qui ont été réalisés par le réalisateur d'un film de Star Wars, mais ne voulions pas exclure les films Star Wars Prequels? Nous pouvons simplement ajouter un autre tableau d’arguments à notre meta_query
, mais cette fois pour la valeur utiliser un tableau de ces titres de films pour la clé titre de film
et pour comparer, utilisez 'NOT LIKE' pour exclure les publications qui ont ces valeurs dans le titre de film
champ.
$ sw_args = array ('post_type' => 'films', 'meta_query' => array (array ('key' => 'director', 'value' => array ('George Lucas', 'Richard Marquand', Irvin Kershner '),' compare '=>' IN ',), array (' key '=>' film_title ',' value '=>' Phantom Menace ',' Attaque des clones ',' Revenge of the Sith ' ), 'compare' => 'NOT LIKE'),)); $ query = new WP_Query ($ sw_args);
Désormais, WordPress recherchera les films de ces trois réalisateurs, dont le titre n’est pas l’un des trois précédents..
Jusqu'à présent, je vous ai montré comment utiliser WP_Query
pour trouver des publications qui ont des valeurs spécifiques pour un champ personnalisé, mais pas comment afficher ces champs.
Afficher ces champs est à peu près la même chose qu'auparavant, mais au lieu d'utiliser get_the_ID ()
spécifier un identifiant pour get_post_meta ()
nous le spécifions dans un contexte d'objet. Donc, dans notre boucle, que vous pouvez voir ci-dessous, l'ID est récupéré un peu différemment en utilisant $ query-> post-> ID
.
$ sw_args = array ('post_type' => 'films', 'meta_query' => array (array ('key' => 'director', 'value' => array ('George Lucas', 'Richard Marquand', Irvin Kershner '),' compare '=>' IN ',), array (' key '=>' film_title ',' value '=>' Phantom Menace ',' Attaque des clones ',' Revenge of the Sith ' ), 'compare' => 'NOT LIKE'),)); $ query = new WP_Query ($ sw_args); if ($ the_query-> have_posts ()) echo 'Films par réalisateurs
'; écho '
Juste comme dans la dernière partie quand nous avons utilisé WP_Query
pour trouver des publications avec certaines valeurs pour divers champs personnalisés, nous pouvons utiliser WP_Query
Equivalent de la table des utilisateurs WP_User_Query
.
Par exemple, si nous avions un champ personnalisé appelé subscriber_level
et voulait trouver uniquement les utilisateurs qui avaient le niveau d'abonné de extra spécial
ou super spécial
Nous avons pu, à peu près de la même manière, rechercher des films réalisés par les trois réalisateurs des films Star Wars:
$ args = array ('meta_query' => array (array ('key' => 'subscriber_level', 'value' => array ('extra_special', 'super_special'); 'compare' '=>' = ')) ; $ user_query = new WP_User_Query ($ args); if (! empty ($ user_query-> résultats)) echo 'Utilisateurs Extra et Super Spéciaux
'; écho '
Comme avec WP_Query
, nous pouvons combiner différentes comparaisons pour contrôler davantage les utilisateurs renvoyés par notre requête. Cet exemple suivant combine la dernière requête avec une requête, cette fois-ci du wp_users
se table pour tous les utilisateurs dont les noms sont Luke, Han ou Leia.
$ args = array ('meta_query' => array (array ('key' => 'subscriber_level', 'value' => array ('extra_special', 'super_special'); 'compare' '=>' = ')), 'search' => array ('Luke', 'Han', 'Leia'), 'search_columns' => array ('user_nicename', 'display_name'),); $ user_query = new WP_User_Query ($ args); if (! empty ($ user_query-> résultats)) echo 'Utilisateurs Extra Spéciaux et Super Spéciaux Nommés Luke, Han ou Leia
'; écho '
Dans cette série, vous avez été initié aux métadonnées WordPress et appris quelques leçons sur les concepts de base de PHP tout au long du processus..
Vous avez appris à extraire les valeurs des champs stockant les métadonnées de publication et d'utilisateur et à construire des requêtes pour les publications et les utilisateurs en fonction de métadonnées. Avec ces connaissances, vous êtes prêt à utiliser quelques champs personnalisés et à utiliser WordPress comme système de gestion de contenu complexe..