Primo hook per ottenere in modo affidabile $ post / $ post


8

Qual è la prima azione possibile a cui posso agganciare dove sarò in grado di accedere alle $post/$postsvariabili globali sia sul fronte che sul retro? Ho provato a consultare il riferimento del Codex , il riferimento di Adam Brown e sfogliare la fonte più volte, ma non ho avuto molta fortuna a trovarne uno buono.

pre_get_postsè troppo presto; L'uso posts_selectionnon funziona se si desidera effettuare una seconda chiamata get_posts () durante il callback; e template_redirectnon funziona sul lato amministratore. the_postpotrebbe essere precedente rispetto template_redirectal front-end, ma non funziona anche sul back-end. Idealmente, vorrei qualcosa che corre subito prima del get_post()/get_posts()ritorno, ma non vedo nulla del genere.

Ho usato il the_postsfiltro in passato, ma preferirei un'azione perché è tecnicamente più corretta.

In questo momento mi sto solo agganciando due volte; una volta usando template_redirectper il front-end e di nuovo usando admin_xml_nsper il back-end. Non mi piace molto, però, poiché la mia logica non è semanticamente correlata a nessuno di questi hook, e sembra che questo sia un bisogno molto comune e dovrebbe esserci un hook come "post_get_posts" (ala pre_get_posts) che funziona su entrambi i lati.

Risposte:


12

Per tutte le pagine di amministrazione e front-end tranne le singole schermate di modifica dei post ( wp-admin/post.php), 'wp'è l'hook più affidabile per ottenere i valori globali.

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

Puoi vedere lì che si accende subito dopo gli WP::main()incendi WP::register_globals(). Il problema con l'utilizzo di cose come post_resultsed get_postsè che verrà eseguito ogni volta che fai una query per i post. 'wp'si attiva solo nella funzione WP::main(), che è ciò che WP core utilizza per eseguire la query di richiesta principale della pagina.

Per le schermate di modifica post, sembra che il primo hook che puoi usare in modo affidabile sarebbe 'add_meta_boxes'. Dovresti solo assicurarti di essere su una pagina principale quando ti colleghi, anche se passa l' $postoggetto globale come secondo argomento (il primo è quello $post_typedel post corrente).


4

posts_resultsè il filtro sul risultato della query non elaborata. vedere la riga 2627 in wp-includes/query.php.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.