为什么在创建新帖子时会触发SAVE_POST操作?

时间:2011-06-08 作者:Tom Auger

我很惊讶我的函数save_post 当我单击管理仪表板中的“新建帖子”链接时,将触发操作。注意-这是在我按下Save(保存)或Update(更新)之前,它会立即启动,而不是在经过一段时间或自动更新之后。

另一方面,当我随后键入一些内容并按下发布、更新或保存草稿按钮时,我放在动作处理程序中的回显语句不会回显,因此该动作似乎在任何其他时间都不会触发。这可能是无关的。

这是我的代码:

add_action(\'save_post\', \'MyNS\\save_event_metabox\', 10, 2);
function save_event_metabox($post_id, $post){
  echo "<h1>YES!</h1>";
}
当我按“New Post”链接时,此“YES”(是)会回显(在页面顶部),但当我键入内容,然后按“Update”(更新)或“Publish”(发布)或“Save Draft”(保存草稿)时,此“YES”(是)不会回显。这似乎与save_post 行动与未来wp_insert_post() 作用

有人能帮我澄清一下吗?

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

单击“新建帖子”时,您只需加载页面wp-admin/post-new.php.

在这样做的过程中,WordPress将始终创建一篇新文章(“自动草稿”),以确保所有其他功能(如媒体上传)和插件正常工作,甚至在您实际保存草稿或发布文章之前。

而这反过来又会触发save_post. 这就是你的回声。

好吧,为什么我在更新或发布时没有收到回音?

在保存和后续页面加载之间,WordPress实际上发送了GET 重定向回显示为透明的同一页面(您可以通过HTTP监视器看到这一点,例如HttpFox).

换句话说;

单击UpdatePublishsave_post

  • 浏览器遵循重定向并加载“编辑帖子”页面
  • 重定向似乎没有必要(因为您可以POST 但这是一种称为Post/Redirect/Get 在避免duplicate form submissions.

    如果您试图根据连接到的函数的结果打印自定义消息save_post, 退房these questions/answers.

    *严格来说,这并不是真的,您的回音实际上会在发送重定向标头之前发生,但浏览器会放弃它,或者事情发生得太快而无法呈现。

    结束

    相关推荐

    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( $