Comment et pourquoi l'utiliser • WPShout

By | juin 14, 2019

Formation WordPress

WordPress get_queried_object () Cette fonction a la particularité d’être, à mon avis, la fonction principale la plus utile de WordPress que je ne connaissais pas depuis très longtemps.

get_queried_object () utilise WordPress depuis la version 3.1, mais je viens d’apprendre à ce sujet cette année, tout en parcourant les réponses de Stack Overflow sur la récupération de méta de taxonomie. Apprendre que WordPress avait une fonction prête à l'emploi ressemblait un peu à googler pour «casser une noix de coco» et apprendre que chaque maison est entièrement équipée avec un ciseau à la noix de coco dans un compartiment spécial sous l'évier de la cuisine.

De toute façon, ne sois pas comme moi! Je suis ici pour répandre la bonne nouvelle à propos de get_queried_object ()et pour vous aider à comprendre comment, quand et pourquoi l’utiliser.

Visuellement long de cet article (beaucoup d’images), voici donc un guide de navigation:

  1. Description générale de get_queried_object ().
  2. Quoi get_queried_object () renvoie sur différents types de pages Web sur votre site.
  3. Quelques utilisations pratiques de get_queried_object ().

Quoi get_queried_object () Est-ce que c’est le temps de la pensée floue!

Avant d’aller plus loin: pour comprendre la matière ci-dessous, vous aurez besoin d’une compréhension de base de WP_Query (assez pour savoir ce qu’est une «requête WordPress» en général), et du système de hooks de WordPress (plus précisément des actions).

Éteignez votre cerveau et demandez: «De quoi parle cette page? get_queried_object () vais vous donner ça.

OK, si nous y sommes installés, alors le meilleur moyen de comprendre comment get_queried_object () fonctionne en suivant ces étapes:

  1. Éteignez votre cerveau.
  2. Demandez «De quoi parle cette page?
  3. Pense "get_queried_object () va me donner ça. "

Il n’ya pas que moi qui suis floue: c’est en fait le niveau de détail de la documentation de WordPress.

L'entrée de la bibliothèque de fonctions WordPress pour get_queried_object () est presque entièrement inutile: il indique que le comportement de la fonction est de "Récupérer l’objet actuellement interrogé" revenir valeur en tant que “(objet) Objet interrogé ", et c’est littéralement ça.

Le Codex est un peu mieux. Il énumère quelques possibilités concrètes pour get_queried_object () travaux:

  • Si vous êtes sur un seul post, il retournera l'objet post
  • Si vous êtes sur une page, l’objet page sera renvoyé.
  • Si vous êtes sur une page d’archive, l’objet type post sera renvoyé.
  • Si vous êtes sur une archive de catégorie, il retournera l’objet category
  • Si vous êtes sur une archive auteur, l’objet auteur sera renvoyé.
  • etc.

Utile, mais une grande partie de la formulation n’est pas précise: il n’existe pas de «objet de type publication» dans WordPress, par exemple, mais simplement WP_Post objet avec un autre Type de poste propriété. (Et vous devez aimer le "etc." à la fin.)

get_queried_object () récupère la "chose" qu'une page donnée de votre site a "à propos" et vous la restitue sous forme d'objet PHP.

Tout ce flou vient du fait qu’il est préférable de pense de get_queried_object () de manière floue: d'une manière ou d'une autre, il récupère la "chose" qu'une page donnée de votre site a "à propos" et vous la redonne sous la forme d'un objet PHP.

"Interrogé": "Récupéré de la base de données"

Une chose peut ajouter de la clarté ici: «interrogé» est un terme général qui signifie «extrait de la base de données WordPress». Comme nous l'expliquons ailleurs, pour toute page de votre site Web, WordPress doit extraire une variété d'éléments de la base de données WordPress pour créer cette page.

Quoi get_queried_object () vous rend, quel que soit l’élément central de cette «variété de choses», quel que soit le type d’objet PHP dans lequel il est organisé.

get_queried_object () Exemples: Ce qu'il retourne sur différents types de pages Web

