add_screen_option() WP 3.1.0

Реєструє опцію для сторінки адмін-панелі, яка буде показана у спеціальній вкладці «Налаштування екрана» (у правому верхньому кутку).

Працює на основі методу:

WP_Screen::add_option( $option, $args = array() );

Дивіться файл /wp-admin/includes/class-wp-screen.php

Функція додає назву опції та її параметри у властивість класу $_options , який потім можна отримати за допомогою методуWP_Screen::get_option( $option, $key = false )

Також є встановлена ​​опція ‘per_page’. Якщо її визначити в момент коли екран визначено, але виводу ще не було. То в налаштуваннях екрана з’явиться налаштування “Посторінкова навігація”:

screen-options-per_page

Викликати потрібно по тому, як екран визначено, тобто. під час або після події current_screen(це після admin_init). Найкраще під час завантаження сторінки: подія load-(page_hook) .

Працює на основі:
get_current_screen()

Хуків немає.

Повертає

null. Нічого.

Використання

add_screen_option ($ option, $ args);
$option
(рядок) (обов’язковий)
Назва опції. Попередньо назва
per_pageі
layout_columns.
$args
(змішаний)
Параметри опції у вигляді масиву або ще.


За замовчуванням: array()

Приклади

0

#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() 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);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *