WordPress at a glance

add_settings_field() WP 1.0

Add a new field to a section of a settings page

Part of the Settings API. Use this to define a settings field that will show as part of a settings section inside a settings page. The fields are shown using do_settings_fields() in do_settings-sections()

The $callback argument should be the name of a function that echoes out the html input tags for this setting field. Use get_option() to retrieve existing values to show.

  • Global. $wp_settings_fields. Storage array of settings fields and info about their pages/sections
  • Since 4.2.0 The $class argument was added.

No Hooks.


Nothing (null).


add_settings_field( $id, $title, $callback, $page, $section, $args );
$id(string) (required)
Slug-name to identify the field. Used in the 'id' attribute of tags.
$title(string) (required)
Formatted title of the field. Shown as the label for the field during output.
$callback(callable) (required)
Function that fills the field with the desired form inputs. The function should echo its output.
$page(string) (required)
The slug-name of the settings page on which to show the section (general, reading, writing, ...).
The slug-name of the section of the settings page in which to show the box.
Default: 'default'

Extra arguments used when outputting the field.

  • $label_for (string)
    When supplied, the setting title will be wrapped in a <label> element, its for attribute populated with this value.

  • $class (string)
    CSS Class to be added to the <tr> element when the field is output.

Default: array()

Code of add settings field: wp-admin/includes/template.php VER 5.0.3

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',
			/* translators: %s: misc */
			sprintf( __( 'The "%s" options group has been removed. Use another settings group.' ),
		$page = 'general';

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

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

Related Functions

From category: Settings API

No comments
    Hello, !     Log In . Register