“Custom Post Type” is one of the most powerful WordPress features. By default WordPress supports two post types: post and page.
There are many plugins for creating (and managing) custom post types. However, you can use code to create them.
The “Movie” custom post type
As an example, to create a custom post type for movies, the following code is usually enough:
function add_post_types()
{
// Movie Post Type
register_post_type('movie', [
'public' => true,
'show_in_rest' => true,
'supports' => ['title', 'editor', 'excerpt'],
'labels' => [
'name' => 'Movies',
'add_new_item' => 'Add New Movie',
'edit_item' => 'Edit Movie',
'all_items' => 'All Movies',
'singular_name' => 'Movie'
],
'rewrite' => ['slug' => 'movies'],
'has_archive' => true,
'menu_icon' => 'dashicons-format-video'
]);
}
add_action('init', 'add_post_types');
Remark: even better, use internationalization in labels, eg 'name' => __('Movies', 'yourtextdomain') etc
Where to put the code?
You may put the code in your function.php. However, if you change the theme, you will lose the relevant functionality.
So, the preferred solution is to use the “Must Use Plugins“. Just create a file (eg my-post-types.php) in the folder wp-content/mu-plugins and put the above code.
Customization
There are many options available for customization. Read register_post_type documentation.
Regarding menu icons, see Dashicons (the official icon font of the WordPress admin).
Of course, you can register more than one custom post type.
Result
Entrepreneur | Full-stack developer | Founder of MediSign Ltd. I have over 15 years of professional experience designing and developing web applications. I am also very experienced in managing (web) projects.