WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

do_settings_fields()WP 2.7.0

Выводит на экран поля опций, относящихся к указанной секции.

Функция работает в связке с другими функциями API настроек.

Заметка: обычно, вместо этой функции используется do_settings_sections(), чтобы вывести поля опций связанные с секцией.

Функция похожа на do_settings_sections(), она также выводит поля для определенной страницы и секции, только эти поля не форматируются в табличный вид, а выводятся как есть.

Основа для: do_settings_sections()

Хуков нет.

Возвращает

null. Выводит на экран HTML код: поля формы.

Использование

do_settings_fields( $page, $section );
$page(строка) (обязательный)
Идентификатор страницы админ-панели (page slug), на которой нужно вывести поля формы. Должен совпадать с параметром $page из
add_settings_section( $id, $title, $callback, $page ).
$section(строка) (обязательный)
Идентификатор секции, поля опций которой нужно вывести. Должен совпадать с параметром $id из
add_settings_section( $id, $title, $callback, $page ).

Примеры

0

#1 Выводим зарегистрированные поля

Предположим, что мы зарегистрировали новые опции, добавили секцию и поля к этой секции. Теперь, нам нужно вывести эти поля на странице настроек плагина в админ-панели, тогда используем эту функцию:

<div class="wrap">  
	<?php screen_icon(); ?>  
	<h2>Настройки плагина Primer</h2>  

	<form action="options.php" method="POST">  
		<?php settings_fields( 'primer_group' ); ?>
		<?php do_settings_fields( 'primer_page' ); ?> 
		<?php submit_button(); ?>  
	</form>  
</div>

Заметки

  • Global. Массив. $wp_settings_fields Storage array of settings fields and their pages/sections.

Список изменений

С версии 2.7.0 Введена.

Код do_settings_fields() WP 6.4.3

function do_settings_fields( $page, $section ) {
	global $wp_settings_fields;

	if ( ! isset( $wp_settings_fields[ $page ][ $section ] ) ) {
		return;
	}

	foreach ( (array) $wp_settings_fields[ $page ][ $section ] as $field ) {
		$class = '';

		if ( ! empty( $field['args']['class'] ) ) {
			$class = ' class="' . esc_attr( $field['args']['class'] ) . '"';
		}

		echo "<tr{$class}>";

		if ( ! empty( $field['args']['label_for'] ) ) {
			echo '<th scope="row"><label for="' . esc_attr( $field['args']['label_for'] ) . '">' . $field['title'] . '</label></th>';
		} else {
			echo '<th scope="row">' . $field['title'] . '</th>';
		}

		echo '<td>';
		call_user_func( $field['callback'], $field['args'] );
		echo '</td>';
		echo '</tr>';
	}
}
1 комментарий
    Войти