Travailler avec WP_Query: le guide de l'utilisateur complet

By | janvier 7, 2020

wordpress pour débutant

Ce cours WPShout gratuit est une introduction pas à pas à WP_Query, l'un des systèmes les plus puissants de WordPess. À la fin du cours, vous saurez ce qu’un WP_Query est, et comment et pourquoi utiliser votre propre coutume WP_Querys pour le développement de thèmes et de plugins. C'est vraiment un outil révolutionnaire et puissant à maîtriser pour tous les développeurs de thèmes et de plugins WordPress really

Une chose avant de plonger. Si vous voulez accéder à des vidéos et à des exemples de code supplémentaires sur WP_Query—Et si vous voulez mieux comprendre le développement WordPress en général — jetez un œil à notre cours complet "apprendre le développement WordPress", Opérationnel. C'est le meilleur guide pour le développement de WordPress.

La meilleure façon d'apprendre le développement WordPress

Opérationnel est notre cours complet "apprendre le développement WordPress". Maintenant dans sa troisième édition mise à jour et étendue, il a aidé des centaines d'acheteurs satisfaits à apprendre le développement WordPress de manière rapide, intelligente et approfondie.

Voici ce qu’ils ont à dire:

«Je pense que toute personne intéressée à apprendre le développement WordPress A BESOIN de ce cours. Regarder les vidéos était comme un tas de lumières allumées. »-Jason, développeur WordPress

"Les autres cours que j'ai essayés manquent presque toujours d'explications claires sur la raison pour laquelle WordPress fait les choses d'une certaine manière, ou sur la façon dont les choses fonctionnent ensemble. Up and Running fait tout cela, et tout est expliqué clairement et dans un langage facile à comprendre. »-Caroline, pigiste WordPress

1. WP_Query: Comprendre les bases de la programmation orientée objet

le WP_Query L'API utilise un style de programmation appelé programmation orientée objetou OOP. Chaque WP_Query est en fait un WP_Query Objet, c'est-à-dire une instance individuelle du plus large WP_Widget classe. Si cette configuration n'a pas de sens pour vous, vous voudrez apprendre rapidement les bases de la programmation orientée objet (POO):

Introduction au PHP orienté objet pour les développeurs WordPress

Point clé: classes et objets

Une classe est une description abstraite d'un type de chose. Une fois que vous avez défini une classe dans du code orienté objet, vous créez des objets réels qui contiennent les traits que vous avez définis dans la classe. L'article utilise l'exemple d'une classe Chair:

// Création de la classe Chair
Chaise de classe 
    // Nous listons ici les éléments importants dont disposent tous les présidents,
    // comme "hauteur" et "couleur"


// Création d'un objet Chair
$ mychair = nouveau président;

C'est le fondement de ce que vous devrez savoir dans la POO pour travailler avec WP_Query.

2. La boucle: comment les processus WordPress ont récupéré les lots de publications dans les pages Web

WP_Query fait précisément une chose: il va chercher lots de publications WordPress à partir de la base de données WordPress. Avant d'apprendre WP_Query directement, vous aurez besoin de comprendre le moteur de base de WordPress: la boucle, qui prend ces lots de messages récupérés et les traite, l'un après l'autre, dans le contenu des pages de votre site.

Comprendre la boucle: la façon dont WordPress affiche les publications

Point clé: une boucle de base

La boucle fonctionne sur un ensemble de publications récupérées et les traite une par une. C'est quoi while (have_posts ()) signifie: tant qu'il reste des publications à traiter, continuez à les traiter une par une.

Le traitement est terminé à l'intérieur le tandis que boucle. C'est là que la plupart du balisage HTML va, ainsi que les balises de modèle qui reposent sur la boucle, comme le titre().

Une boucle simple et fonctionnelle comme vous pouvez le voir sur le thème de votre thème index.php ressemble à ça:



		

<? php en attendant; fin si;

La boucle est la façon dont WordPress traite les bundles de publication dans les pages Web. Les prochains articles, sur WP_Query et les sujets connexes, expliquez comment récupérer et utiliser ces ensembles de publications.

3. L'utilisation de base de WP_Query

Cet article couvre l'utilisation standard de WP_Query: écriture de requêtes personnalisées en créant de nouvelles WP_Query objets avec custom $ args, puis parcourez ces requêtes personnalisées pour créer la sortie de page souhaitée.

Présentation de WP_Query

Point clé: création d'un WP_Query avec Custom $ args

Le pouvoir de créer un WP_Query l'objet est dans les arguments personnalisés que vous passez dans le processus de création. Il est préférable d'écrire ces arguments sous la forme d'un tableau associatif, qui reçoit souvent le nom standard $ args.

Le code suivant définit trois arguments qui seront utilisés pour créer un nouveau WP_Query. Cette requête va récupérer:

  1. Les 10 premiers messages,
  2. Dont l'auteur est l'utilisateur Fred,
  3. Dont le type de poste est Publier.
$ args = tableau (
    'posts_per_page' => 10,
    'author_name' => 'fred',
    'post_type' => 'post',
);
$ query = new WP_Query ($ args);

Le résultat final de ce processus est que la valeur de la variable $ query est maintenant le bundle de posts récupéré: un objet PHP avec le contenu complet et les métadonnées des dix posts que notre WP_Query récupéré.

