Функция IS_SUPER_ADMIN() в WordPress 3.0.0: описание и примеры использования

Функция IS_SUPER_ADMIN() в WordPress 3.0.0

Функция is_super_admin() позволяет определить, является ли пользователь администратором сайта. Это полезно в тех случаях, когда нужно настроить доступ для различных пользователей в WordPress.

Время выполнения

  • 1 раз — 0.000055 секунд (очень быстро)
  • 50000 раз — 0.18 секунд (очень быстро)
  • Версии: PHP 7.1.2, WP 4.7.5

Описание

Функция возвращает значение true, если пользователь является администратором, и false в противном случае.

Как использовать

is_super_admin( $user_id );
  • $user_id (int|false) — ID пользователя. Если не указать, функция проверит текущего пользователя. Значение по умолчанию — false.

Примеры использования

Пример 1: Проверка уровня доступа текущего пользователя

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

global $user_ID;

if( is_super_admin( $user_ID ) ) {
    echo 'Привет, главный администратор сети!';
}

Пример 2: Удаление меню "Редактировать" для не супер-администраторов

Этот код удаляет меню "Редактировать" для пользователей, которые не являются супер-администраторами многосайтовой сети.

// Удаляет меню "Редактировать" для пользователей, которые не являются супер-администраторами
if ( ! is_super_admin() ) {
    add_action( 'admin_init', 'wpdocs_remove_edit_menu' );
}

/**
 * Удаление ссылки на редактирование профиля для не-супер-администраторов.
 */
function wpdocs_remove_edit_menu() {
    remove_menu_page('edit.php');
}

Пример 3: Не рекомендуется использовать с WP 4.8 и выше

С момента выхода WordPress 4.8 использование функции is_super_admin не рекомендуется. Вместо этого лучше использовать проверку на возможность setup_network.

if ( current_user_can( 'setup_network' ) ) {
    // выполнять действия
}

Изменения в коде

Функция is_super_admin была введена в версии 3.0.0 и её код выглядит следующим образом:

function is_super_admin( $user_id = false ) {
    if ( ! $user_id ) {
        $user = wp_get_current_user();
    } else {
        $user = get_userdata( $user_id );
    }

    if ( ! $user || ! $user->exists() ) {
        return false;
    }

    if ( is_multisite() ) {
        $super_admins = get_super_admins();
        if ( is_array( $super_admins ) && in_array( $user->user_login, $super_admins, true ) ) {
            return true;
        }
    } elseif ( $user->has_cap( 'delete_users' ) ) {
        return true;
    }

    return false;
}

Связанные функции

  • add_role()
  • author_can()
  • current_user_can()
  • get_editable_roles()
  • get_role()
  • grant_super_admin()
  • map_meta_cap()
  • remove_role()
  • user_can()
  • wp_roles()
  • WP_Roles::add_cap()
  • WP_User::add_cap()

Эти функции позволяют вам управлять ролями и возможностями пользователей в WordPress. Они могут быть полезны в процессе настройки доступа для разных групп пользователей.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *