Quelle est l'action la plus précoce possible à laquelle je peux m'attacher pour pouvoir accéder aux variables globales $post/$posts
à l'avant et à l'arrière? J'ai essayé de parcourir la référence du Codex , la référence d'Adam Brown et de parcourir la source à plusieurs reprises, mais je n'ai pas eu beaucoup de chance d'en trouver une bonne.
pre_get_posts
est trop tôt; L'utilisation de posts_selection
ne fonctionne pas si vous souhaitez effectuer un deuxième appel à get_posts () pendant le rappel; et template_redirect
ne fonctionne pas du côté de l’administrateur. the_post
est peut-être antérieur à template_redirect
pour le serveur principal, mais il ne s'exécute pas non plus sur le serveur principal. Idéalement, j'aimerais que quelque chose fonctionne juste avant le retour de get_post()/get_posts()
, mais je ne vois rien de tel.
J'ai déjà utilisé le filtre the_posts
, mais je préférerais une action car elle est plus correcte techniquement.
En ce moment, je suis juste accroché deux fois; une fois en utilisant template_redirect
pour le frontal, et encore en utilisant admin_xml_ns
pour le back-end. Je n'aime pas vraiment cela, cependant, puisque ma logique n'est pas sémantiquement liée à l'un de ces crochets, et il semble que ce soit un besoin très courant et qu'il devrait y avoir un crochet comme "post_get_posts" (ala pre_get_posts
) qui fonctionne des deux côtés.
Pour toutes les pages d'administration et les pages frontales, à l'exception des écrans de post-édition individuels (wp-admin/post.php
), 'wp'
est le hook le plus fiable pour obtenir les valeurs globales.
http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-includes/class-wp.php.source.html#l486
Vous pouvez voir qu'il se déclenche immédiatement après que WP::main()
ait déclenché WP::register_globals()
. Le problème avec l'utilisation d'éléments tels que post_results
et get_posts
est qu'il s'exécutera chaque fois que vous effectuez une requête pour des publications. 'wp'
ne se déclenche que dans la fonction WP::main()
, ce que WP core utilise pour exécuter la requête principale de la page.
Pour les écrans de post-édition, il semble que le premier hook que vous pouvez utiliser de manière fiable serait 'add_meta_boxes'
. Vous devez simplement vous assurer que vous êtes sur une page principale lorsque vous vous connectez, bien que l'objet global $post
soit le deuxième argument (le premier étant le $post_type
de la publication en cours).
posts_results
est le filtre sur le résultat de la requête brute. voir la ligne 2627 dans wp-includes/query.php
.