2

我有一个适用于我的自定义帖子类型的自定义函数。处理save_post动作时:

add_action( 'save_post', 'my_custom_function' );

我想将帖子状态设置为草稿(以防从外部 api 获取自定义数据时出现问题)。在我的my_custom_function函数中,我有这个小块:

if ($error == true) {
    $override_post = array();
    $override_post['ID'] = $post_id;
    $override_post['post_status'] = 'draft';
    wp_update_post( $override_post );
}

但似乎,在save_post被处理之后,然后post_status被再次设置。

任何人都有一个想法,我应该在哪里挂钩,所以在保存帖子数据时我可以修改它的post_statuspost_date以及其他一些帖子数据信息,这样它们就不会被覆盖?

4

1 回答 1

3

你应该把它挂到wp_insert_post_data. 然后您可以使用这样的函数将您的帖子状态设置为草稿:

add_filter( 'wp_insert_post_data', 'set_post_to_draft', 99, 2 );

function set_post_to_draft( $data, $postarr ) {

  if ( your_condition ) {
    $data['post_status'] = 'draft';
  }

  return $data;
}
于 2013-04-03T10:29:43.023 回答