更新帖子时,会触发一些挂钩:
\'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 );
不会执行任何操作,因为该操作是在激发挂钩后添加的。这里很容易识别,在现实世界中,代码并不总是这样。