Функция get_current_screen()
возвращает объект класса WP_Screen
, который содержит детализированную информацию о текущем экране. Это может быть полезно для выполнения условий, специфичных для различных экранов, например, для добавления мета-боксов или стилей только на определенных страницах админки.
get_current_screen();
Возвращаемое значение
Функция возвращает объект класса WP_Screen
, если данные о текущем экране доступны, или null
, если данные еще не собраны или функция вызвана вне админ-панели.
Объект WP_Screen
содержит следующие ключевые свойства:
id
: Уникальный идентификатор текущего экрана, например,edit-post
илиpost
.base
: Основной тип экрана, такой какedit
,post
,dashboard
.parent_base
: Базовый тип родительского пункта меню, например,edit
для страниц редактирования.parent_file
: Родительский файл экрана из меню, например,edit.php?post_type=page
.post_type
: Тип поста, связанный с экраном, если применимо.taxonomy
: Таксономия, ассоциированная с экраном, если применимо.
Примечания
- Функция
get_current_screen()
может вернутьnull
, если вызвана до того, как данные о текущем экране будут собраны. Самый ранний хук для использования этой функции —current_screen
. - В AJAX-запросах функция также вернет
null
, а на фронтэнде не определена, что может вызвать ошибку.
Таблица идентификаторов экранов админки
Эта таблица демонстрирует соответствие между экранами админки и их идентификаторами:
Экран | Файл | $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 |
Пример 1: Добавление кода только на страницу Плагинов
Этот код выполняется только на странице Плагинов в админ-панели.
add_action('current_screen', 'genius_widgets_screen');
function genius_widgets_screen() {
$screen = get_current_screen();
if ($screen->id === 'plugins') {
// Код для страницы Плагины
}
}
Пример 2: Добавление вкладки помощи
Этот пример показывает, как добавить контекстную помощь на странице админки, созданной с помощью add_options_page()
или add_menu_page()
.
add_action('admin_menu', 'genius_admin_add_page');
function genius_admin_add_page() {
$page_hook = add_options_page('Страница настроек', 'Страница настроек', 'manage_options', 'genius_opt_page_slug', 'genius_admin_page');
// Добавляем вкладку помощи при загрузке страницы
add_action("load-{$page_hook}", 'genius_admin_add_help_tab');
}
function genius_admin_page() {
echo 'Код страницы';
}
function genius_admin_add_help_tab() {
$screen = get_current_screen();
// Добавление вкладки помощи
$screen->add_help_tab(array(
'id' => 'genius_custom_tab',
'title' => 'Ваша вкладка',
'content' => '<p>Описание для кастомной вкладки помощи</p>',
));
}
Пример 3: Добавление JavaScript на страницу редактирования записи
Этот пример демонстрирует, как добавить JavaScript/jQuery код только на страницу редактирования или создания записи. Код добавляется через фильтр admin_footer
.
<?php
add_filter('admin_footer', 'post_save_accesskey');
function post_save_accesskey() {
// Выход, если это не страница редактирования/создания записи
if (get_current_screen()->id !== 'post') {
return;
}
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
// Ваш jQuery код
});
</script>
<?php
}
Заключение
Функция get_current_screen()
предоставляет мощные возможности для работы с админ-панелью WordPress, позволяя адаптировать интерфейс и функциональность в зависимости от текущего экрана. Используя эту функцию, вы можете управлять отображением элементов интерфейса и выполнять действия, специфичные для различных контекстов админки.