是否可以在不调用“save_post”操作挂钩的情况下保存/修改帖子?

时间:2014-09-17 作者:Xeoncross

有一个save_post 保存帖子时运行的挂钩。事实上,修订和自动保存也将此称为挂钩。即使只是将状态从“已发布”更改为“草稿”,也会触发save_post

是否有任何方法(使用普通wp方法)可以could be modified 不打电话save_post? (如编辑自定义字段)

我想知道我是否需要transition_post_statusupdated_postmeta 或者如果save_post 足够了。

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

TL;医生:不,你可以用save_post. 除非您只考虑对元数据“修改帖子”进行编程修改。

(理论上)有一种方法可以在不触发save_post 操作挂钩:直接修改数据库。

但对于一个头脑正常的插件或主题作者来说,都不会走这条路,而对于另一个来说,它也会绕过所有其他可能的动作挂钩。

您提到的其他挂钩适用于完全不同的用例:
update_post_metaupdated_postmeta 仅在元数据更改时运行,即仅编辑标题或内容时不运行
transition_post_status 仅编辑已发布的帖子时不会运行。

如果您认为帖子元数据的程序化更新是对帖子本身的修改,那么您确实需要将其与update_post_meta hook 或者类似的。这个update_post_meta() 函数调用update_metadata() (source on trac) 它将运行几个动作挂钩(参见链接的源代码),但实际上不是save_post.

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