Reputation: 51
This is my custom post type code and i want to give add, edit, delete permission to subscribers user.
How to allow custom post type (add, edit, delete) for subscriber users in wordpress. Please help me guys Thanks in advance.
add_action( 'init', 'realestate_init' );
function realestate_init() {
$labels = array(
'name' => _x( 'Realestates', 'post type general name', 'your-plugin-textdomain' ),
'singular_name' => _x( 'Realestate', 'post type singular name', 'your-plugin-textdomain' ),
'menu_name' => _x( 'Realestates', 'admin menu', 'your-plugin-textdomain' ),
'name_admin_bar' => _x( 'Realestate', 'add new on admin bar', 'your-plugin-textdomain' ),
'add_new' => _x( 'Add New', 'realestate', 'your-plugin-textdomain' ),
'add_new_item' => __( 'Add New Realestate', 'your-plugin-textdomain' ),
'new_item' => __( 'New Realestate', 'your-plugin-textdomain' ),
'edit_item' => __( 'Edit Realestate', 'your-plugin-textdomain' ),
'view_item' => __( 'View Realestate', 'your-plugin-textdomain' ),
'all_items' => __( 'All Realestates', 'your-plugin-textdomain' ),
'search_items' => __( 'Search Realestates', 'your-plugin-textdomain' ),
'parent_item_colon' => __( 'Parent Realestates:', 'your-plugin-textdomain' ),
'not_found' => __( 'No realestates found.', 'your-plugin-textdomain' ),
'not_found_in_trash' => __( 'No realestates found in Trash.', 'your-plugin-textdomain' )
);
$args = array(
'labels' => $labels,
'description' => __( 'Description.', 'your-plugin-textdomain' ),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'realestate' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
);
register_post_type( 'realestate', $args );
}
// End register custom post type
Upvotes: 4
Views: 6273
Reputation: 4870
To simplify this process, let’s use a function that a roles and assigns them all capabilities required manage (add,edit,publish,delete) our custom post type.
function add_custom_caps() {
// gets the subscriber role
$role = get_role( 'subscriber' );
// This only works, because it accesses the class instance.
// would allow the subscriber to edit others' posts for current theme only
$role->add_cap( 'read' );
$role->add_cap( 'read_post');
$role->add_cap( 'read_private_post' );
$role->add_cap( 'edit_post' );
$role->add_cap( 'edit_others_post' );
$role->add_cap( 'edit_published_post' );
$role->add_cap( 'publish_post' );
$role->add_cap( 'delete_others_post' );
$role->add_cap( 'delete_private_post' );
$role->add_cap( 'delete_published_post' );
}
add_action( 'admin_init', 'add_custom_caps');
This code is fairly straight forward. We have a the WP_Role
object of the current role, then adds our new _post
capabilities to said role using the WordPress add_cap()
function. See the get_role() function on the codex to get a better understanding of what capabilities are available.
Upvotes: 1