Столкнулся с той же ситуацией, но как это не смешно, помогло регистрировать новые CPT
в одной функции, после объявления объекта (в самом начале)...
add_action('init', 'my_custom_init');
function my_custom_init(){
register_post_type('news', array(
'labels' => array(
'name' => 'Новости',
'singular_name' => 'Новости',
'add_new' => 'Добавить новую новость',
'add_new_item' => 'Добавить новую новость',
'edit_item' => 'Редактировать новость',
'view_item' => 'Просмотреть новость',
'search_items' => 'Найти новости',
'not_found' => 'Новостей не найдено',
'not_found_in_trash' => 'Новостей в корзине не найдено',
'parent_item_colon' => '',
'menu_name' => 'Новости'
),
'public' => true,
'public_querable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => 15,
'supports' => array( 'title', 'editor', 'comments', 'thumbnail', 'custom-fields' )
) );
// and next CPT