El gancho más temprano para obtener $ post / $ posts de manera confiable

8

¿Cuál es la acción más temprana posible que puedo enganchar donde podré acceder a las $post/$postsvariables globales tanto en el extremo delantero como en el trasero? He intentado revisar la referencia del Codex , la referencia de Adam Brown y hojear la fuente varias veces, pero no he tenido mucha suerte en encontrar una buena.

pre_get_postses muy temprano El uso posts_selectionno funciona si desea realizar una segunda llamada get_posts () durante la devolución de llamada; y template_redirectno se ejecuta en el lado del administrador. the_postpuede ser anterior template_redirectal front end, pero tampoco se ejecuta en el back end. Idealmente, me gustaría algo que se ejecute justo antes de que get_post()/get_posts()regrese, pero no veo nada de eso.

He usado el the_postsfiltro en el pasado, pero preferiría una acción porque es más técnicamente correcto.

En este momento solo estoy enganchando dos veces; una vez que se usa template_redirectpara el extremo frontal y otra vez admin_xml_nspara el extremo posterior. Sin embargo, realmente no me gusta, ya que mi lógica no está semánticamente relacionada con ninguno de esos ganchos, y parece que esta es una necesidad muy común y debería haber un gancho como "post_get_posts" (ala pre_get_posts) que funcione a ambos lados.

Ian Dunn
fuente

Respuestas:

12

Para todas las páginas de administración y las páginas frontales, excepto las pantallas de edición de publicaciones individuales ( wp-admin/post.php), 'wp'es el gancho más confiable para obtener los valores globales.

http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-includes/class-wp.php.source.html#l486

Puede ver allí que se dispara inmediatamente después de los WP::main()incendios WP::register_globals(). El problema con el uso de cosas como post_resultsy get_postses que se ejecutará cada vez que realice una consulta de publicaciones. 'wp'solo se activa en la función WP::main(), que es lo que WP core utiliza para ejecutar la consulta de solicitud principal de la página.

Para las pantallas de edición posterior, parece que sería el primer gancho que puede usar de manera confiable 'add_meta_boxes'. Solo debe asegurarse de estar en una página principal al conectarse, aunque pasa el $postobjeto global como segundo argumento (el primero es el $post_typede la publicación actual).

John P Bloch
fuente
4

posts_resultses el filtro en el resultado de la consulta sin procesar. ver línea 2627 pulg wp-includes/query.php.

Milo
fuente