WordPress 5.6 新增了一个动作挂钩wp_after_insert_post,以允许主题和插件开发人员在文章及其分类项和元数据已更新后运行自定义代码。
原有的save_post和相关动作钩子也可以用于此目的,但这些钩子会在经典编辑器之外的场景中(例如,在REST API、定制器中以及创建自动草稿时),在分类项和元数据被更新之前触发。
新钩子最多发送三个参数:
$post_id已更新的文章ID,为整数。
$post已更新的文章的完整对象,即WP_Post对象。
$updated 该文章是否已更新,为布尔值。
默认情况下,WordPress在wp_insert_post()末尾触发此钩子。该函数中添加了第三个参数,以允许开发人员阻止该挂钩自动触发:
$fire_after_hooks是否插入wp_after_insert_post钩子,布尔值,可选,默认true。
相同的参数已被添加到wp_update_post()作为第三个参数和添加到wp_insert_attachment()作为第五个参数。
如果开发人员调用了这些函数中的任何一个并阻止了钩子触发,则可以预期他们将手动调用新函数wp_after_insert_post()来触发新动作。此新功能需要两个参数:
$post已保存的文章ID或对象,整数或WP_Post对象
$update 文章是否已更新,布尔值。
简单示例
如果您正在调用wp_insert_post()或上面列出的相关函数之一,则如果您随后分别更新文章的分类项或元数据,建议您阻止该钩子运行并手动调用它。例如:
$post_id = wp_insert_post(
array(
‘post_title’ => ‘My post title’,
‘post_content’ => ‘My post content’,
‘post_type’ => ‘my_cpt’,
),
false,
false
);
add_post_meta( $post_id, ‘my_meta_key’, ‘my meta value’ );
wp_after_insert_post( $post_id, false );
// Second parameter is true for an updated post.
了解更多,请看官方日志。