get_current_screen()
Отримує об’єкт даних про поточну сторінку адмін-панелі.
За допомогою цієї функції можна, наприклад, визначити поточну сторінку адмінки та використовувати це за умови, щоб, наприклад, вивести щось на потрібній сторінці адмінки. Або наприклад, розділити роботу скрипта для сторінок (page) і записів (post) в адмінці.
current_screen – це ранній хук на якому можна використовувати цю функцію. До цього часу дані про сторінку адмінки ще не зібрані і функція поверне null.
Ця функція поверне null в AJAX запиті і викликає Fatal Error на фронті (на фронті вона не визначена).
$current_screen (дані цієї функції) встановлюється пізно. Після події set_current_screen() . Файл admin.php підключається по всій адмінці.
WP_Screen()
add_screen_option()
(дуже швидко) | 50000 разів – 0.01 сек
(швидкість світла)
Хуків немає.
Повертає
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_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.0.2
function get_current_screen() { Global $current_screen; if ( ! isset ( $ current_screen ) ) { return null; } return $current_screen; }