WordPress Create Custom Capability
Asked Answered
I

2

10

I'm developing a shopping cart plugin, and planning to create a new user role for customers.

My question is how to create custom capabilities so that i can assign these custom capabilities to the new user role, this answer provided a way to create new capabilities, but it is just a new name for the original capabilities.

Can anyone explain how to create a brand new capability which controls some custom functions?

Irriguous answered 31/1, 2013 at 2:57 Comment(4)
@maiorano84 Thanks, i've been search around for a while, couldn't find something addressing my exact requirement.Irriguous
wordpress.stackexchange.com/questions/35165/…Eminent
The irony of the "Let me just Google that for you" is that Google brought me hereAntiperiodic
Hi. Did you figure this one out? I'm in kind of the same pickle. I want a capability to edit order status only in WooCommerce.Edraedrea
T
8

You should first understand that Wordpress user roles are simple as set of capabilities. That being said, since you said you are creating a plugin, I like to think you are no stranger to code and hence not afraid to code your solution rather than using another plugin for this.

This code should help you create a new user role and add custom capability to it.

<?php

// create a new user role

function wpeagles_example_role()
{
    add_role(
        'example_role',
        'example Role',
        [
            // list of capabilities for this role
            'read'         => true,
            'edit_posts'   => true,
            'upload_files' => true,
        ]
    );
}

// add the example_role
add_action('init', 'wpeagles_example_role');

To add a custom capability to this user role use the code below:

//adding custom capability
<?php
function wpeagles_example_role_caps()
{
    // gets the example_role role object
    $role = get_role('example_role');

    // add a custom capability 
    // you can remove the 'edit_others-post' and add something else (your     own custom capability) which you can use in your code login along with the current_user_can( $capability ) hook.
    $role->add_cap('edit_others_posts', true);
}

// add example_role capabilities, priority must be after the initial role     definition
add_action('init', 'wpeagles_example_role_caps', 11);

Futher reference: https://developer.wordpress.org/plugins/users/roles-and-capabilities/

Turmeric answered 15/2, 2018 at 16:28 Comment(0)
H
0

You can create custom roles and capabilities by plugin. Two options available there by custom code or you can use existing plugin.

For Custom code: https://wordpress.stackexchange.com/questions/35165/how-do-i-create-a-custom-role-capability

Using existing plugin: User Roles and Capabilities

Hitlerism answered 4/2, 2015 at 4:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.