Support » Plugins » Adding a custom post types to a custom menu in wp-admin

  • I’m running into a problem with placing a custom post type submenu in a custom menu. I declare a new menu and CPT like this gist.

    I create a role that can edit this CPT type, but not standard posts. Visiting the directory at /wp-admin/edit.php?post_type=sample_cpt is fine, as is editing a specific post. However, adding a new sample_cpt fails for users of this role (this happens at /wp-admin/post-new.php?post_type=sample_cpt).

    The cause seems to be that user_can_access_admin_page() returns false at the end of wp-admin/includes/menu.php. user_can_access_admin_page() returns false because $parent is empty, and the key: edit.php with the $pagenow of post-new.php is set, unless the user has the edit_posts capability. The return false happens at line 1694 here: https://core.trac.wordpress.org/browser/trunk/src/wp-admin/includes/plugin.php#L1684

    If I set $parent in user_can_access_admin_page() or return it from the function that creates it (it’s calculated in get_admin_page_parent()), it does work as expected. Can anyone think of a way to filter the results of get_admin_page_parent()? I tried adding a parent_filefilter, but the code doesn’t get there before dying. Or some better way to handle this altogether?

    Thanks for any help you can give, and please ask any clarifying questions, because this is hard to explain.

    -David

Viewing 1 replies (of 1 total)
  • workaround
    WordPress 4.3

    add_menu_page('Custom Menu','Custom Menu','edit_sample_cpt','custom_menu','sample_display_function','dashicons-arrow-right',48);
    
    add_submenu_page('edit.php?post_type=sample_cpt,'Add New','Add New','edit_sample_cpt','post-new.php?post_type=sample_cpt);
Viewing 1 replies (of 1 total)
  • The topic ‘Adding a custom post types to a custom menu in wp-admin’ is closed to new replies.