WordPress Version: 4.7
/**
* Regular Expression callable for do_shortcode() for calling shortcode hook.
* @see get_shortcode_regex for details of the match array contents.
*
* @since 2.5.0
* @access private
*
* @global array $shortcode_tags
*
* @param array $m Regular expression match array
* @return string|false False on failure.
*/
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])) {
/* translators: %s: shortcode tag */
$message = sprintf(__('Attempting to parse a shortcode without a valid callback: %s'), $tag);
_doing_it_wrong(__FUNCTION__, $message, '4.3.0');
return $m[0];
}
/**
* Filters whether to call a shortcode callback.
*
* Passing a truthy value to the filter will effectively short-circuit the
* shortcode generation process, returning that value instead.
*
* @since 4.7.0
*
* @param bool|string $return Short-circuit return value. Either false or the value to replace the shortcode with.
* @param string $tag Shortcode name.
* @param array $attr Shortcode attributes array,
* @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 $attr Shortcode attributes array,
* @param array $m Regular expression match array.
*/
return apply_filters('do_shortcode_tag', $output, $tag, $attr, $m);
}