wordpress将post_status设置为'save_post'动作中的“草稿”

时间:2013-04-03 09:48:49

标签: wordpress wordpress-plugin

我有一个自定义功能,适用于我的自定义帖子类型。在处理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和其他一些后期数据信息,这样它们就不会被重写?

1 个答案:

答案 0 :(得分: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;
}