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