Le code de get_queried_object () elle-même ne pourrait pas être plus simple, car la fonction ne prend aucun argument.

Comprendre la fonction revient à savoir ce qu’elle fera revenir quand appelé. S'il fonctionne correctement, vous récupérerez toujours un type d'objet PHP. dans le get_queried_object () Dans les exemples ci-dessous, vous verrez quel type d’objets vous allez retrouver dans quelles situations et quelles données ils contiennent.

Quand vous appelez get_queried_object () Trop tôt

En premier lieu, vous devez savoir quand, dans la séquence d'activation des crochets de WordPress, appeler get_queried_object (). En particulier, si vous l’appelez trop tôt, cela ne fonctionnera pas.

Dans l'exemple de code ci-dessous, nous accrochons notre get_queried_object () appeler sur le init hook, qui fonctionne très tôt – avant que tout soit interrogé.

add_action ('init', 'wpshout_get_queried_object');
fonction wpshout_get_queried_object () 
var_dump (get_queried_object ());

Le résultat est ci-dessous: get_queried_object () résultats nul.

get_queried_object exemple init hook

En d'autres termes, init est tout simplement trop tôt dans le cycle de vie de WordPress pour appeler get_queried_object () et obtenir quelque chose en retour. Dans le code ci-dessous, nous accrochons deux ou trois crochets d’action différents: le le contenu et wp crochets, en fonction de ce qui fait la var_dump dans un exemple donné facile à lire. Le point commun est que ces deux points d’accouplement se déclenchent assez tard pour que les données clés de la page aient effectivement été interrogées à partir de la base de données.

get_queried_object () sur poteau unique (de type poteau)

Voici le code pour voir ce que get_queried_object () nous donne sur la page Web qui affiche un seul post de type Post:

add_action ('the_content', 'wpshout_get_queried_object');
fonction wpshout_get_queried_object () 
var_dump (get_queried_object ());

Et voici ce que nous récupérons:

Exemple de get_queried_object () single post

L'objet retourné est de type WP_Post, et contient toutes les données dont vous auriez besoin sur la publication unique sur laquelle cette page Web est construite.

Comme nous le verrons, c’est exactement le même résultat que vous obtiendrez pour Pages et pour les publications de tout type de publication personnalisée.

get_queried_object () sur une seule page

Voici le code pour voir ce que get_queried_object () nous donne sur la page Web qui affiche un seul post de type Page:

add_action ('the_content', 'wpshout_get_queried_object');
fonction wpshout_get_queried_object () 
var_dump (get_queried_object ());

Et voici ce que nous récupérons:

Exemple de get_queried_object () page unique

Encore une fois, l'objet retourné est de type WP_Post, et contient des données sur le seul post de type Page sur lequel cette page Web est construite.

get_queried_object () sur un seul poteau de type de poteau personnalisé

Voici le code pour voir ce que get_queried_object () nous donne sur la page Web qui affiche un seul message à partir d'un type de message personnalisé, dans le cas présent «Message personnalisé»:

add_action ('the_content', 'wpshout_get_queried_object');
fonction wpshout_get_queried_object () 
var_dump (get_queried_object ());

Et voici ce que nous récupérons:

get_queried_object () démo de type de post personnalisé

Encore une fois, l'objet retourné est de type WP_Post, et contient des données sur la publication unique de type Publication personnalisée autour de laquelle cette page Web est construite.

get_queried_object () sur la page d'index du blog

Voici le code pour voir ce que get_queried_object () nous donne sur la page d’index du blog (la page Web qui affiche les messages du site):

add_action ('wp', 'wpshout_get_queried_object');
fonction wpshout_get_queried_object () 
var_dump (get_queried_object ());

Et voici ce que nous récupérons:

get_queried_object () index du blog de démonstration

L'objet retourné est de type WP_Post, et cela vous parle de l'index des blogs Page lui-même, pas les posts de type Post qui y sont affichés.

get_queried_object () sur les archives de la taxonomie

Le code suivant va nous montrer comment get_queried_object () nous renvoie sur une page d'archive de taxonomie, qui dans ce cas est une page d'archive pour la catégorie “Test Category”:

