WordPress Version: 6.5
/**
* Returns a submit button, with provided text and appropriate class.
*
* @since 3.1.0
*
* @param string $text Optional. The text of the button. Defaults to 'Save Changes'.
* @param string $type Optional. The type and CSS class(es) of the button. Core values
* include 'primary', 'small', and 'large'. Default 'primary large'.
* @param string $name Optional. 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'.
* @param bool $wrap Optional. True if the output button should be wrapped in a paragraph tag,
* false otherwise. Default true.
* @param array|string $other_attributes Optional. 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.
* Default empty string.
* @return string Submit button HTML.
*/
function get_submit_button($text = '', $type = 'primary large', $name = 'submit', $wrap = true, $other_attributes = '')
{
if (!is_array($type)) {
$type = explode(' ', $type);
}
$button_shorthand = array('primary', 'small', 'large');
$classes = array('button');
foreach ($type as $t) {
if ('secondary' === $t || 'button-secondary' === $t) {
continue;
}
$classes[] = in_array($t, $button_shorthand, true) ? 'button-' . $t : $t;
}
// Remove empty items, remove duplicate items, and finally build a string.
$class = implode(' ', array_unique(array_filter($classes)));
$text = $text ? $text : __('Save Changes');
// Default the id attribute to $name unless an id was specifically provided in $other_attributes.
$id = $name;
if (is_array($other_attributes) && isset($other_attributes['id'])) {
$id = $other_attributes['id'];
unset($other_attributes['id']);
}
$attributes = '';
if (is_array($other_attributes)) {
foreach ($other_attributes as $attribute => $value) {
$attributes .= $attribute . '="' . esc_attr($value) . '" ';
// Trailing space is important.
}
} elseif (!empty($other_attributes)) {
// Attributes provided as a string.
$attributes = $other_attributes;
}
// Don't output empty name and id attributes.
$name_attr = $name ? ' name="' . esc_attr($name) . '"' : '';
$id_attr = $id ? ' id="' . esc_attr($id) . '"' : '';
$button = '<input type="submit"' . $name_attr . $id_attr . ' class="' . esc_attr($class);
$button .= '" value="' . esc_attr($text) . '" ' . $attributes . ' />';
if ($wrap) {
$button = '<p class="submit">' . $button . '</p>';
}
return $button;
}