更新帖子时,会触发一些挂钩:
\'pre_post_update\'
触发的动作是否before 帖子已更新,传递的参数为2:$post_ID
和$data
这是一个数组all post表的其他数据库列\'transition_post_status\'
是更新时触发的挂钩,并传递3个参数:$new\\u post\\u status,$old_post_status
和$post
(对象)然后,还有另外两个转移钩子被激发,但它们是动态命名的,这意味着激发的有效操作取决于旧的和新的帖子状态。"{$old_status}_to_{$new_status}"
和"{$new_status}_{$post->post_type}"
. 首先只传递post对象作为参数,第二次传递post id和post对象。查找文档here.\'edit_post\'
传递2个参数:$post_ID
和$post
(对象)\'post_updated\'
传递3个参数:$post_ID
, $post_after
(更新后发布对象),$post_before
(更新前发布对象)另一个动态挂钩:"save_post_{$post->post_type}"
这取决于职位类型,例如,对于标准职位\'save_post_post\'
对于页面是\'save_post_page\'
, 此挂钩传递3个参数:$post_ID
, $post
(对象)和$update
这是一个布尔值(true或false),在执行更新时为true,事实上,在第一次保存帖子时也会触发此挂钩- \'
save_post
\' 它在更新和第一次保存时都被激发,并传递前一个钩子的相同3个参数 - \'
save_post_{$post_type}
\' 它在更新和第一次保存时都被激发,并传递前一个钩子的前2个参数终于你有了\'wp_insert_post
\', 它在更新和第一次保存时都会激发,并传递前2个挂钩的相同3个参数
每次更新帖子时,都会触发这些挂钩,无论是通过后端的管理页面还是使用
wp_update_post
或
wp_insert_post
功能。
使用管理页面更新帖子时,会触发其他挂钩,例如\'update_post_redirect\'
或\'post_updated_messages\'
. (参见this 和this WPSE回答使用示例)。
注意,如果您想使用一些hooks参数,这不是第一个,您必须在中显式声明它add_action
呼叫
E、 g.如果您想使用\'$update\'
参数(即第3个)\'save_post\'
需要添加的挂钩3
像$accepted_args
参数打开add_action
(see docs):
// if you don\'t add 3 as as 4th argument, this will not work as expected
add_action( \'save_post\', \'my_save_post_function\', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = \'Is this un update? \';
$msg .= $update ? \'Yes.\' : \'No.\';
wp_die( $msg );
}
最后一个注意事项关于计时:您必须确保
add_action
在触发操作之前调用,否则将不执行任何操作。
E、 g.本规范:
wp_update_post( $post );
add_action( \'save_post\', \'my_function\', 10, 3 );
不会执行任何操作,因为该操作是在激发挂钩后添加的。这里很容易识别,在现实世界中,代码并不总是这样。