webentwicklung-frage-antwort-db.com.de

Frühester Haken, um zuverlässig $ post/$ posts zu erhalten

Was ist die frühestmögliche Aktion, in die ich mich einklinken kann, um auf die globalen $post/$posts -Variablen sowohl am vorderen als auch am hinteren Ende zuzugreifen? Ich habe versucht, in der Codex-Referenz , Adam Browns Referenz nachzuschlagen und die Quelle mehrmals zu durchsuchen, hatte aber nicht viel Glück, eine gute zu finden.

pre_get_posts ist zu früh; Die Verwendung von posts_selection funktioniert nicht, wenn Sie während des Rückrufs einen zweiten get_posts () -Aufruf tätigen möchten. und template_redirect läuft nicht auf der Admin-Seite. the_post ist möglicherweise früher als template_redirect für das Front-End, läuft aber auch nicht auf dem Back-End. Idealerweise möchte ich etwas, das unmittelbar vor der Rückkehr von get_post()/get_posts() ausgeführt wird, aber ich sehe so etwas nicht.

Ich habe in der Vergangenheit den the_posts-Filter verwendet, bevorzuge jedoch eine Aktion, da diese technisch korrekter ist.

Im Moment bin ich nur zweimal dabei; einmal template_redirect für das Frontend und noch einmal admin_xml_ns für das Backend. Ich mag das allerdings nicht wirklich, da meine Logik nicht semantisch mit einem dieser Hooks verwandt ist, und es scheint, dass dies ein sehr häufiges Bedürfnis ist und es einen Hook wie "post_get_posts" (ala pre_get_posts) geben sollte funktioniert auf beiden seiten.

8
Ian Dunn

Für alle Administrationsseiten und Front-End-Seiten mit Ausnahme der einzelnen Post-Edit-Bildschirme (wp-admin/post.php) ist 'wp' der zuverlässigste Hook zum Abrufen der globalen Werte.

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

Sie können dort sehen, dass es unmittelbar nach WP::main() fires WP::register_globals() ausgelöst wird. Das Problem bei der Verwendung von Dingen wie post_results und get_posts besteht darin, dass sie jedes Mal ausgeführt werden, wenn Sie eine Abfrage nach Beiträgen durchführen. 'wp' wird nur in der Funktion WP::main() ausgelöst, die WP core verwendet, um die Hauptanforderungsabfrage der Seite auszuführen.

Für Post-Edit-Bildschirme sieht es so aus, als ob der erste Haken, den Sie zuverlässig verwenden können, 'add_meta_boxes' wäre. Sie müssten nur sicherstellen, dass Sie sich beim Hook-In auf einer Kernseite befinden, obwohl das globale $post-Objekt als zweites Argument übergeben wird (das erste ist der $post_type des aktuellen Posts).

12
John P Bloch

posts_results ist der Filter für das unformatierte Abfrageergebnis. Siehe Zeile 2627 in wp-includes/query.php.

4
Milo