add_screen_option()
Регистрирует опцию для страницы админ-панели, которая будет показана в специальной вкладке «Настройки экрана» (в правом верхнем углу).
Работает на основе метода:
WP_Screen::add_option( $option, $args = array() );
Смотрите файл /wp-admin/includes/class-wp-screen.php
Функция добавляет название опции и её параметры в свойство класса $_options, который затем можно получить с помощью метода WP_Screen::get_option( $option, $key = false )
Также есть предустановленная опция 'per_page'. Если её определить в момент когда экран определен, но вывода еще не было. То в настройках экрана появится настройка "Постраничная навигация":
Вызывать нужно после того как экран определен, т.е. во время или после события current_screen
(это после admin_init
). Лучше всего во время загрузки страницы: событие load-(page_hook).
Хуков нет.
Возвращает
null
. Ничего.
Использование
add_screen_option( $option, $args );
- $option(строка) (обязательный)
- Название опции. Предустановленно название
per_page
иlayout_columns
. - $args(смешанный)
- Параметры опции в виде массива или как-либо еще.
По умолчанию: array()
Примеры
#1 Добавим настройки постраничной навигации на страницу админ панели
Допустим мы регистрируем свою страницу с помощью add_menu_page() и нам нужно добавить на страницу настройку постраничной навигации:
// регистрируем страницу $hook = add_menu_page( $pg_title, $menu_title, $cap, $slug, $function ); // подключаемся к событию, когда страница загружена, но еще ничего не выводится add_action( "load-$hook", function () { add_screen_option( 'per_page', array( 'label' => 'Показывать на странице', 'default' => 10, 'option' => 'my_page_per_page', // название опции, будет записано в метаполе юзера ) ); } ); // Теперь чтобы опция сохранялась нужно добавить еще такой хук // WP 5.4.2. Cохранение опции экрана per_page. Нужно вызывать до события 'admin_menu' add_filter( 'set_screen_option_'.'my_page_per_page', function( $status, $option, $value ){ return (int) $value; }, 10, 3 ); // WP < 5.4.2. Cохранение опции экрана per_page. Нужно вызывать до события 'admin_menu' add_filter( 'set-screen-option', function( $status, $option, $value ){ return ( $option == 'my_page_per_page' ) ? (int) $value : $status; }, 10, 3 );
Получить указанную опцию там где она нужна можно с помощью такого кода:
$per_page_option = get_current_screen()->get_option('per_page'); $per_page = get_user_meta( get_current_user_id(), $per_page_option['option'], true ) ?: $per_page_option['default']; // $per_page будет равно 10 или сколько было установлено...
Список изменений
С версии 3.1.0 | Введена. |
Код add_screen_option() add screen option WP 6.7.1
function add_screen_option( $option, $args = array() ) { $current_screen = get_current_screen(); if ( ! $current_screen ) { return; } $current_screen->add_option( $option, $args ); }