$UPDATE在SAVE_POST中始终为真

时间:2016-05-05 作者:SinisterBeard

我试图只在使用save\\u post创建文档类型时触发一些代码,但$update始终为true,即使在首次发布它时也是如此。

我想这是因为首先创建了一个autodraft。有什么办法吗?

3 个回复
最合适的回答,由SO网友:Alex Baulch 整理而成

所以请注意,这有点晚了,但我遇到了完全相同的问题,如果您想检查它是否是一篇新文章,那么$update参数几乎是完全无用的。

我解决这个问题的方法是比较$post->post_date 具有$post->post_modified. 下面是完整的代码段。

add_action( \'save_post\', \'save_post_callback\', 10, 3 );

function save_post_callback($post_id, $post, $update) {
    $is_new = $post->post_date === $post->post_modified;
    if ( $is_new ) {
        // first publish
    } else {
        // an update
    }
}
希望这能帮助其他人找到这个。

SO网友:fsenna

一种方法是使用get\\u post\\u status()

根据法典http://codex.wordpress.org/Function_Reference/get_post_status

\'publish\' - A published post or page
\'pending\' - post is pending review
\'draft\' - a post in draft status
\'auto-draft\' - a newly created post, with no content
\'future\' - a post to publish in the future
\'private\' - not visible to users who are not logged in
\'inherit\' - a revision. see get_children.
\'trash\' - post is in trashbin. added with Version 2.9.
在代码中,状态可能是自动草稿或草稿。如果两者的状态均为true,则可能是第一次保存。如果不是,则是更新。

SO网友:SinisterBeard

更可靠的检查方法是$_POST[\'original_publish\'], 因为这将在第一次发布时返回“Publish”,在更新时返回“Update”。

相关推荐