自WordPress版本3.7起-IIRC-thesave_post
钩子-有关钩子及其用法的更多信息,请访问Code Reference: save_post
和Codex: save_post
- 有第三个参数$update
这可以用来确定。
@参数  ;内景             $post\\U ID  ;Post ID.参数  ;WP\\U Post   $发布       ;Post对象
@参数  ;布尔         $更新  ;这是否是正在更新的现有帖子。
注:
$update
并不总是这样true
– 您可以使用下面的代码自己查看和测试它。然而,它并没有很好的文档记录,可能远远不是最佳名称,因此会产生误导性的预期。下面的代码可以用于一些调试,可以考虑何时拦截代码执行,否则您将看不到信息/消息。我认为,欺骗行为的罪魁祸首是修改和自动保存的处理,这可能会被禁用,但我不推荐,也没有测试过。不确定这是否保证Trac Ticket, 所以我没有打开一个,如果你这么认为,请按照链接自己做。除此之外,如评论中所述,如果您有特定问题,请发布新问题。
add_action( \'save_post\', \'debug_save_post_update\', 10, 3 );
function debug_save_post_update( $ID, $post, $update ) {
echo \'<pre>\';
print_r( $post ); echo \'<br>\';
echo \'$update == \';
echo $update ? \'true\' : \'false\';
//conditions
if( ! $update && $post->post_status == "auto-draft" ) {
// applies to new post
echo \' && $post->post_status == "auto-draft"\';
//die();
} else if ( ! $update ) {
// applies basically to the (auto saved) revision
//die();
} else {
// applies to updating a published post
// when there is a revision, which is normally the case,
// standard behavior of WordPress, then it is considered
// an update, which is where the confusion sets in
// there are other methods, like checking time or post status
// depending on your use case it might be more appropriate
// to use one of those alternatives
//die();
}
echo \'</pre>\';
//die();
}