add_action ('wp', 'wpshout_get_queried_object');
fonction wpshout_get_queried_object () 
var_dump (get_queried_object ());

Voici ce que nous obtenons:

get) queried_object () term archive démo

C'est un objet de type WP_Term cela nous dit tout sur le terme de taxonomie autour duquel cette page Web est construite. Noter la get_queried_object () n'est pas Parlez-nous des deux messages interrogés (“Single Post” et “Second Single Post”) membres de ce terme de taxonomie. Au lieu de cela, il nous parle du terme lui-même.

get_queried_object () sur les archives des auteurs

Une archive d’auteurs répertorie toutes les publications d’un seul auteur. Ce code:

add_action ('wp', 'wpshout_get_queried_object');
fonction wpshout_get_queried_object () 
var_dump (get_queried_object ());

Donne ce résultat:

get_queried_object () page d'archive d'auteur auteur

C'est un WP_User objet contenant toutes les informations souhaitées sur l'utilisateur auteur lui-même. Encore, get_queried_object () vous parle de la "chose" (un utilisateur) sur laquelle cette page Web est construite –ne pas sur les messages qui sont retournés comme appartenant à cet utilisateur.

get_queried_object () le Date Archives

Cela montre comment get_queried_object () se comporte sur une page d'archive basée sur la date – ici, une archive mensuelle répertoriant toutes les publications d'un mois.

Le code est ici:

add_action ('wp', 'wpshout_get_queried_object');
fonction wpshout_get_queried_object () 
var_dump (get_queried_object ());

Curieusement, cela revient simplement nul:

get_queried_object () exemple d'archive de datePourquoi avons-nous un nul résultat? Il n'y a pas une telle chose comme WP_Date objet, ni les dates ne sont un terme de taxonomie, de sorte qu'il n'y a rien pour get_queried_object () de donner en retour.

Utilisations pratiques et exemples de get_queried_object ()

OK, c’est beaucoup de détails sur ce que get_queried_object () Est-ce que. Ce qui le rend utile?

Personnaliser les titres des pages d'archives

Le code ci-dessous modifie une partie du thème du thème Twenty Nineteen. archive.php modèle:

Et voici à quoi ressemble une page d’archives d’auteurs:

Exemple avec get_queried_object (): personnalisation de l'archive de l'auteur

Comment pourrions-nous obtenir le morceau «Fred» de ce qui précède sans get_queried_object ()? Il n’y aurait pas de façon pénible de le faire, mais c’est exactement ce que get_queried_object () est pour.

Obtenir un nombre de messages dans un terme de taxonomie

Si souvent dans WordPress, vous utilisez WP_Query parler à des paquets de WP_Post objets. Lorsque vous souhaitez parler aux autres structures de données de WordPress, get_queried_object () devient extrêmement utile.

Vous trouverez ci-dessous une modification différente du thème de vingt-dix-neuf ans. archive.php modèle:





	

Juste pour que vous sachiez, il y a compter; ?> messages qui appartiennent au terme prénom; ?>.

Et voici comment cela se comporte sur une page d’archive de terme de taxonomie:

get_queried_object () récupère la démo de taxonomie

Encore une fois, sans parler à le terme de taxonomie, comment pourrions-nous jamais obtenir son compte? Et comment savons-nous à qui nous parlons? Il existe des moyens pénibles de résoudre ce problème, mais c’est précisément ce que get_queried_object () est tout au sujet.

Maintenant vous comprenez get_queried_object ()

get_queried_object () est le WP_Query pour tout le reste de votre site: termes de taxonomie, utilisateurs, etc.

Espérons que les démos et les exemples pratiques ci-dessus vous donnent le sens général de get_queried_object (): il est extrêmement utile de parler à une page Web de votre site. Ou, comme j'aime y penser, get_queried_object () est le WP_Query pour tout le reste de votre site: termes de taxonomie, utilisateurs, etc.

Merci d'avoir lu! Si vous avez des questions ou des idées, laissez-les ci-dessous, ou nous aimerions avoir de vos nouvelles sur notre groupe Facebook.