Voici comment récupérer tout message que vous souhaitez avec WP_Query

Si vous avez créé des thèmes simples dans le passé, il est probable que vous n’ayez pas besoin de récupérer des messages par vous-même. Après tout, WordPress charge les 10 derniers messages sur la page principale et les bons messages sur les pages d’archives. Qu’en est-il des scénarios plus complexes? Que faire si vous souhaitez une sorte de plan du site et que vous souhaitez répertorier tous vos messages et pages classées par date?


WP_Query est votre ami, il vous permet de récupérer des articles de la base de données selon vos critères. Vous pouvez récupérer tous les articles d’une même catégorie qui contiennent également certaines balises. Vous pouvez récupérer toutes les pages créées l’année dernière et les publications qui n’ont pas d’image en vedette.

Dans cet article, je vais vous expliquer en détail comment fonctionne WP_Query – commençons!

Une boucle personnalisée

La clé du bon fonctionnement des requêtes personnalisées consiste à maîtriser les arguments que vous pouvez leur transmettre. Avant de regarder cela, créons un rapide "squelette" nous pouvons utiliser pour répertorier les messages. La boucle sur une page d’archive régulière ressemblerait à ceci:

<?php if (has_posts ()): ?>
<?php while (have_posts ()): the_post () ?>

<?php en attendant ?>
<?php else: ?>

<?php endif ?>

Cela fonctionne très bien car avant que la page ne soit chargée, WordPress a déjà récupéré les bons messages. Lorsque nous écrivons une requête personnalisée, nous avons besoin d’une boucle personnalisée. Le code est très similaire, voici:

<?php
$ args = tableau (
‘post_type’ => ‘Publier’,
‘post_status’ => ‘avenir’
);
$ schedule = new WP_Query ($ args);

if ($ prévu->have_posts ()):
?>
<?php while ($ prévu->have_posts ()): $ planifié->la poste() ?>

<?php en attendant ?>
<?php else: ?>

<?php endif ?>

Nous créons une nouvelle requête WordPress en utilisant la classe WP_Query, en lui passant des paramètres pour spécifier les types de publications dont nous avons besoin. Nous appelons ensuite les méthodes has_posts () et the_post () sur notre objet $ schedule.

Si vous débutez dans la programmation orientée objet et que vous ne comprenez pas vraiment pourquoi, ne vous inquiétez pas, vous pouvez toujours utiliser facilement des requêtes personnalisées. Nous allons nous concentrer sur le tableau $ args tout au long de la publication, ce qui sera assez simple.

Arguments simples

Comme je l’ai mentionné, le principal "ensemble de connaissances" en ce qui concerne WP_Query réside dans ses arguments. le Manuscrit les répertorie tous, nous allons jeter un œil aux plus utiles ici.

Certains arguments sont assez simples, comme le paramètre tag ou tag_id. Le premier prend un slug de tag, le dernier un identifiant de tag. Vous pouvez également séparer plusieurs éléments par des virgules ou utiliser des identifiants négatifs pour indiquer que vous souhaitez récupérer les publications ne pas avoir cette balise particulière attachée.

$ args = tableau (
‘post_type’ => ‘Publier’,
‘tag_id’ => «22, 92,44, -21»
);
$ our_posts = new WP_Query ($ args);

L’extrait récupérerait les articles qui ont l’une des trois premières balises attachées, mais pas la quatrième. Bien que ce système soit suffisamment puissant pour des besoins simples, j’utilise généralement la requête de taxonomie beaucoup plus flexible dont je parlerai un peu plus tard..

L’auteur, nom_auteur, chat, nom_catégorie, s (pour les termes de recherche), post_status, post_type sont des exemples de champs plus simples. Notez que certains champs, comme post_status, nécessitent que vous passiez un tableau de statuts si vous souhaitez utiliser plusieurs valeurs.

$ args = tableau (
‘post_type’ => tableau (‘post’, ‘page’),
‘post_status’ => tableau (‘brouillon’, ‘publier’),
‘chat’ => ‘vidéos musicales’
);
$ our_posts = new WP_Query ($ args);

L’exemple ci-dessus récupère tous les articles qui sont soit des pages, soit des articles; sont soit publiés, soit à l’état de brouillon et ont la catégorie musique ou vidéos attribuée. Cela pourrait être utilisé pour afficher les titres de tout contenu actuel ou prévu lié à la musique ou aux vidéos.

