Позволяет получить информацию о текущей странице в админке.
Функция работает только внутри админки WordPress, если вызвать её на сайте, то можно получить 500-ю ошибку Error: Call to undefined function get_current_screen().
Также вернёт null
при использовании внутри AJAX-запроса.
get_current_screen()
Также обратите внимание, на то, где использовать эту функцию. Глобальный объект $current_screen
становится доступным только во время выполнения хука current_screen
в админке, т.е. ан admin_init
или admin_menu
она работать не будет (так как они выполняются раньше current_screen
), но будет прекрасно работать на load-{хук}
, admin_enqueue_scripts
, admin_head
, admin_notices
и так далее, подробнее – в примерах.
Объект WP_Screen
Объект WP_Screen
обладает следующими свойствами:
id
(строка) уникальный ID экрана,base
(строка) по сути то же, что и ID экрана, но со удалённым из него значением типа записи и таксономии. Окей, тут нужно объяснить. Например мы находимся на странице «Записи»edit.php
, то получаемid
равныйedit-post
, аbase
–edit
. Если находимся на странице «Метки», то id равен edit-post_tag
, вbase
–edit-tags
. Это же касается и страниц добавление и редактирования записей и таксономий. На всех остальных страницахid
иbase
будут совпадать. Другое объяснение:base
– это название PHP-файла в URL страницы.action
(строка) Если мы находимся на странице добавления чего-либо*-add.php
или*-new.php
, напримерpost-new.php?post_type=page
, то это свойство принимает значениеadd
. Пустое во всех остальных случаях.post_type
(строка) – название типа записи, ассоциированного с текущим экраном. Например, если мы находимся на странице «Страницы»edit.php?post_type=page
, то значение этого свойства будетpage
.taxonomy
(строка) – название таксономии, ассоциированной с текущим экраном. Например, если мы находимся на странице с рубриками, URL которой будетedit-tags.php?taxonomy=category
то, значение этого свойства будетcategory
.is_block_editor
(логическое) – принимает значение логическогоtrue
, если на текущем экране используется редактор Gutenberg.is_network
(логическое) – возвращает true при нахождении в консолью управления сетью сайтов сети мультисайт.
Использование на странице Консоль:
print_r( get_current_screen() ); /* WP_Screen Object ( [action] => [base] => dashboard [id] => dashboard [is_network] => [is_user] => [parent_base] => [parent_file] => [post_type] => [taxonomy] => [is_block_editor] => ... (private fields) ) */
Страница редактирование определённой записи:
print_r( get_current_screen() ); /* WP_Screen Object ( [action] => [base] => post [id] => post [is_network] => [is_user] => [parent_base] => [parent_file] => [post_type] => post [taxonomy] => [is_block_editor] => 1 ... (private fields) ) */
Страница редактирования страницы:
print_r( get_current_screen() ); /* WP_Screen Object ( [action] => [base] => post [id] => page [is_network] => [is_user] => [parent_base] => [parent_file] => [post_type] => page [taxonomy] => [is_block_editor] => ... (private fields) ) */
Страница Настройки > Общее.
print_r( get_current_screen() ); /* WP_Screen Object ( [action] => [base] => options-general [id] => options-general [is_network] => [is_user] => [parent_base] => [parent_file] => [post_type] => [taxonomy] => ... (private fields) ) */
Таблица стандартных экранов
Решил сделать табличку с id
стандартных экранов в WordPress, потому чаще всего приходится использовать именно id
.
Страница | id |
---|---|
Консоль | dashboard |
Консоль – Обновления | update-core |
Записи | edit-post |
Записи – Добавить новую, Редактирование записи |
post |
Рубрики, Редактирование рубрики |
edit-category |
Метки, Редактирование метки |
edit-post_tag |
Страницы | edit-page |
Страницы – Добавить новую, Редактирование страницы |
page |
Тип записи (все посты) | edit-{$post_type} |
Тип записи – Добавить новый, Редактирование типа записи |
{$post_type} |
Таксономии, Редактирование элемента таксономии |
edit-{$taxonomy} |
Медиафайлы | upload |
Медиафайлы – Добавить новый | media |
Комментарии | edit-comments |
Редактирование комментария | comment |
Темы | themes |
Добавление новой темы | theme-install |
Редактор тем | theme-editor |
Виджеты | widgets |
Меню | nav-menus |
Плагины | plugins |
Плагины – Добавить новый | plugin-install |
Редактор плагинов | plugin-editor |
Пользователи | users |
Пользователи – Добавить нового | user |
Редактирование пользователя | user-edit |
Профиль | profile |
Инструменты | tools |
Инструменты – Импорт | import |
Инструменты – Экспорт | export |
Инструменты – Здоровье сайта | site-health |
Экспорт персональных данных | export-personal-data |
Удаление персональных данных | erase-personal-data |
Настройки – Общее | options-general |
Настройки – Написание | options-writing |
Настройки – Чтение | options-reading |
Настройки – Обсуждение | options-discussion |
Настройки – Медиафайлы | options-media |
Настройки – Постоянные ссылки | options-permalink |
Настройки – Приватность | options-privacy |
Для консоли управления сетью в сети мультисайт:
Страница | id |
---|---|
Консоль | dashboard-network |
Консоль – Обновления | update-core-network |
Консоль – Обновить сеть | upgrade-network |
Сайты | sites-network |
Сайты – Добавить новый | site-new-network |
Темы | themes-network |
Темы – Добавить новую | theme-install-network |
Темы – Редактор тем | theme-editor-network |
Пользователи | users-network |
Пользователи – Добавить нового | user-network |
Редактирование пользователя | user-edit-network |
Плагины | plugins-network |
Плагины – Добавить новый | plugin-install-network |
Плагины – Редактор плагинов | plugin-editor-network |
Настройки | settings-network |
Примеры
1. Выводим всю информацию об экране
Будьте осторожны с этим кодом – используйте только на тестовом сайте, потому страницы в админке открывать перестанут – на них будет выводиться только информация об экране.
add_action( 'current_screen', 'true_print_screen_info' ); function true_print_screen_info() { $screen = get_current_screen(); print_r( $screen ); exit; }
2. CSS и JS только для определённой страницы в админки
Попробуйте вставить этот код (надеюсь, вы знаете, куда) и перейти на страницу Консоль – Обновления.
// какой-то произвольный CSS для страницы Консоль – Обновления add_action( 'admin_head', 'true_admin_css', 25 ); function true_admin_css() { $screen = get_current_screen(); if( 'update-core' === $screen->id ) { echo '<style>body{ background-color: #000 }</style>'; } } // какой-то произвольный JS для страницы Консоль – Обновления add_filter( 'admin_footer', 'true_admin_js', 25 ); function true_admin_js(){ // условие можно записать ещё и так $screen = get_current_screen() if( 'update-core' !== $screen->id ) { return; } echo '<script>alert( 'привет')</script>'; }
Источник: Блог Миши Рудрастых