get_current_screen()

Позволяет получить информацию о текущей странице в админке.

Функция работает только внутри админки 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

Объект WP_Screen обладает следующими свойствами:

  • id (строка) уникальный ID экрана,
  • base (строка) по сути то же, что и ID экрана, но со удалённым из него значением типа записи и таксономии. Окей, тут нужно объяснить. Например мы находимся на странице «Записи» edit.php, то получаем id равный edit-post, а baseedit. Если находимся на странице «Метки», то 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

Примеры

1. Выводим всю информацию об экране

Будьте осторожны с этим кодом – используйте только на тестовом сайте, потому страницы в админке открывать перестанут – на них будет выводиться только информация об экране.

add_action( 'current_screen', 'true_print_screen_info' );
 
function true_print_screen_info() {
	$screen = get_current_screen();
	print_r( $screen );
	exit;
}

2. CSS и JS только для определённой страницы в админки

Попробуйте вставить этот код (надеюсь, вы знаете, куда) и перейти на страницу Консоль – Обновления.

// какой-то произвольный 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>';
 
}

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.