Case:
I register_post_type()
3 different CPTs1)
Example: 3 post types named party, event, location. The other needed arguments in the array are left out.
register_post_type(
'party'
,array(
'show_in_menu' // true (for main) or "edit.php?post_type=party (for subentries)
)
);
- Then I set the
'show_in_menu'
argument for the first CPT item (a.k.a “party”) totrue
- The other items get set
'show_in_menu'
to'edit.php?post_type=party
Result:
What’s the point with this? What I expected was that I get “Add New
” menu items for all of them, not only for the main CPT.
How would I do set the arguments to not only get list views, but single new/edit screens as well?
Notes:
I know, that I got an Add New
button in the list view on top next to the title, but I want to know how I could add these links to the admin menu items.
I also know that I can work around with
add_submenu_page(
"edit.php?post_type=party"
,"Add New"
,"Add New"
,"post-new.php?post_type=party"
);
but I’m not interested in the work around. I want to know how this is thought to work out of the box.
1) CPT = short for custom post type
Customizing the menu this way is as for as I can tell, not very friendly. What I had to do recently was custom built the submenu item using
remove_submenu_page
for all the sub menu items and then add them in the order I wanted usingadd_submenu_page
.A simple example
Edit: If you plan on using the
menu_order
filter, it’s pretty simple to get the filter working: Just add this line before it. Else it would skip themenu_order
filter:add_filter( 'custom_menu_order', '__return_true' );
.