do_shortcode_tag()WP 2.5.0

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

Внутренняя функция — эта функция рассчитана на использование самим ядром. Не рекомендуется использовать эту функцию в своем коде.

Хуки из функции

Возвращает

Строку. Shortcode output.

Использование

do_shortcode_tag( $m );
$m(массив) (обязательный)

Regular expression match array.

  • 0(строка)
    Entire matched shortcode text.

  • 1(строка)
    Optional second opening bracket for escaping shortcodes.

  • 2(строка)
    Shortcode name.

  • 3(строка)
    Shortcode arguments list.

  • 4(строка)
    Optional self closing slash.

  • 5(строка)
    Content of a shortcode when it wraps some content.

  • 6(строка)
    Optional second closing bracket for escaping shortcodes.

Заметки

  • Смотрите: get_shortcode_regex() for details of the match array contents.
  • Global. Массив. $shortcode_tags

Список изменений

С версии 2.5.0 Введена.

Код do_shortcode_tag() WP 6.5.2

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 );
}