Позволяет получить информацию о текущей странице в админке.
Функция работает только внутри админки 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 обладает следующими свойствами:
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 |
Будьте осторожны с этим кодом – используйте только на тестовом сайте, потому страницы в админке открывать перестанут – на них будет выводиться только информация об экране.
add_action( 'current_screen', 'true_print_screen_info' ); function true_print_screen_info() { $screen = get_current_screen(); print_r( $screen ); exit; }
Попробуйте вставить этот код (надеюсь, вы знаете, куда) и перейти на страницу Консоль – Обновления.
// какой-то произвольный 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>'; }
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.