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”;
}