Панель администратора WP скрыта на интерфейсе?

Я использую функцию, чтобы скрыть панель администратора 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 панель администратора не отображается в интерфейсе. Может ли кто-нибудь сказать мне, что я делаю неправильно?

РЕШЕНИЕ: приведенный выше код работает

В какой функции вы применяете этот код?

Sami Ahmed Siddiqui 19.07.2019 14:19

Я только что вставил это в свой файл function.php

PelHout 19.07.2019 14:21
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
490
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Пытаться,

//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);
}

С помощью этой функции панель администратора появляется для посетителей

PelHout 19.07.2019 13:58

Похоже, проблема с созданной вами ролью посетителя. Кроме того, хук «after_setup_theme» выглядит неправильно. вы можете удалить это и поместить код непосредственно из условия или изменить хук.

Jaydip Nimavat 19.07.2019 13:59

Я тоже так думал, но как это исправить ха-ха

PelHout 19.07.2019 14:01

Я изменил свой код, но результат тот же. Стоит ли мне работать с !is_user_logged_in() ?

PelHout 19.07.2019 14:05

Изменил мой код на то, что он есть сейчас, и похоже, что это решение;)

PelHout 19.07.2019 14:06

С помощью вашего кода вы можете выбрать для каждого пользователя, что они могут видеть?

PelHout 19.07.2019 14:13

Обновленный код активирует панель администратора только для пользователей с правами администратора.

Jaydip Nimavat 19.07.2019 14:17

Убедитесь, что Показывать панель инструментов при просмотре сайта отмечен в ваших пользовательских настройках.

Используйте фильтр 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;
    }
}

Ссылка: https://cpothemes.com/disable-wordpress-admin-bar

Другие вопросы по теме