Функция is_blog_admin()
в WordPress предназначена для определения, находится ли текущий запрос в административной части конкретного сайта в многосайтовой сети (MultiSite). Она возвращает true
, если текущий экран относится к админке сайта, и false
, если запрос сделан из любой другой части сайта или из админки управления всей сетью.
is_blog_admin(): bool
Возвращаемое значение
- bool: Возвращает
true
, если текущая страница — админка отдельного сайта в сети, иfalse
, если запрос сделан к админке сети, к сайту для пользователей или к внешней части сайта.
Особенности использования
Функция is_blog_admin()
работает позже, чем is_admin()
, и срабатывает только после выполнения хука current_screen
. Это позволяет более точно определить, что текущий запрос относится именно к админке отдельного сайта. В отличие от неё:
is_admin()
возвращаетtrue
для любой страницы админки (сайта или сети).is_network_admin()
проверяет, относится ли текущий запрос к админке всей сети сайтов.is_user_admin()
определяет, находится ли пользователь на страницах настроек профиля в админке.
Примечание: Функция
is_blog_admin()
не проверяет права пользователя. Чтобы узнать, является ли текущий пользователь администратором, рекомендуется использоватьcurrent_user_can()
с нужной привилегией, напримерmanage_options
.
Пример 1: Добавление виджета на главную страницу админки отдельного сайта
В этом примере создается виджет «Активность» в панели администрирования для отдельного сайта сети, отображающий последние действия на сайте. Функция wp_add_dashboard_widget()
вызывается только если is_blog_admin()
возвращает true
.
if ( is_blog_admin() ) {
wp_add_dashboard_widget(
'dashboard_site_activity',
__( 'Site Activity' ),
'wp_dashboard_site_activity'
);
}
В этом случае виджет появится только в панели управления конкретного сайта, но не в административном интерфейсе сети.
Пример 2: Ограничение скриптов и стилей только для админки сайта
Можно использовать is_blog_admin()
для регистрации стилей или скриптов только в админке отдельного сайта, чтобы они не загружались на других страницах, таких как административная панель сети или внешний интерфейс сайта.
function enqueue_custom_admin_scripts() {
if ( is_blog_admin() ) {
wp_enqueue_style( 'custom-site-admin-style', get_template_directory_uri() . '/css/admin-style.css' );
wp_enqueue_script( 'custom-site-admin-script', get_template_directory_uri() . '/js/admin-script.js' );
}
}
add_action( 'admin_enqueue_scripts', 'enqueue_custom_admin_scripts' );
Этот код загружает стили и скрипты только на страницах администрирования конкретного сайта, что помогает сократить количество ненужных запросов и улучшить производительность.
Пример 3: Отправка уведомления при доступе к админке сайта
Функция is_blog_admin()
может быть полезной и для мониторинга активности в админке. Например, можно отправлять уведомление, если кто-то заходит в административную часть сайта:
function notify_on_site_admin_access() {
if ( is_blog_admin() ) {
wp_mail( '[email protected]', 'Site Admin Access', 'Someone accessed the site admin area.' );
}
}
add_action( 'admin_init', 'notify_on_site_admin_access' );
Скрипт проверяет, открыта ли админка конкретного сайта, и отправляет уведомление на указанный email. Это может быть полезно для администраторов, которые хотят отслеживать доступ к административным страницам отдельных сайтов.
Заключение
Функция is_blog_admin()
— удобный инструмент для работы в административной части конкретного сайта в сети WordPress. Она может быть полезна для настройки функционала, добавления виджетов, ограничения доступа к ресурсам и отслеживания активности. Отличия между is_blog_admin()
и is_admin()
делают её особенно ценной в многосайтовой сети, где важно различать запросы к админке сети и отдельных сайтов.