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) .
Стаття на тему: Налаштування екрана: опція «кількість елементів на сторінці» для таблиць WP_List_Table
get_current_screen()
Хуків немає.
Повертає
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. Збереження опції екрана 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. Збереження опції екрана 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.0.2
function add_screen_option( $option, $args = array() ) {
$current_screen = get_current_screen();
if (! $current_screen) {
return;
}
$current_screen->add_option($option, $args);
}