I have registered the custom post types by code. Here is an example:
<?php
function add_custom_post_type_events() {
$labels = array(
'name' => _x( 'Events', 'Post Type General Name', 'sage' ),
'singular_name' => _x( 'Event', 'Post Type Singular Name', 'sage' ),
'menu_name' => __( 'Events', 'sage' ),
'name_admin_bar' => __( 'Event', 'sage' ),
'all_items' => __( 'All Events', 'sage' ),
'add_new_item' => __( 'Add New Event', 'sage' ),
'add_new' => __( 'Add Event', 'sage' ),
'new_item' => __( 'New Event', 'sage' ),
'edit_item' => __( 'Edit Event', 'sage' ),
'update_item' => __( 'Update Event', 'sage' ),
'view_item' => __( 'View Event', 'sage' ),
'view_items' => __( 'View Events', 'sage' ),
'search_items' => __( 'Search Events', 'sage' ),
'not_found' => __( 'No events found', 'sage' ),
'not_found_in_trash' => __( 'No events found in Trash', 'sage' ),
'featured_image' => __( 'Event Cover Image', 'sage' ),
'set_featured_image' => __( 'Set cover image', 'sage' ),
'remove_featured_image' => __( 'Remove cover image', 'sage' ),
'use_featured_image' => __( 'Use as cover image', 'sage' ),
'insert_into_item' => __( 'Insert into event', 'sage' ),
'uploaded_to_this_item' => __( 'Uploaded to this event', 'sage' ),
'items_list' => __( 'Events list', 'sage' ),
'items_list_navigation' => __( 'Events list navigation', 'sage' ),
'filter_items_list' => __( 'Filter events list', 'sage' ),
);
$args = array(
'labels' => $labels,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => null,
'menu_icon' => 'dashicons-media-interactive',
'query_var' => true,
'has_archive' => true,
'hierachical' => false,
'capability_type' => 'post',
'rewrite' => array( 'slug' => 'event' ),
'show_in_rest' => true,
'supports' => array( 'title', 'editor', 'thumbnail' )
);
register_post_type( 'event', $args );
}