我可以在访问全球$post/$posts 前端和后端的变量?我已经试过了the Codex reference, Adam Brown\'s reference 并且浏览了好几次源代码,但都没有找到一个好的。
pre_get_posts 太早了;使用posts_selection 如果要在回调期间进行第二次get\\u posts()调用,则不起作用;和template_redirect 不在管理端运行。the_post 可能早于template_redirect 对于前端,但它也不在后端运行。理想情况下,我想要的是能在get_post()/get_posts() 返回,但我没有看到这样的情况。
我用过the_posts 过滤过去,但我更喜欢操作,因为它在技术上更正确。
现在我只钓了两次;一次使用template_redirect 对于前端,再次使用admin_xml_ns 对于后端。不过,我真的不喜欢这样,因为我的逻辑在语义上与这两个钩子都不相关,而且这似乎是一个非常普遍的需要,应该有一个类似“post\\u get\\u posts”(阿拉巴马)的钩子pre_get_posts) 这对双方都有效。
最合适的回答,由SO网友:John P Bloch 整理而成
适用于所有管理页面和前端页面,但个别后期编辑屏幕除外(wp-admin/post.php), \'wp\' 是获取全局值的最可靠挂钩。
http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-includes/class-wp.php.source.html#l486
你可以在那里看到它在
WP::main() 火灾
WP::register_globals(). 使用以下内容的问题
post_results 和
get_posts 它将在您每次查询帖子时运行。
\'wp\' 仅在函数中激发
WP::main(), 这就是WP-core用来运行页面的主请求查询的内容。
对于编辑后屏幕,您可以可靠地使用的第一个挂钩是\'add_meta_boxes\'. 您只需要确保在连接时处于核心页面,尽管它确实通过了全局$post 对象作为第二个参数(第一个是$post_type 当前职位的)。