When you create a custom post type, does that also create capabilities for editing/deleting that post type automatically?

For example, if I create a post type called "destinations" does that automatically create capabilities like "edit_destinations" or "delete_destinations"?

Topic capabilities custom-post-types Wordpress

Category Web


Define a central variable for the custom post type: public $post_type_1 = 'archiv';

and use this on add new capabilities:

        $capabilities = array(
            'edit_post'          => 'edit_' . $this->post_type_1,
            'edit_posts'         => 'edit_' . $this->post_type_1 . 's',
            'edit_others_posts'  => 'edit_others_' . $this->post_type_1 . 's',
            'publish_posts'      => 'publish_' . $this->post_type_1 . 's',
            'read_post'          => 'read_' . $this->post_type_1,
            'read_private_posts' => 'read_private_' . $this->post_type_1 . 's',
            'delete_post'        => 'delete_' . $this->post_type_1
        );

Also i add this new capabilties objects to the differnet default roles, only on activation of the plugin:

        foreach ( $this->todo_roles as $role ) {
            $wp_roles->add_cap( $role, 'edit_'          . $this->post_type_1 );
            $wp_roles->add_cap( $role, 'edit_'          . $this->post_type_1 . 's' );
            $wp_roles->add_cap( $role, 'edit_others_'   . $this->post_type_1 . 's' );
            $wp_roles->add_cap( $role, 'publish_'       . $this->post_type_1 . 's' );
            $wp_roles->add_cap( $role, 'read_'          . $this->post_type_1 );
            $wp_roles->add_cap( $role, 'read_private_'  . $this->post_type_1 . 's' );
            $wp_roles->add_cap( $role, 'delete_'        . $this->post_type_1 );
            $wp_roles->add_cap( $role, 'manage_'        . $this->taxonomy_type_1 );
        }

        foreach ( $this->read_roles as $role ) {
            $wp_roles->add_cap( $role, 'read_' . $this->post_type_1 );
            $wp_roles->add_cap( $role, 'read_' . $this->post_type_1 );
            $wp_roles->add_cap( $role, 'read_' . $this->post_type_1 );
        }

        global $wp_rewrite;
        $wp_rewrite->flush_rules();

But, you must also unregister this objects, when the plugin will be uninstalled.

You can see an example on this gist: https://gist.github.com/978690


It does not automatically create that capability in the sense that there is no new capability registered with WordPress. Instead it defaults to use the capabilities assigned to creating/editing posts. For example, if an author logs in they will be able to create and publish a new destination entry by default.

You can override this with the capabilities value when using register_post_type. See Justin Tadlock's excellent tutorial here http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress

About

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