submit_button( string $text = , string $type = ‘primary’, string $name = ‘submit’, bool $wrap = true, array|string $other_attributes =  )

Echoes a submit button, with provided text and appropriate class(es).


See also


The text of the button. Defaults to ‘Save Changes’.


The type and CSS class(es) of the button. Core values include 'primary', 'small', and 'large'. Default 'primary'.


The HTML name of the submit button. If no id attribute is given in the $other_attributes parameter, $name will be used as the button’s id. Default 'submit'.


True if the output button should be wrapped in a paragraph tag, false otherwise.


Other attributes that should be output with the button, mapping attributes to their values, e.g. array( 'id' => 'search-submit' ).
These key/value attribute pairs will be output as attribute="value", where attribute is the key. Attributes can also be provided as a string, e.g. id="search-submit", though the array format is generally preferred.


More Information

This function cannot be used on the front end of the site, it is only available when loading the administration screens.

Parametr $type can be a single value, or a space separated list of values, or an array of values. The values determine the HTML classes of the button.

  • If $type is ‘delete’, the classes are ‘button-secondary delete’.
  • Otherwise the first class is ‘button’, followed by any of these in order of appearance:
    • type value ‘primary’ makes class ‘button-primary’
    • type value ‘small’ makes class ‘button-small’
    • type value ‘large’ makes class ‘button-large’
    • type value ‘secondary’ or ‘button-secondary’ is ignored (the ‘button’ class has the styling)
    • any other type value ‘foo’ makes the class ‘foo’

For example, the default $type ‘primary’ results in a button with HTML classes ‘button button-primary’.

This function does not return a value. The HTML for the button is output directly to the browser.

Uses the related function get_submit_button(), which returns the button as a string instead of echoing it. It has a different default $type, 'primary large', resulting in the HTML classes 'button button-primary button-large'.


function submit_button( $text = '', $type = 'primary', $name = 'submit', $wrap = true, $other_attributes = '' ) {
	echo get_submit_button( $text, $type, $name, $wrap, $other_attributes );



User Contributed Notes

  1. Skip to note 10 content

    Display a Secondary Button
    WordPress styles secondary and primary buttons differently. Primary buttons are blue, and stand out more than secondary buttons, which are grey. By default, submit_button() outputs a primary button. To display a secondary button instead, set the $type parameter to 'secondary':

    submit_button( __( 'Reset', 'textdomain' ), 'secondary' );
  2. Skip to note 11 content

    Display a Delete Button
    By default, WordPress doesn’t currently appear to have custom styling for delete buttons, but it does give them the 'delete' HTML class. However, it’s possible that could change in the future, so it’s a good idea to specify the $type as 'delete' when displaying a delete button:

    submit_button( __( 'Delete', 'textdomain' ), 'delete' );

    By default, delete buttons will be displayed as secondary buttons, not primary. If you want to display it as a primary button, you can do it like this:

    submit_button( __( 'Delete', 'textdomain' ), 'delete button-primary' );
  3. Skip to note 12 content

    Using the $name Parameter
    The $name parameter may be used if you want to set the HTML name attribute for the button. By default, this will be 'submit'.

    submit_button( __( 'Save Settings', 'textdomain' ), 'primary', 'wpdocs-save-settings' );

    By default, the $name is also used to fill out the button’s id attribute. To change this, you can pass an id via the $other_attributes parameter:

    $other_attributes = array( 'id' => 'wpdocs-button-id' );
    submit_button( __( 'Save Settings', 'textdomain' ), 'primary', 'wpdocs-save-settings', true, $other_attributes );
  4. Skip to note 13 content

    Using the $wrap Parameter
    The $wrap parameter controls whether the button is wrapped in a paragraph tag, which it is by default. This can be a help or a hindrance depending on where an how you wish to display the button. To turn this behavior off, pass false for the fourth parameter:

    submit_button( __( 'Submit', 'textdomain' ), 'primary', 'submit-form', false );
  5. Skip to note 16 content

    This example shows a plugin options page form with two submit buttons, each serving different purposes.

    <form method="post">
      settings_fields( 'wpdocs-fields-settings' );
      do_settings_sections( 'wpdocs-sections-settings' );
      /* Default submit button with "Save Changes" text */
      /* Additional attributes for the custom submit button */
      $attributes = array( 'id' => 'wpdocs-field-id' ); 
      /* Custom submit button */
        esc_html__( 'My action', 'text_domain' ), // Text of the button, localized
        'primary', // CSS class for the button
        'wpdocs-input-name', // 'name' attribute for the button to identify it in POST data
        true, // Wrap the button in a <p> tag
        $attributes // Additional attributes like 'id'

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