在发布/保存帖子之前触发SAVE_POST操作

时间:2013-10-28 作者:Anagio

我试图更新一个帖子元只有在它被保存或更新之后。

我的功能很简单

function update_test( $post_id ) {

  update_post_meta($post_id, \'copied\', \'1\');
  update_post_meta($post_id, \'blurb\', \'this value updated by save_post action\');

}

add_action( \'save_post\', \'update_test\');
当我在添加新帖子时wp-admin/post-new.php 我可以看到这两个自定义字段的值已经更新。字段本身具有高级自定义字段。但在发布/保存和/或更新帖子之前,不应进行更新。为什么这会在新帖子发布后立即更新字段。php表单加载?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

一旦开始创建新帖子,草稿或“空白”就会被保存。这些新职位有post_status 属于auto-draft. 检查这一点,以防止您的回调在那些“空白”post保存时触发。

function update_test( $post_id, $post ) { 
  if (isset($post->post_status) && \'auto-draft\' == $post->post_status) {
    return;
  }
  update_post_meta($post_id, \'copied\', \'1\');
  update_post_meta($post_id, \'blurb\', \'this value updated by save_post action\');
}
add_action( \'save_post\', \'update_test\', 1, 2);
您可能还需要检查DOING_AJAXDOING_AUTOSAVE 常量。

结束

相关推荐