我可以在访问全球$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
当前职位的)。