Point clé: boucle via une personnalisation WP_Query

Le processus que nous utilisons pour travailler avec le bundle de messages récupéré stocké dans $ query est presque identique à la boucle. La boucle personnalisée suivante imprime les titres des dix articles récupérés, un par un (puis réinitialise la requête avec wp_reset_postdata () pour éviter les erreurs plus tard dans le traitement):

while ($ query-> have_posts ()) 
$ query-> the_post ();
écho '
  • '. get_the_title (). "
  • » // Restaurer les données de publication d'origine wp_reset_postdata ();

    4. Utilisation WP_Query Objets sans boucle

    Cette section explore WP_Query les objets non pas comme des choses mystérieuses que nous pouvons parcourir, mais comme des objets PHP avec des propriétés bien définies. Être capable de travailler avec WP_Query Les objets permettent directement certaines choses que vous ne pouvez pas faire avec des boucles standard.

    Utilisation d'objets WP_Query sans boucle

    Point clé: Travailler avec WP_Query Objets directement

    UNE WP_Query l'objet a une structure définie et des propriétés et méthodes définies. Par exemple, pour un WP_Query appelé $ query, vous pouvez accéder directement au tableau des articles récupérés avec $ query-> messages, vous pouvez obtenir le titre du premier message récupéré avec $ query-> messages[0]-> post_title, etc.

    Point clé: utilisation des opérations fonctionnelles pour modifier WP_Query Objets

    L'exemple de cet article trie les articles extraits par ordre alphabétique par contenu du message (pas une option avec des requêtes et des boucles personnalisées régulières) avec des méthodologies de tri de la programmation fonctionnelle de base, y compris array_map () et usort (). Vous pouvez apprendre ces fonctions dans l'article et dans notre introduction au PHP fonctionnel pour les développeurs WordPress.

    5. Modification de l'existant WP_Querys avec pre_get_posts

    pre_get_posts est un filtre qui permet de modifier les paramètres d'un existant WP_Query, avant il récupère son bundle de publications à partir de la base de données WordPress, modifiant ainsi le bundle de publications qu'il récupère finalement. C'est plus pratique que d'écrire une coutume WP_Query dans certaines situations, et dans d’autres, c’est pratiquement le seul chemin vers une solution de travail.

    Utilisations pratiques de pre_get_posts

    Point clé: comment modifier une requête existante avec pre_get_posts

    pre_get_posts est un filtre WordPress qui se déclenche immédiatement avant un WP_Query L'objet récupère les publications de la base de données WordPress. L'utilisation de ce filtre permet de modifier directement la requête.

    L'exemple suivant modifie le type de publication qui s'affichera sur l'index de blog d'un site de Publier à page:

    add_filter ('pre_get_posts', 'wpshout_pages_blogindex');
    fonction wpshout_pages_blogindex ($ query) 
    if (is_home () && $ query-> is_main_query ()):
    $ query-> set ('post_type', 'page');
    fin si;
    

    Point clé: utilisation pre_get_posts modifier les requêtes par défaut de WordPress

    Les requêtes par défaut de WordPress, comme celles qui créent votre index de blog et vos pages d'archives, sont difficiles à modifier sans pre_get_posts. La modification de ces requêtes par défaut est le principal cas d'utilisation de pre_get_posts.

    L'exemple réel suivant modifie les principales requêtes qui s'exécutent sur les pages d'archives. Ces requêtes récupèrent désormais les publications d'un nouveau type de publication personnalisé, cours, aux côtés du Publier résultats qu'ils renvoient normalement:

    add_filter ('pre_get_posts', 'wpshout_add_custom_post_types_to_query');
    fonction wpshout_add_custom_post_types_to_query ($ query) 
    if (is_archive () &&
    $ query-> is_main_query () &&
    vide ($ query-> query_vars['suppress_filters'] )
    ) 
    $ query-> set ('post_type', array ('post', 'course'));
    
    

    Nous venons tout juste de commencer… de connaître WP_Query

    J'espère que vous vous sentez maintenant comprendre ce que WP_Query la classe et les objets sont, comment vous pouvez les utiliser pour obtenir à peu près n'importe quel contenu que vous voulez hors de WordPress. Il y a tellement plus de critères de sélection disponibles que nous n'en avons parlé jusqu'à présent. Il y a de bonnes chances que si vous pensez "j'aimerais avoir des messages où …" un voyage au Codex pour découvrir la manière spécifique qui fonctionne à l'intérieur WP_Query vous fera avancer. Vous pouvez filtrer par n'importe quelle taxonomie, n'importe quel champ personnalisé, n'importe quel statut de publication et même si la publication est protégée par mot de passe.

    Bien que nous ayons parlé de beaucoup de choses, nous n'avons rarement couvert beaucoup (ou aucune) des subtilités ringardes de la façon dont WordPress utilise le WP_Query classe. Si vous êtes prêt pour un peu plus de profondeur, je recommande fortement cette conférence d'Andrew Nacin: "You Don't Know Query." (J'ai découvert cela dans le grand post de Brian Krogsgard.)

    Merci d'avoir lu, et comme toujours, nous sommes heureux d'entendre les questions et commentaires ci-dessous!

    Crédit d'image: pixabay