get_current_screen()
Получает объект данных о текущей странице админ-панели.
С помощью этой функции можно, например, определить текущую страницу админки и использовать это в условии, чтобы, например, вывести что-либо на нужной странице админки. Или например, разделить работу скрипта для Страниц (page) и Записей (post) в админке.
current_screen — это самый ранний хук на котором можно использовать эту функцию. До этого хука данные о странице админки еще не собраны и функция вернет null.
Эта функция вернет null в AJAX запросе и вызовет Fatal Error на фронте (на фронте она не определена).
$current_screen (данные для этой функции) устанавливается поздно. После события init, когда уже начинает генерироваться HTML страницы админки. Определение переменной $current_screen происходит в файле wp-admin/admin.php функцией set_current_screen(). Файл admin.php подключается по всей админке.
Хуков нет.
Возвращает
WP_Screen|null
. Объект данных WP_Screen или null, когда глобальная переменная $current_screen не установлена:
WP_Screen Object ( [id] => // Строка. Уникальный ID экрана. [action] => // Действие ассоциированное с экраном 'add' для *-new.php. Или пустой результат. [base] => post // Базовый тип экрана. Например, для страниц типа 'post-new.php' или 'post.php' базовый тип = 'post'. [parent_base] => edit // Базовый тип родительского пункта меню. Получается из $parent_file, удаляются параметры запроса и // '.php' расширение. Пр. 'edit.php?post_type=page' и 'edit.php?post_type=post' будут иметь родительскую базу 'edit' [parent_file] => edit.php // Родительский файл экрана из меню, пр.: 'edit.php?post_type=page', 'edit.php', 'options-general.php' [post_type] => post // Тип записи ассоциированный с экраном, если такой есть. Пр.:'edit.php?post_type=page' = 'page' [taxonomy] => // Таксономия ассоциированная с экраном, если есть. Пр.: 'edit-tags.php?taxonomy=category' = 'category' ... (разные данные) )
Примеры
#1 Таблица id экранов админки в WordPress
Экран | Файл | $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 |
#2 Запустим какой-либо код на странице Виджетов
add_action( 'current_screen', 'wpkama_widgets_screen' ); function wpkama_widgets_screen(){ $screen = get_current_screen(); if( 'widgets' === $screen->id ){ // только на странице админки: Виджеты } }
#3 Добавим скрипт только на страницу редактирования записи
Этот пример показывает как добавить javascript код в подвал админ-панели, только на страницах редактирования/создания записей. Текст добавляется через фильтр admin_footer
, в котором проверяется информация текущего экрана, если это страница редактирования записи, то выводится код:
<?php // сохранение поста в wordpress при помощи сочетания клавиш ctrl + s add_filter( 'admin_footer', 'post_save_accesskey' ); function post_save_accesskey(){ // выходим если это не страница создания/редактирования записи if( get_current_screen()->id !== 'post' ) return; // // или можно так // if( get_current_screen()->parent_base !== 'edit' ) // return; ?> <script type="text/javascript"> jQuery(document).ready(function($){ // jQuery код }); </script> <?php }
в этом примере get_current_screen() содержит такой массив (объект):
WP_Screen Object ( [action] => add [base] => post [columns:WP_Screen:private] => 2 [id] => page [in_admin:protected] => site [is_network] => [is_user] => [parent_base] => edit [parent_file] => edit.php?post_type=page [post_type] => page [taxonomy] => [is_block_editor] => [_help_tabs:WP_Screen:private] => Array ( [about-pages] => Array ( [title] => О страницах [id] => about-pages [content] => <p>Страницы похожи на записи тем, ...</p> [callback] => ) [inserting-media] => Array ( [title] => Вставка медиа-файлов [id] => inserting-media [content] => <p>Вы можете загружать и вставлять ....</p> [callback] => ) [page-attributes] => Array ( [title] => Атрибуты страницы [id] => page-attributes [content] => <p><strong>Родительская</strong> — ....</p> [callback] => ) ) [_help_sidebar:WP_Screen:private] => <p><strong>Дополнительная информация:</strong></p> ... [_options:WP_Screen:private] => Array ( [layout_columns] => Array ( [max] => 2 [default] => 2 ) ) [_show_screen_options:WP_Screen:private] => 1 [_screen_settings:WP_Screen:private] => <div class="editor-expand hidden"> ... Растягивать редактор на высоту окна.</label></div> )
#4 Вкладка помощи
Этот пример показывает как создать контекстную помощь на созданной вами странице админки. Страница создается с помощью функции add_options_page(), add_menu_page() и им подобным.
Допустим мы создали страницу с ярлыком 'my_admin_page', которая находится в пункте меню Настройки (options).
add_action( 'admin_menu', 'my_admin_add_page' ); function my_admin_add_page(){ $page_hook = add_options_page( 'Страница настроек', 'Страница настроек', 'manage_options', 'my_opt_page_slug', 'my_admin_page'); // добавляем контекст при загрузке страницы add_action( "load-{$page_hook}", 'my_admin_add_help_tab' ); } function my_admin_page(){ echo 'Код страницы'; } function my_admin_add_help_tab(){ $screen = get_current_screen(); // контент для вкладки помощь $screen->add_help_tab( array( 'id' => 'my_help_tab', 'title' => 'Помощь по странице', 'content' => '<p>Вспомогательное описание объясняющее непонятные места на странице</p>', ) ); }
Заметки
- Global. WP_Screen. $current_screen WordPress current screen object.
Список изменений
С версии 3.1.0 | Введена. |
Код get_current_screen() get current screen WP 6.7.1
function get_current_screen() { global $current_screen; if ( ! isset( $current_screen ) ) { return null; } return $current_screen; }