Docs & Support

Learn about all the Formidable features and get support from our amazing customer success team.

frm_replace_shortcodes

Heads up!
This article contains PHP code and is intended for developers. We offer this code as a courtesy, but don't provide support for code customizations or 3rd party development.

Use this hook to change the HTML for any fields in your form.

Usage

add_filter('frm_replace_shortcodes', 'frm_change_my_html', 10, 3);
function frm_change_my_html($html, $field, $args)

Formidable Forms makes advanced site building simple. Launch forms, directories, dashboards, and custom WordPress apps faster than ever before.

Parameters

  • $html (string)
  • $field (array)
    • 'id' (int)
    • 'default_value' (string)
    • 'type' (string)
  • $args (array)
    • 'errors' (array)
    • 'form' (array)

Examples

Basic Usage

This example can be used to add text or HTML below each field in your form.

add_filter('frm_replace_shortcodes', 'frm_change_my_html', 10, 3);
function frm_change_my_html($html, $field, $args){
  if($args['form']['id'] == 10){ //change 10 the id of the form to change
    $html .= 'add additional content here ';
  }
  return $html;
}

Checkbox and Radio Button HTML

Use this example to take the radio or checkbox input OUT of the label tags. Please note: Conditional logic that uses radio or checkbox fields will NOT work when you use this code. You must use custom JavaScript to make other fields show or hide when a specific checkbox or radio button is selected.

add_filter( 'frm_replace_shortcodes', 'frm_change_my_html', 10, 3 );
function frm_change_my_html( $html, $field, $args ) {
	if ( ! in_array ( $field['type'], array( 'radio', 'checkbox' ), true ) ) {
		return $html;
	}

	$dom = new DOMDocument();
	libxml_use_internal_errors( true );
	$dom->loadHTML( $html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );
	libxml_clear_errors();

	$xpath = new DOMXPath( $dom );

	// Find all <label> elements that contain an <input>
	$labels = $xpath->query( '//label[input]' );

	foreach ( $labels as $label ) {
		// Find the <input> element inside the <label>
		$input = $label->getElementsByTagName('input')->item(0);

		if ($input) {
			// Clone the input element
			$inputClone = $input->cloneNode(true);

			// Remove the input from inside the label
			$label->removeChild($input);

			// Insert the input after the label
			if ($label->nextSibling) {
				$label->parentNode->insertBefore($inputClone, $label->nextSibling);
			} else {
				$label->parentNode->appendChild($inputClone);
			}
		}
	}

	return $dom->saveHTML();
}

Make this example specific to a field or fields by replacing this:

if ( in_array( $field['type'], array( 'checkbox', 'radio' ) ) ) {

with this:

if ( in_array( $field['id'], array( x, y, z ) ) ) {
Was this article helpful? *

This article may contain affiliate links. Once in a while, we earn commissions from those links. But we only recommend products we like, with or without commissions.

In this article

    We have a small, but amazing team of dedicated people who are committed to helping you achieve your goals and project requirements.


    Copyright © 2025 Strategy11, LLC. Formidable Forms® is a registered trademark Strategy11, LLC.

    Join 400,000+ using Formidable Forms to create form-focused solutions fast. Get Formidable Forms