We're setting up WordPress as a CMS, as such we'd like to completely hide the Posts tab from the admin menu. Using a plugin, we have created several roles and assigned different capabilities.
We'd like to have some roles that are able to edit site menus. Giving them the edit_theme_options capability allows them to get to the menu screen. Once there they can edit, delete menu items, and even create new menus, but unless I also give them the edit_posts capability, they are unable to add new menu items. They can add a menu item by clicking on "Add to menu", but after they click on "Save menu", the item disappears and no users can see it.
We've looked around for some solutions and the best thing we've found was to try reassigning the capabilities by changing the $wp_post_types['nav_menu_item']->cap object, but that doesn't seem to have any effect.
Looking into the database, I noticed that when a user without edit_posts adds a menu item, it's being added to the wp_posts table, but there's no corresponding row in the wp_terms_relationships table.
Without digging more into the WordPress code, we're kind of stuck at this point. So is there a way to allow users to add menu items to a menu without giving them the edit_posts capability?