以编程方式触发SAVE_POST事件

时间:2017-04-24 作者:TurtleTread

是否有方法触发代码中的后期保存或更新事件?例如do_action(\'save_post\', $post_id);这里的函数似乎暗示需要传入WP\\u POST对象。有没有一种方法可以基本上模仿用所有现有值更新帖子的行为。重点是其他链接到更新后所有触发器的钩子。也许做一个wp_insert_post(), 只是在传递帖子id?

https://developer.wordpress.org/reference/hooks/save_post/
do_action( \'save_post\', int $post_ID, WP_Post $post, bool $update )

2 个回复
SO网友:Martin Zeitler

它是wp_insert_post() vs。wp_update_post() - 更新最终还将调用:

return wp_insert_post( $postarr, $wp_error, $fire_after_hooks );
术语;“一次”;意味着它正在被解雇;“之后”;。

/**
 * Fires once a post has been saved.
 *
 * @since 1.5.0
 *
 * @param int     $post_ID Post ID.
 * @param WP_Post $post    Post object.
 * @param bool    $update  Whether this is an existing post being updated.
 */
do_action( \'save_post\', $post_ID, $post, $update );
插入帖子时,save_post 正在被激发,而$fire_after_hookstrue.
通常情况下,可能需要插入/更新记录,而不仅仅是启动挂钩。。。

SO网友:Welcher

你的问题的答案是打电话do_action 使用正确的参数。然而,我想知道更多关于您为什么这样做的信息-是否有一个以编程方式保存的帖子?

相关推荐

Testing hooks callback

我正在开发一个使用TDD的插件,有一件事我完全没有测试出来,那就是。。。挂钩。我的意思是好的,我可以测试钩子回调,但我如何测试钩子是否真的触发了(自定义钩子和WordPress默认钩子)?我认为一些嘲弄会有所帮助,但我就是想不出我错过了什么。我用WP-CLI安装了测试套件。根据this answer, init 钩子应该触发,但。。。事实并非如此;此外,该代码在WordPress内部工作。根据我的理解,引导程序是最后加载的,所以不触发init是有意义的,所以剩下的问题是:如果触发了挂钩,我该如何测试?谢谢