Функция get_current_screen() возвращает объект класса WP_Screen, который содержит детализированную информацию о текущем экране. Это может быть полезно для выполнения условий, специфичных для различных экранов, например, для добавления мета-боксов или стилей только на определенных страницах админки.
get_current_screen();Возвращаемое значение
Функция возвращает объект класса WP_Screen, если данные о текущем экране доступны, или null, если данные еще не собраны или функция вызвана вне админ-панели.
Объект WP_Screen содержит следующие ключевые свойства:
- id: Уникальный идентификатор текущего экрана, например,- edit-postили- post.
- base: Основной тип экрана, такой как- edit,- post,- dashboard.
- parent_base: Базовый тип родительского пункта меню, например,- editдля страниц редактирования.
- parent_file: Родительский файл экрана из меню, например,- edit.php?post_type=page.
- post_type: Тип поста, связанный с экраном, если применимо.
- taxonomy: Таксономия, ассоциированная с экраном, если применимо.
Примечания
- Функция get_current_screen()может вернутьnull, если вызвана до того, как данные о текущем экране будут собраны. Самый ранний хук для использования этой функции —current_screen.
- В AJAX-запросах функция также вернет null, а на фронтэнде не определена, что может вызвать ошибку.
Таблица идентификаторов экранов админки
Эта таблица демонстрирует соответствие между экранами админки и их идентификаторами:
| Экран | Файл | $screen->id | 
|---|---|---|
| Комментарии | /wp-admin/edit-comments.php | edit-comments | 
| Темы | /wp-admin/themes.php | themes | 
| Плагины | /wp-admin/plugins.php | plugins | 
| Пост | /wp-admin/post.php | post | 
| Пост (новый) | /wp-admin/post-new.php | post | 
| Посты | /wp-admin/edit.php | edit-post | 
| Страницы | /wp-admin/edit.php | edit-page | 
| Тип записи | /wp-admin/edit.php | edit-{$post_type} | 
| Термины | /wp-admin/edit-tags.php | edit-{$taxonomy} | 
| Рубрики | /wp-admin/edit-tags.php | edit-category | 
| Метки | /wp-admin/edit-tags.php | edit-post_tag | 
| Медиа | /wp-admin/upload.php | upload | 
| Юзеры | /wp-admin/users.php | users | 
| МС Сайты | /wp-admin/network/sites.php | sites-network | 
| МС Темы | /wp-admin/network/themes.php | themes-network | 
| МС Юзеры | /wp-admin/network/users.php | users-network | 
| МС Плагины | /wp-admin/network/plugins.php | plugins-network | 
| MC Сайт: Темы | /wp-admin/network/site-themes.php | site-themes-network | 
| MC Сайт: Юзеры | /wp-admin/network/site-users.php | site-users-network | 
Пример 1: Добавление кода только на страницу Плагинов
Этот код выполняется только на странице Плагинов в админ-панели.
add_action('current_screen', 'genius_widgets_screen');
function genius_widgets_screen() {
    $screen = get_current_screen();
    
    if ($screen->id === 'plugins') {
        // Код для страницы Плагины
    }
}
Пример 2: Добавление вкладки помощи
Этот пример показывает, как добавить контекстную помощь на странице админки, созданной с помощью add_options_page() или add_menu_page().
add_action('admin_menu', 'genius_admin_add_page');
function genius_admin_add_page() {
    $page_hook = add_options_page('Страница настроек', 'Страница настроек', 'manage_options', 'genius_opt_page_slug', 'genius_admin_page');
    // Добавляем вкладку помощи при загрузке страницы
    add_action("load-{$page_hook}", 'genius_admin_add_help_tab');
}
function genius_admin_page() {
    echo 'Код страницы';
}
function genius_admin_add_help_tab() {
    $screen = get_current_screen();
    // Добавление вкладки помощи
    $screen->add_help_tab(array(
        'id'      => 'genius_custom_tab',
        'title'   => 'Ваша вкладка',
        'content' => '<p>Описание для кастомной вкладки помощи</p>',
    ));
}Пример 3: Добавление JavaScript на страницу редактирования записи
Этот пример демонстрирует, как добавить JavaScript/jQuery код только на страницу редактирования или создания записи. Код добавляется через фильтр admin_footer.
<?php
add_filter('admin_footer', 'post_save_accesskey');
function post_save_accesskey() {
    // Выход, если это не страница редактирования/создания записи
    if (get_current_screen()->id !== 'post') {
        return;
    }
    ?>
    <script type="text/javascript">
    jQuery(document).ready(function($) {
        // Ваш jQuery код
    });
    </script>
    <?php
}
Заключение
Функция get_current_screen() предоставляет мощные возможности для работы с админ-панелью WordPress, позволяя адаптировать интерфейс и функциональность в зависимости от текущего экрана. Используя эту функцию, вы можете управлять отображением элементов интерфейса и выполнять действия, специфичные для различных контекстов админки.