Requêtes taxonomiques

Pour des choses simples, utiliser les arguments mentionnés pour récupérer des publications en fonction de catégories ou de balises est suffisant, mais qu’en est-il si vous avez une taxonomie personnalisée ou si vous devez combiner plusieurs paramètres? La réponse réside dans l’argument tax_query qui est lui-même un tableau. Voyons d’abord un exemple.

$ args = tableau (
‘post_type’ => ‘livre’,
‘tax_query’ => tableau (
tableau (
‘taxonomie’ => ‘genre’,
‘field’ => ‘limace’,
‘terms’ => tableau (‘scifi’, ‘thriller’),
‘opérateur’ => ‘PAS DEDANS’,
),
tableau (
‘taxonomie’ => ‘auteur’,
‘field’ => ‘id’,
‘terms’ => tableau (92, 883, 399),
),
‘relation’ => ‘ET’,
),
);
$ query = new WP_Query ($ args);

Ici, nous récupérons quelques publications de notre type de publication “livre”, en ajoutant des paramètres de taxonomie. En utilisant deux tableaux définis dans la requête tax_query, nous avons spécifié que nous voulons extraire les livres écrits par les auteurs 92, 883 ou 399 qui sont ne pas dans le genre science-fiction ou thriller. Le paramètre relation définit la relation entre les deux tableaux. Dans notre cas, c’est une relation «et» qui signifie que les deux conditions doivent être remplies.

Si nous avions utilisé «ou», nous aurions récupéré des livres qui ne font pas partie de la science-fiction ou du thriller ou qui sont écrits par les trois auteurs spécifiés. En clair, cela signifie: je veux voir tous mes livres sauf le genre science-fiction et thriller. Cependant, je veux voir tous les livres de Terry Pratchett, Douglas Adams et Stephen King, quel que soit le genre.

Méta requêtes

Les méta-requêtes sont très similaires aux requêtes de taxonomie dans la structure, mais elles utilisent les données de la post-méta-table pour filtrer les publications. Le code ci-dessous affichera tous les articles publiés qui ont une image en vedette.

$ args = tableau (
‘post_type’ => ‘Publier’,
‘meta_query’ => tableau (
tableau (
‘key’ => ‘_thumbnail_id’,
‘value’ => ”,
‘comparer’ => ‘! =’,
),
),
);
$ query = new WP_Query ($ args);

WordPress stocke l’ID de l’image sélectionnée pour une publication à l’aide du champ _thumbnail_id. Donc, si nous récupérons tous les messages où cette méta-valeur n’est pas vide, nous devrions nous retrouver avec tous les messages qui ont une image en vedette.

Le secret ici est de savoir comment utiliser la propriété et le type de comparaison. Vous pouvez utiliser une multitude de valeurs qui devraient être familières à SQL: ‘=’, ‘! =’, ‘>»,«>= »,«<“,”<= ‘,’ LIKE ‘,’ NOT LIKE ‘,’ IN ‘,’ NOT IN ‘,’ BETWEEN ‘,’ NOT BETWEEN ‘,’ EXISTS ‘(from WordPress 3.5 and up), and’ NOT EXISTS ‘(from WordPress 3.5 et jusqu’à)

La propriété type est généralement importante lorsque vous souhaitez comparer des nombres ou des dates. Les valeurs possibles sont «NUMERIC», «BINARY», «CHAR», «DATE», «DATETIME», «DECIMAL», «SIGNED», «TIME», «UNSIGNED». N’oubliez pas d’utiliser NUMERIC lorsque vous comparez des nombres, dans la plupart des autres cas, vous devriez être bien.

Tout comme avec les requêtes de taxonomie, vous pouvez empiler plusieurs exigences, puis utiliser le paramètre de relation pour spécifier la relation entre elles.

$ args = tableau (
‘post_type’ => ‘Publier’,
‘meta_query’ => tableau (
‘relation’ => ‘OU’,
tableau (
‘key’ => ‘ambiance’,
‘value’ => tableau (‘heureux’, ‘génial’),
‘comparer’ => ‘DANS’,
),
tableau (
‘key’ => ‘le revenu’,
‘value’ => 500,
‘comparer’ => “>”,
‘type’ => ‘NUMERIC’
),
),
);
$ query = new WP_Query ($ args);

