我正在嘗試修改我在 WordPress 網站上使用了一段時間的代碼片段。以前,當具有默認“訂閱者”角色的用戶登錄時,該角色將更改為“目錄用戶”。我已將“管理員”角色排除在更改之外。我想保持這種行為,但我添加了一個新的用戶角色,“目錄貢獻者”,我也不想被更改。我提出了以下代碼,但“目錄貢獻者”角色正在更改為“目錄用戶”。如何修改我的代碼,以免發生這種情況?
function uiwc_change_role()
{
// get WP_user object
$user = wp_get_current_user();
$role = $user->roles;
// if the this is a registered user and this user is not an admin or directory contributor
if (is_user_logged_in() && !user_can($user, 'administrator', 'directory_contributor') && !in_array('directory_user', $role)) {
//set the new role to directory user
$user->set_role('directory_user');
}
}
add_action('wp_footer', 'uiwc_change_role');
uj5u.com熱心網友回復:
您想使用array_intersect,因為 $role 是一個陣列。user_can檢查功能,而不是用戶角色,因此最好將其排除在此處。
init除非您有其他理由不這樣做,否則掛鉤似乎也更明智。
function uiwc_change_role() {
// get WP_user object.
$user = wp_get_current_user();
$role = $user->roles;
// if the user is a registered user and this user is not an admin or directory contributor.
if ( is_user_logged_in() && ! array_intersect( array( 'administrator', 'directory_contributor' ), $role ) ) {
// set the new role to directory user.
$user->set_role( 'directory_user' );
}
}
add_action( 'init', 'uiwc_change_role' );
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/447375.html
