[wp-hackers] Custom Post Type with contributor-like capabilities?
Jake Goldman
wphackers at jakemgold.myfastmail.com
Fri Jun 25 21:50:22 UTC 2010
I will experiment more with that, but let me flesh out my (I think
legitimate) use case.
if ( !get_role('guestblogger') )
{
$caps = get_role('subscriber')->capabilities;
$caps = array_merge( $caps, array( 'guest_blog' => true ) );
add_role( 'guestblogger', 'Guest Blogger', $caps );
// add guest blogger capability to others
$role = get_role( 'administrator' );
$role->add_cap('guest_blog');
$role = get_role( 'adminlite' );
$role->add_cap('guest_blog');
$role = get_role( 'editor' );
$role->add_cap('guest_blog');
$role = get_role( 'author' );
$role->add_cap('guest_blog');
}
register_post_type( 'guest-blogs', array(
'label' => 'Guest Posts',
'singular_label' => 'Guest Blog Post',
'description' => 'Guest blog posts from the members.',
'public' => true,
'capability_type' => 'post',
'capabilities' => array( 'edit_posts' => 'guest_blog' ),
'supports' =>
array('title','editor','comments','revisions','author','excerpt'),
'menu_position' => 6
));
The idea here, anyhow, is that I don't want to add a bunch of new
capabilities to administrators, editors, and authors (who should full
access to guest posts). I want most of the new content type's
capabilities to inherit those of "posts". In other words, if a role has
the capability to "publish_posts", it should be able to publish "guest
posts" (without a new capability). I /only/ want a unique capability for
basic, contributor-like "edit_posts".
Perhaps I simply need to add unique, strictly named capabilities for
'edit_post' and 'delete_post'? Or am I fundamentally missing something here?
Thanks for the input.
Jake
On 6/25/2010 5:27 PM, Andrew Nacin wrote:
> On Fri, Jun 25, 2010 at 4:16 PM, Jake Goldman<
> wphackers at jakemgold.myfastmail.com> wrote:
>
>> I'm attempting to create a custom post type "guest blogs" with a
>> contributor-like custom role, "guest blogger".
>>
>> When registering the custom post type, I pass a custom capability for
>> "edit_posts" using the "capabilities" argument ("guest_blog"). The "guest
>> blog" capability is added to the new custom "guest blogger" role, as well as
>> a few other roles (like administrator).
>>
> If you use a capability type like "gpost", which defaults to "post" then
> WordPress will automatically generate the edit_gposts, publish_gposts,
> delete_gposts (etc) capabilities for you. Additionally, it will know how to
> properly handle the edit_gpost, publish_gpost, and delete_gpost meta
> capabilities.
>
> If you want finer grained control, you can individual name each of the
> capabilities WP would otherwise generate for you based on the capability
> type.
>
> See register_post_type() and get_post_type_capabilities(), in
> wp-includes/post.php.
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
More information about the wp-hackers
mailing list