Primeiro gancho para obter com segurança $ post / $ posts

8

Qual é a ação mais inicial possível para a qual eu possa acessar as variáveis globais $post/$posts nas extremidades frontal e traseira? Eu tentei examinar a referência do Codex , A referência de Adam Brown e passando pela fonte várias vezes, mas não teve muita sorte em encontrar uma boa.

pre_get_posts é muito cedo; Usar posts_selection não funciona se você quiser fazer uma segunda chamada get_posts () durante o retorno de chamada; e template_redirect não é executado no lado do administrador. the_post pode ser anterior a template_redirect para o front end, mas também não é executado no back end. O ideal é que eu queira algo que seja executado logo antes de get_post()/get_posts() retornar, mas não estou vendo nada parecido.

Eu usei o filtro the_posts no passado, mas prefiro uma ação porque está mais tecnicamente correto.

Agora mesmo, estou apenas engatando duas vezes; uma vez usando template_redirect para o front end e novamente usando admin_xml_ns para o backend. Eu realmente não gosto disso, já que a minha lógica não é semanticamente relacionada a nenhum desses ganchos, e parece que essa é uma necessidade muito comum e deve haver um gancho como "post_get_posts" (ala pre_get_posts ) que funciona em ambos os lados.

    
por Ian Dunn 12.07.2011 / 20:01

2 respostas

11

Para todas as páginas de administração e front-end, exceto as telas de pós-edição individuais ( wp-admin/post.php ), 'wp' é o gancho mais confiável para obter os valores globais.

enlace

Você pode ver que ele é acionado imediatamente após WP::main() disparar WP::register_globals() . O problema de usar coisas como post_results e get_posts é que ele será executado toda vez que você fizer uma consulta por postagens. 'wp' é acionado somente na função WP::main() , que é o que o núcleo do WP usa para executar a consulta de solicitação principal da página.

Para as telas de pós-edição, parece que o primeiro gancho que você pode usar de forma confiável seria 'add_meta_boxes' . Você só precisa ter certeza de que está em uma página principal quando estiver conectando, embora passe o objeto global $post como o segundo argumento (o primeiro é o $post_type da postagem atual).

    
por John P Bloch 12.07.2011 / 21:15
4

posts_results é o filtro no resultado da consulta não processada. veja a linha 2627 em wp-includes/query.php .

    
por Milo 12.07.2011 / 21:05