[wp-trac] [WordPress Trac] #58062: Positioning of custom post type submenu
WordPress Trac
noreply at wordpress.org
Sun Apr 2 22:48:57 UTC 2023
#58062: Positioning of custom post type submenu
--------------------------------+-----------------------------
Reporter: mort1305 | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Menus | Version: 6.2
Severity: normal | Keywords:
Focuses: ui, administration |
--------------------------------+-----------------------------
'''Current Functionality (since 3.1.0):''' One can add a CPT as a submenu
of another CPT by setting the ''show_in_menu'' argument of the
''register_post_type()'' function as
''edit.php?post_type=CUSTOM_CPT_SLUG''. The submenu is then added into
the administration menu by way of the ''_add_post_type_submenus()''
function. When this occurs, the submenu CPT's are displayed in the order
the CPTs were registered.
'''Problem:''' The current coding prohibits the ordering of CPT submenu
items per the programmer's desires in the event CPT registration is unable
to be controlled or in the event other submenu pages are added via the
''add_submenu_page()'' method. This occurs because the call to
[https://developer.wordpress.org/reference/functions/add_submenu_page/#source
add_submenu_page()] by
[https://developer.wordpress.org/reference/functions/_add_post_type_submenus/#source
_add_post_type_submenus()] only passes 5 arguments. (The sixth omitted
argument is what handles menu positioning.)
'''Solution:''' The ''menu_position'' argument passed to the
''register_post_type()'' function already exists, and defines a CPT's
positioning within a menu. The solution is to incorporate this argument
into the core by modifying line 2079 of
[https://core.trac.wordpress.org/browser/tags/6.2/src/wp-
includes/post.php#L2079 wp-includes/post.php] as follows:
{{{
add_submenu_page(
$ptype_obj->show_in_menu,
$ptype_obj->labels->name,
$ptype_obj->labels->all_items,
$ptype_obj->cap->edit_posts,
"edit.php?post_type=$ptype",
is_set($ptype_obj->menu_position) ? $ptype_obj->menu_position : NULL
);
}}}
--
Ticket URL: <https://core.trac.wordpress.org/ticket/58062>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list