您可以使用另一个钩子定义更新时的操作。这个post_updated 挂钩的定义如下:
do_action( \'post_updated\', $post_ID, $post_after, $post_before);
在后期创建时不调用。变量$update设置如下:
// Are we updating or creating?
if ( !empty($ID) ) {
$update = true;
$post_ID = (int) $ID;
} else {
$update = false;
$post_ID = 0;
}
并且hook posts\\u updated在以下if语句中:
if ( $update ) {
do_action(\'edit_post\', $post_ID, $post);
$post_after = get_post($post_ID);
do_action( \'post_updated\', $post_ID, $post_after, $post_before);
}
do_action(\'save_post\', $post_ID, $post);
do_action(\'wp_insert_post\', $post_ID, $post);
要检查它是否是要发布的草稿,您需要检查$post\\U before->post\\U status和$post\\U after->post\\U status。
正如附录所示,这里是对ommit autosave的检查:
if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
return;