Я использую функцию, чтобы скрыть панель администратора WP для определенных пользователей со следующим кодом:
//Hide admin bar for subscribers
if (current_user_can('subscriber') || !is_user_logged_in() ) {
// user can't view admin bar
show_admin_bar(false);
}
else {
show_admin_bar(true);
}
Это работает для subscribers
и visitors
, но при входе в систему как administrator
панель администратора не отображается в интерфейсе. Может ли кто-нибудь сказать мне, что я делаю неправильно?
РЕШЕНИЕ: приведенный выше код работает
Я только что вставил это в свой файл function.php
Пытаться,
//Hide admin bar for subscribers
if ( current_user_can('subscriber') || current_user_can('visitor') ) {
// user can't view admin bar
show_admin_bar(false);
} else {
show_admin_bar(true);
}
Обновленный код:
//Hide admin bar for all users except administrators
if ( current_user_can('manage_options') ) {
show_admin_bar(true);
} else {
// All other users can't view admin bar
show_admin_bar(false);
}
С помощью этой функции панель администратора появляется для посетителей
Похоже, проблема с созданной вами ролью посетителя. Кроме того, хук «after_setup_theme» выглядит неправильно. вы можете удалить это и поместить код непосредственно из условия или изменить хук.
Я тоже так думал, но как это исправить ха-ха
Я изменил свой код, но результат тот же. Стоит ли мне работать с !is_user_logged_in()
?
Изменил мой код на то, что он есть сейчас, и похоже, что это решение;)
С помощью вашего кода вы можете выбрать для каждого пользователя, что они могут видеть?
Обновленный код активирует панель администратора только для пользователей с правами администратора.
Убедитесь, что Показывать панель инструментов при просмотре сайта отмечен в ваших пользовательских настройках.
Используйте фильтр show_admin_bar
, чтобы скрыть/отобразить панель администратора.
/**
* Checks if the user belongs to the roles.
*
* @param int/WP_User $user Either user_id or WP_User object.
* @param string/string[] $roles Single roles or array of roles.
*/
function is_user_in_role($user, $roles ) {
// Set user_id to null;
$user_obj = null;
// Check if the $user is integer.
if ( is_int( $user ) ) {
$user_obj = get_user_by( 'id', $user );
}
// Check if the $user is object.
if ( $user instanceof WP_User) {
$user_obj = $user;
}
// Bail if the $user_id is not set.
if ( null === $user_obj) {
return false;
}
// Check if the user belons to the role.
if ( is_string( $roles ) ) {
return in_array( $roles, (array) $user_obj->roles );
}
// Check if the user belongs to the roles.
if ( is_array( $roles ) ) {
$user_belong_to = true;
foreach( $roles as $role ) {
if ( ! in_array( $role, (array) $user_obj->roles ) ) {
$user_belong_to = false;
}
}
return $user_belong_to;
}
// Return false if nothing works.
return false;
}
add_filter( 'show_admin_bar', 'hide_admin_bar' );
function hide_admin_bar() {
$user = wp_get_current_user();
if ( is_user_in_role($user, 'administrator' ) ) {
return false;
} else {
return true;
}
}
В какой функции вы применяете этот код?