Я использовал фильтр
wp_insert_post_empty_content если результат вернет true пост не создается.
add_filter( 'wp_insert_post_empty_content', 'check_list_post', 99, 2 );
function check_list_post($maybe_empty, $postarr)
{
global $post_type;
if ( $post_type != 'MY_POST_TYPE' ) return $maybe_empty;
if ( true === wp_is_post_revision( $postarr[ 'ID' ] ) || $postarr['post_status'] == 'auto-draft' ) {
return $maybe_empty;
}
if ( isset($_REQUEST['action']) && $_REQUEST['action'] == 'trash' ) {
return $maybe_empty;
}
if ($something_wrong) {
// getFlashMessage()->setMessage('Error: Insert error','error'); // add error to notice
return true;
}
return $maybe_empty;
}