eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

get_current_screen()WP 3.1.0

Получает объект данных о текущей странице админ-панели.

С помощью этой функции можно, например, определить текущую страницу админки и использовать это в условии, чтобы, например, вывести что-либо на нужной странице админки. Или например, разделить работу скрипта для Страниц (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()
Основа для: 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.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
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_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() WP 6.7.1

function get_current_screen() {
	global $current_screen;

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

	return $current_screen;
}
6 комментариев
    Войти