Role and capabilities - mdhemalakhand1999/WordPressPluginDevelopment GitHub Wiki

Roles And Capabilities
————————————————————————————————-
When we create a user, we can add different type of capabilities, which is manage by Roles.

Get current User Details
————————————————————
we can get current user details by get_current_user() function/method.
Example:
<?php
$user = get_current_user();
if(is_user_logged_in()) {
echo “current user logged in”;
var_dump($user);
}

Get Any user by user id
————————————————-
We can get any user info by WP_User() class
Example:
<?php
$user_id = 3; // your user id
$user = new WP_User($user_id);
print_r($user);

Get current User Roles
—————————————-
We can get current user all roles. Like this
Example:
<?php
$user_id = 3; // your user id
$user = new WP_User($user_id);
foreach($user→roles as $role) {
echo $role. “\n”;
}

Also we can get current user all roles.
Example:
<?php
$user = new get_current_user();
foreach($user→roles as $role) {
echo $role. “\n”;
}

For details about roles and capabilities: https://developer.wordpress.org/plugins/users/roles-and-capabilities/

Get user all capability list
————————————
We can get all capabilities using this code:

<?php
$user = new get_current_user();
var_dump($user→allcaps);

Check user capability
——————————————

<?php
// If we went check current user capabilities
if(current_user_can( ‘delete_others_pages’)) {
echo “Yes, he/she can delete other pages”;
}
// if we went other user capabilities
$user = new WP_User(2); // 2 is uer_id
$cap = “manage_options”;
if($user→has_cap($cap)) {
echo “He can manage”. $cap;
} else {
echo “He can’t manage”
}

Create new user programmatically….
————————————

We can create a User using wp_create_user()
Example:

wp_create_user( $username:string, $password:string, $email:string )

[Note: By default, it takes ‘subscriber’ role]

Add Role programmatically
——————————————-
We can add user Roles programmatically.
First remove previous role ( if needed )
Then add new Role
Example:

<?php
$user = new WP_User(3);
$user→remove_role( ‘subscriber’ );
$user→add_role( $role:string, $display_name:string, $capabilities:array )
print_r($user)

Login a user programmatically
——————————————————————-
For login a user programmatically we can user
wp_authenticate( string $username, string $password ): WP_User|WP_Error

Example:

<?php

$user = wp_authenticate( ‘user_name’, ‘user_password’ );
if(is_wp_error( $user )) {
echo “Failed”;
} else {
wp_set_current_user($user→ID); // set user data
echo wp_get_current_user()→email; // get user email
wp_set_auth_cookie( $user→ID ); // set cookie after successfull logged in
}

Login Using WP_Signon()
———————————————

We can also login a user using wp_signon( array $credentials = array(), string|bool $secure_cookie = '' ): WP_User|WP_Error

Example:

<?php

$user = wp_signon([
‘user_login’ => ‘username’,
‘user_password’ => ‘password’,
‘remember’ => true
]);
if(is_wp_error( $user )) {
echo “Failed”;
} else {
wp_set_current_user($user→ID); // set user data
echo wp_get_current_user()→email; // get user email
}

Login using ID
—————————
We can also login using user id
Example: wp_set_auth_cookie( $user_id:integer, $remember:boolean, $secure:boolean|string, $token:string )

Get users from specific role
———————————-
We can get user from specific role using get_users( array $args = array() ): array

Example:

<?php
$users = get_users( [‘role’ => ‘editor’, ‘orderby’=> ‘email’, ‘order’=> ‘desc’] );
print_r($users);

Change User Role
—————————————————————————————
We can change user role like this:

<?php
$user = new WP_User(3);
$user→remove_role( ‘editor’ );
$user→add_role(‘author’);
print_r($user);

Create a new custom role
———————————————-
We can create a custom role using

$role = add_role( $role:string, $display_name:string, $capabilities:array )

Example:

<?php
$role = add_role(‘super_author’, ‘Super Author’, [
‘read’ => true,
‘delete_posts’ => true,
‘edit_posts’ => true,
‘custom_cap_one’ => true,
‘custom_cap_two’ => true
]);
print_r($role);

Now let’s insert this role to our user

<?php
$user = new WP_User(3);
$user→add_role(‘super_author’);
print_r($user);

Let’s check capabilities
——————————

<?php
$user = new WP_User(3);
if($user→has_cap(‘custom_cap_one’)) {
echo “Capabilities exists”;
}

⚠️ **GitHub.com Fallback** ⚠️