get_current_screen() WP 3.1.0

Отримує об’єкт даних про поточну сторінку адмін-панелі.

За допомогою цієї функції можна, наприклад, визначити поточну сторінку адмінки та використовувати це за умови, щоб, наприклад, вивести щось на потрібній сторінці адмінки. Або наприклад, розділити роботу скрипта для сторінок (page) і записів (post) в адмінці.

current_screen – це ранній хук на якому можна використовувати цю функцію. До цього часу дані про сторінку адмінки ще не зібрані і функція поверне null.

Ця функція поверне null в AJAX запиті і викликає Fatal Error на фронті (на фронті вона не визначена).

$current_screen (дані цієї функції) встановлюється пізно. Після події set_current_screen() . Файл admin.php підключається по всій адмінці.

Працює на основі:
WP_Screen()
Основа для:
add_screen_option()
1 раз – 0.000016 сек
(дуже швидко) | 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

#1 Таблиця id екранів адмінки у WordPress

ЕкранФайл$screen->id
Коментарі/wp-admin/edit-comments.phpedit-comments
Теми/wp-admin/themes.phpthemes
Плагіни/wp-admin/plugins.phpplugins
Пост/wp-admin/post.phppost
Пост (новий)/wp-admin/post-new.phppost
Пости/wp-admin/edit.phpedit-post
Сторінки/wp-admin/edit.phpedit-page
Тип запису/wp-admin/edit.phpedit-{$post_type}
Терміни/wp-admin/edit-tags.phpedit-{$taxonomy}
Рубрики/wp-admin/edit-tags.phpedit-category
Мітки/wp-admin/edit-tags.phpedit-post_tag
Медіа/wp-admin/upload.phpupload
Користувачі/wp-admin/users.phpusers
МС Сайти/wp-admin/network/sites.phpsites-network
МС Теми/wp-admin/network/themes.phpthemes-network
МС Користувачі/wp-admin/network/users.phpusers-network
МС Плагіни/wp-admin/network/plugins.phpplugins-network
MC Сайт: Теми/wp-admin/network/site-themes.phpsite-themes-network
MC Сайт: Користувачі/wp-admin/network/site-users.phpsite-users-network
0

#2 Запустимо будь-який код на сторінці Віджетів

add_action( 'current_screen', 'wpkama_widgets_screen');
function wpkama_widgets_screen(){

	$screen = get_current_screen();

	if( 'widgets' === $screen->id ){
		// тільки на сторінці адмінки: Віджети
	}
}
0

#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>
)
0

#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() WP 6.0.2

function get_current_screen() {
	Global $current_screen;

	if ( ! isset ( $ current_screen ) ) {
		return null;
	}

	return $current_screen;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *