do_settings_fields( string $page, string $section )

Prints out the settings fields for a particular settings section.

Description

Part of the Settings API. Use this in a settings page to output a specific section. Should normally be called by do_settings_sections() rather than directly.

Parameters

$pagestringrequired
Slug title of the admin page whose settings fields you want to show.
$sectionstringrequired
Slug title of the settings section whose fields you want to show.

Source

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>';	} } 

Changelog

VersionDescription
2.7.0Introduced.

User Contributed Notes

  1. Skip to note 2 content

    To load multiple tabs in custom page settings, you will need to use this function.

    For example, if I wish to have these settings pages:

    • /options-general.php?page=stripe-payment – Default page
    • /options-general.php?page=stripe-payment&action=test – Test page

    So you must have two different sections and call it like:

    if ($_GET['action'] !== 'test') { settings_fields('stripe_payment_settings'); echo '<table class="form-table">'; // Must to add this wrapper to keep it like WordPress default UI do_settings_fields('stripe-payment, 'stripe_payment_settings_section'); echo '</table>'; } else { settings_fields('stripe_payment_test'); echo '<table class="form-table">'; do_settings_fields('stripe-payment, 'stripe_payment_test_section'); echo '</table>'; }

You must log in before being able to contribute a note or feedback.