add_settings_field() WP 2.7.0

Створює поле опції для зазначеної секції (зазначеного блоку налаштувань).

Ця функція використовується в комплексі з іншими функціями API налаштувань , які спрощують створення сторінки налаштувань плагіна.

Для цієї функції вже повинні бути відомі параметри $page (сторінка плагіна або адмінки) та $section (блок на сторінці, де буде виводитися поле).

Важливо: кожна опція повинна бути зареєстрована функцією register_setting() , а ця функція відповідає лише за додавання поля опції (HTML коду) на сторінку до потрібної секції.

Функція зворотного виклику (параметр $callback) повинна виводити поля форми input і заповнювати їх існуючими у базі даних.

Збереження даних відбувається автоматично.

Атрибут name тега input повинен дорівнювати параметру $option_name в register_setting() , а id тега input дорівнює параметру $id . Результат повинен відразу виводитись на екран (echo). Значення атрибута value зазвичай заповнюється функцією get_option() .

Ця функція також може бути використана для додавання додаткових полів опцій у існуючі сторінки налаштувань WordPress, такі як: медіафайли, читання. Поля можна додавати до існуючих секцій або створити свою секцію за допомогою add_settings_section() , куди потім прикріпити поле опції.

Хуків немає.

Повертає

null. Нічого не вертає.

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

add_settings_field( $id, $title, $callback, $page, $section, $args );
$id
(рядок) (обов’язковий)
Ярлик (slug) опції, що використовується як ідентифікатор поля. Використовується в атрибуті ID тега.
$title
(рядок) (обов’язковий)
Назва поля.
$callback
(рядок) (обов’язковий)

Назва функції зворотного дзвінка. Функція повинна заповнювати поле потрібним <input>тегом, який стане частиною великої форми.

  • Атрибут nameповинен дорівнювати параметру $option_name з register_setting().
  • Атрибут idзазвичай дорівнює параметру $id.
  • Результат повинен відразу виводитись на екран (echo).
$page
(рядок) (обов’язковий)
Сторінка меню, до якої буде додано поле. Вказувати потрібно ярлик (slug) сторінки.

Повинен дорівнювати параметру
$menu_slug з
add_theme_page() . У базових сторінок WordPress назви рівні:
general ,
reading ,
writing і т.д. за аналогією…

Або має дорівнювати параметру
$page з
do_settings_sections( $page );
$section
(рядок)
Назва секції налаштувань, до якої буде додано поле. За промовчанням default або може бути секцією доданої функцією
add_settings_section() .


За замовчуванням: default
$args
(масив/змішаний)

Додаткові параметри, які потрібно передати callback функції. Наприклад, у парі key/value ми можемо передати параметр $id, який потім використовувати для атрибута id поля input, щоб натиснути на label у підсумковому виведенні, фокус курсора потрапляв у наше поле.

Спеціальні значення:

  • label_for– Рядок. Якщо вказати, то заголовок налаштування буде обернути тегом <label for=”ЗНАЧЕННЯ ПОЛЯ”>
  • class– Рядок. CSS клас, який потрібно додати до тега <tr> , в якому виводиться поле опції.

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

Приклади

0

#1 Додамо нове поле опції на головну сторінку налаштувань WordPress (general).

myprefix має бути унікальним, наприклад якимось префіксом вашого плагіна або теми. Також передамо останній параметр, де вкажемо id та назву опції для атрибутів тега: id і name:

function add_option_field_to_general_admin_page(){
	$option_name = 'my_option';

	// реєструємо опцію
	register_setting('general', $option_name);

	// додаємо поле
	add_settings_field(
		'myprefix_setting-id',
		'Назва опції',
		'myprefix_setting_callback_function',
		'general',
		'default',
		array(
			'id' => 'myprefix_setting-id',
			'option_name' => 'my_option'
		)
	);
}
add_action('admin_menu', 'add_option_field_to_general_admin_page');

function myprefix_setting_callback_function( $val ){
	$id = $val['id'];
	$option_name = $val['option_name'];
	?>
	<input
		type="text"
		name="<? echo $option_name ?>"
		id="<? echo $id ?>"
		value="<? echo esc_attr( get_option($option_name) ) ?>"
	/>
	<?
}

У результаті на сторінці “Основне” (general) наприкінці ми отримаємо нову повністю робочу опцію:

Що вийшло в адмінці на сторінці Основні

нотатки

  • Global. Масив. $wp_settings_fields Спільний array of settings fields та info про свої pages/sections.

список змін

З версії 2.7.0Введено.
З версії 4.2.0The $class argument був added.

add settings field WP 6.0.2

function add_settings_field( $id, $title, $callback, $page, $section = 'default', $args = array() ) {
	Global $wp_settings_fields;

	if ( 'misc' === $page ) {
		_deprecated_argument(
			__FUNCTION__,
			'3.0.0',
			sprintf(
				/* translators: %s: misc */
				__( 'The "%s" options group has been removed. Use another settings group.' ),
				'misc'
			)
		);
		$page = 'general';
	}

	if ( 'privacy' === $page ) {
		_deprecated_argument(
			__FUNCTION__,
			'3.5.0',
			sprintf(
				/* translators: %s: privacy */
				__( 'The "%s" options group has been removed. Use another settings group.' ),
				'privacy'
			)
		);
		$page = 'reading';
	}

	$wp_settings_fields[ $page ][ $section ][ $id ] = array(
		'id' => $id,
		'title' => $title,
		'callback' => $callback,
		'args' => $args,
	);
}

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

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