L’exemple ci-dessus afficherait les messages d’un journal hypothétique où quelque chose de bien s’est produit. Soit je me sentais heureux ou génial, soit j’ai gagné plus de 500 $ ce jour-là.

Paramètres de date

Les dates peuvent devenir un peu complexes, mais sont très flexibles. le Documentation WP_Query a beaucoup d’exemples si vous avez besoin de plus d’informations.

La récupération de messages à partir d’un certain moment est assez facile. Vous pouvez utiliser l’année, le monthnum, w (semaine de l’année), le jour et quelques autres paramètres pour spécifier une heure. Le code ci-dessous récupérerait tous les messages de mars 2013.

$ args = tableau (
‘post_type’ => ‘Publier’,
‘année’ => 2013,
‘month’ => 3
);
$ query = new WP_Query ($ args);

Si vous souhaitez entrer dans des plages horaires plus complexes, vous devrez utiliser date_query. Cela vous permet de spécifier des plages arbitraires assez facilement, en utilisant un format de tableau familier. L’exemple suivant – gracieuseté du Codex – montre comment récupérer des messages rédigés entre 9 h 00 et 17 h 00 en semaine.

$ args = tableau (
‘post_type’ => ‘Publier’,
‘date_query’ => tableau (
tableau (
‘heure’ => 9,
‘comparer’ => “>= ‘,
),
tableau (
‘heure’ => 17,
‘comparer’ => “<= ‘,
),
tableau (
‘dayofweek’ => tableau (2, 6),
‘comparer’ => ‘ENTRE’,
),
),
);
$ query = new WP_Query ($ args);

Résultats de la commande

L’ordre dans lequel une liste est présentée est tout aussi important que les éléments qu’il contient. Heureusement, WordPress nous offre les paramètres order_by et order. Le paramètre d’ordre est assez simple, vous pouvez utiliser ASC ou DESC pour ordonner ascendant ou descendant.

Le paramètre order_by peut prendre un certain nombre de valeurs: «aucun», «ID», «auteur», «titre», «nom», «type», «date», «modifié», «parent», «rand» , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. La commande par meta_value peut être particulièrement utile. Dans ce cas, n’oubliez pas de spécifier également le champ meta_key.

$ args = tableau (
‘post_type’ => ‘La peinture’,
‘meta_query’ => tableau (
tableau (
‘key’ => ‘prix’,
‘value’ => 50000,
‘comparer’ => “>”,
‘type’ => ‘NUMERIC’
),
),
‘order_by’ => ‘meta_value_num’,
‘meta_key’ => ‘prix’
);
$ query = new WP_Query ($ args);

Cet exemple récupère les tableaux d’une valeur supérieure à 50 000 $ et les classe par ordre croissant de prix. Notez que puisque le prix est stocké sous forme de nombre, j’ai utilisé meta_value_num pour ordonner les résultats, par opposition à meta_value qui serait utilisé pour les chaînes.

Une autre commande qui mérite d’être mentionnée est post__in. Ce post__in est un paramètre à part entière, il vous permet de spécifier un tableau d’ID de post à récupérer. Par défaut, WordPress classe les publications par date, la commande que vous avez spécifiée dans le post__in n’est pas conservée. Si vous utilisez également post__in comme commande par valeur, WordPress conservera la commande.

$ args = tableau (
‘post_type’ => ‘Publier’,
‘post__in’ => tableau (23, 441, 12, 322, 34, 33),
‘order_by’ => ‘post__in’,
);
$ query = new WP_Query ($ args);

Emballer

J’espère qu’il ressort clairement de cette introduction à WP_Query qu’il s’agit bien d’une classe puissante. Il vous permet de récupérer des articles en utilisant vos propres critères d’une manière standard WP. Jetez un oeil à son Documentation pour plus d’informations et de bonnes propriétés et méthodes, cette classe propose de manipuler la requête et la boucle.

WP_Query fait partie de ce qui fait de WordPress un excellent CMS général – la possibilité de récupérer des objets de la base de données de manière modulaire et personnalisable.

Si vous avez des questions, faites-le nous savoir dans les commentaires!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map