howto

Adding a custom post type as a sub-menu of Posts

Here we set the “movies” post type to be included in the sub-menu under Posts.

register_post_type( 'movies',
array(
'labels' => array(
'name' => __( 'Movies' ),
'singular_name' => __( 'Movie' )
),
'public' => true,
'has_archive' => true,
'show_in_menu' => 'edit.php'
)
);

If you have a taxonomy registered to the custom post type it will need to be added to the page as well.

In add_submenu_page() the first argument is the page to assign it to and the last is the menu slug.

add_action('admin_menu', 'my_admin_menu');
function my_admin_menu() {
add_submenu_page('edit.php', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre');
}

Adding a custom post type as a sub-menu of another custom post type
To add the pages to another custom post type include the post type’s query string parameter along with the page names.

To add the CPT Movies and its taxonomy Genre under the post type Entertainment adjust the code like this.

edit.php becomes edit.php?post_type=entertainment
edit-tags.php becomes edit-tags.php?taxonomy=genre&post_type=entertainment

register_post_type( 'movies',
    array(
            'labels' => array(
                    'name' => __( 'Movies' ),
                    'singular_name' => __( 'Movie' )
            ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => 'edit.php?post_type=entertainment'
    )
);
add_action('admin_menu', 'my_admin_menu');
function my_admin_menu() {
add_submenu_page('edit.php?post_type=entertainment', 'Genre', 'Genre', 'manage_options', 'edit-tags.php?taxonomy=genre&post_type=entertainment');
}
Previous Post
By
Digital Designer / WordPress Theme Developer

Leave a Reply

Your email address will not be published. Required fields are marked *