可靠地获取$POST/$POST的最早挂钩

时间:2011-07-12 作者:Ian Dunn

我可以在访问全球$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) 这对双方都有效。

2 个回复
最合适的回答,由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_resultsget_posts 它将在您每次查询帖子时运行。\'wp\' 仅在函数中激发WP::main(), 这就是WP-core用来运行页面的主请求查询的内容。

对于编辑后屏幕,您可以可靠地使用的第一个挂钩是\'add_meta_boxes\'. 您只需要确保在连接时处于核心页面,尽管它确实通过了全局$post 对象作为第二个参数(第一个是$post_type 当前职位的)。

SO网友:Milo

posts_results 是原始查询结果的筛选器。请参见中的第2627行wp-includes/query.php.

结束

相关推荐

Custom Post Row Actions

我偶然发现this question 在写这个问题的时候。我有一个问题是关于这个问题的。我发现你用的是get_delete_post_link 筛选为我的操作创建一个新的url(或一个类似的函数——在任何情况下,我都会将该函数与布尔值一起使用)。唯一的问题是,I don\'t know how to capture the event now. 考虑到我在谷歌上找不到很多关于行后操作的例子,我将不胜感激-/public function _wp_filter_get_delete_post_link( $