How to remove UI access to Custom Post Type using direct links?

My goal: A custom post type with a complete custom editor page and post list table.

I have set show_ui to false. It removed the UI section. But if some admin puts direct link (wp-admin/edit.php?post_type=custom_post) in the browser, it takes them to the post table page, and clicking from there takes to editor page. How can I stop this? I don't want anyone to get access to this two pages. I have made two custom pages for them.

Or is there any other better way?

Topic post-editor user-interface custom-post-types Wordpress

Category Web


Yes. Use capabilities! When registering a post type, take a look at the capability_type and capabilities.

You can define a custom capability map for the standard edit_post, delete_post, etc. for your post type.

The thing you remember is, if you customize the capabilities, YOU DON'T HAVE THESE CAPABILITIES EITHER! This means you'll have to get those capabilities on your user role. (probably Administrator?)

You need to then either create a new user role and assign capabilities to it, or just use a plugin like Members which gives you a good interface to create these and assign capabilities to existing roles, as well as creating new roles altogether.

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.