Хук current_screen
в WordPress позволяет выполнить определенные действия после настройки текущего экрана админ-панели. Данный хук активируется, когда система завершает установку параметров экрана, передавая объект WP_Screen
в качестве параметра. Этот объект включает данные, определяющие текущий экран, например, тип записи, базовый шаблон и другие настройки. Хук полезен, когда требуется добавить функционал на конкретных страницах админки, например, загрузить скрипты только на странице редактирования определенного типа записи или управлять отображением виджетов.
do_action( ‘current_screen’, WP_Screen $current_screen )
Основы работы с current_screen
Для работы с этим хуком необходимо использовать функцию add_action
, где в качестве первого параметра указывается название хука, а вторым — название пользовательской функции, которая будет вызвана. Объект WP_Screen
, переданный в функцию, позволяет идентифицировать текущую страницу.
Пример базовой структуры
add_action( 'current_screen', 'my_custom_action_function' );
function my_custom_action_function( $current_screen ) {
// Действие, выполняемое на конкретной странице админки
}
Параметры объекта WP_Screen
Объект WP_Screen
содержит параметры, описывающие текущий экран. Например:
- base — базовый шаблон (например,
post
илиedit-tags
); - post_type — тип записи (например,
post
,page
,book
); - taxonomy — таксономия (если применимо, например,
category
); - id — уникальный идентификатор экрана (например,
edit-category
).
1. Применение действий на экране кастомного типа записи
Допустим, мы хотим выполнить действия только на странице редактирования кастомного типа записи book
. В этом примере функция проверяет, что на текущем экране редактируется запись типа book
, и выполняет заданные действия.
add_action( 'current_screen', 'custom_post_type_screen_action' );
function custom_post_type_screen_action( $current_screen ) {
if ( 'book' == $current_screen->post_type && 'post' == $current_screen->base ) {
// Действия на странице редактирования записи типа book
// Например, можно подключить CSS или JS-файл
}
}
2. Управление виджетами на странице настроек виджетов
Следующий пример демонстрирует, как скрыть определенную боковую панель (sidebar) на странице управления виджетами. В данном случае мы удаляем sidebar-2
из списка доступных боковых панелей.
add_action( 'current_screen', 'hide_specific_sidebar' );
function hide_specific_sidebar( $current_screen ) {
global $wp_registered_sidebars;
$sidebar_id = 'sidebar-2';
if ( 'widgets' === $current_screen->id ) {
if ( array_key_exists( $sidebar_id, $wp_registered_sidebars ) ) {
unset( $wp_registered_sidebars[ $sidebar_id ] );
}
}
}
3. Добавление текста в подвал на странице списка таксономий
Этот пример иллюстрирует, как можно добавить текст в подвал админ-панели, если пользователь находится на странице списка таксономий. Проверка условия выполняется на основе значения base
, которое в данном случае равно edit-tags
.
add_action( 'current_screen', 'taxonomy_footer_message' );
function taxonomy_footer_message( $current_screen ) {
if ( 'edit-tags' != $current_screen->base ) {
return;
}
add_action( 'admin_footer_text', 'custom_footer_text' );
}
function custom_footer_text() {
echo "Это страница списка таксономий.";
}
4. Применение кастомных стилей на странице настроек плагина
В следующем примере хук используется для добавления CSS на страницу настроек плагина с идентификатором settings_page_my_plugin_settings
. Если текущий экран соответствует этой странице, подключается кастомный CSS.
add_action( 'current_screen', 'plugin_settings_screen_styles' );
function plugin_settings_screen_styles( $current_screen ) {
if ( 'settings_page_my_plugin_settings' == $current_screen->id ) {
wp_enqueue_style( 'my-plugin-settings-style', plugin_dir_url( __FILE__ ) . 'css/settings-style.css' );
}
}
Заключение
Хук current_screen
открывает широкие возможности для настройки административной панели WordPress. С его помощью можно подключать скрипты и стили, изменять виджеты и добавлять элементы только на конкретных страницах админки, что повышает производительность и упрощает управление функциональностью сайта.