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 лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

Добавить комментарий

%d такие блоггеры, как: