do_shortcode_tag( array $m ): string

This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness. Use get_shortcode_regex() instead.

Regular Expression callable for do_shortcode() for calling shortcode hook.

Description

See also

Parameters

$marrayrequired
Regular expression match array.
  • string
    Entire matched shortcode text.
  • 1 string
    Optional second opening bracket for escaping shortcodes.
  • 2 string
    Shortcode name.
  • 3 string
    Shortcode arguments list.
  • 4 string
    Optional self closing slash.
  • 5 string
    Content of a shortcode when it wraps some content.
  • 6 string
    Optional second closing bracket for escaping shortcodes.

Return

string Shortcode output.

Source

function do_shortcode_tag( $m ) {
	global $shortcode_tags;

	// Allow [[foo]] syntax for escaping a tag.
	if ( '[' === $m[1] && ']' === $m[6] ) {
		return substr( $m[0], 1, -1 );
	}

	$tag  = $m[2];
	$attr = shortcode_parse_atts( $m[3] );

	if ( ! is_callable( $shortcode_tags[ $tag ] ) ) {
		_doing_it_wrong(
			__FUNCTION__,
			/* translators: %s: Shortcode tag. */
			sprintf( __( 'Attempting to parse a shortcode without a valid callback: %s' ), $tag ),
			'4.3.0'
		);
		return $m[0];
	}

	/**
	 * Filters whether to call a shortcode callback.
	 *
	 * Returning a non-false value from filter will short-circuit the
	 * shortcode generation process, returning that value instead.
	 *
	 * @since 4.7.0
	 *
	 * @param false|string $output Short-circuit return value. Either false or the value to replace the shortcode with.
	 * @param string       $tag    Shortcode name.
	 * @param array|string $attr   Shortcode attributes array or the original arguments string if it cannot be parsed.
	 * @param array        $m      Regular expression match array.
	 */
	$return = apply_filters( 'pre_do_shortcode_tag', false, $tag, $attr, $m );
	if ( false !== $return ) {
		return $return;
	}

	$content = isset( $m[5] ) ? $m[5] : null;

	$output = $m[1] . call_user_func( $shortcode_tags[ $tag ], $attr, $content, $tag ) . $m[6];

	/**
	 * Filters the output created by a shortcode callback.
	 *
	 * @since 4.7.0
	 *
	 * @param string       $output Shortcode output.
	 * @param string       $tag    Shortcode name.
	 * @param array|string $attr   Shortcode attributes array or the original arguments string if it cannot be parsed.
	 * @param array        $m      Regular expression match array.
	 */
	return apply_filters( 'do_shortcode_tag', $output, $tag, $attr, $m );
}

Hooks

apply_filters( ‘do_shortcode_tag’, string $output, string $tag, array|string $attr, array $m )

Filters the output created by a shortcode callback.

apply_filters( ‘pre_do_shortcode_tag’, false|string $output, string $tag, array|string $attr, array $m )

Filters whether to call a shortcode callback.

Changelog

VersionDescription
2.5.0Introduced.

User Contributed Notes

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