wp_oembed_add_provider()WP 2.9.0

Добавляет oEmbed провайдера. Это URL который будет парсится в контенте для вывода HTML кода с другого сайта.

Подробнее про oEmbed в WordPress.

Подходит только для сайтов которые поддерживают oEmbed формат. Для остальных для обработки URL в контенте нужно создать обработчик с помощью функции wp_embed_register_handler().

Работает на основе: WP_oEmbed::_add_provider_early()

Хуков нет.

Возвращает

null. Ничего.

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

wp_oembed_add_provider( $format, $provider, $regex );
$format(строка) (обязательный)
Паттерн URL который будет искаться в контенте. Тут можно указать регулярку или использовать знак *, который затем будет заменен на (.+).
$provider(строка) (обязательный)

URL конечной точки (endpoint) по которой сайт отдает данные oEmbed формата.

Установить пустое значение, то WP попробует получить эту ссылку из заголовков HTML обрабатываемой ссылки (discovery).

$regex(true/false)
Указана ли регулярке в параметре $format. true - передана регулярка.
По умолчанию: false

Примеры

0

#1 Пример добавления провайдера

Допустим нам нужно добавить oEmbed встраивание для сайта wizer.me и мы выяснили, что этот сайт является oEmbed провайдером и нашли такие данные для обработки такого запроса:

  • URL scheme: http://*.wizer.me/learn/*
  • URL scheme: https://*.wizer.me/learn/*
  • URL scheme: http://*.wizer.me/preview/*
  • URL scheme: https://*.wizer.me/preview/*
  • API endpoint: http://app.wizer.me/api/oembed.{format}
  • Supports discovery via <link> tags
// Добавим встраивание для сайта wizer.me
add_action( 'init', 'wizerme_oembed_provider' );
function wizerme_oembed_provider() {
	wp_oembed_add_provider( 'http://*.wizer.me/learn/*', 'http://app.wizer.me/api/oembed.{format}', false );
	wp_oembed_add_provider( 'https://*.wizer.me/learn/*', 'http://app.wizer.me/api/oembed.{format}', false );

	wp_oembed_add_provider( 'http://*.wizer.me/preview/*', 'http://app.wizer.me/api/oembed.{format}', false );
	wp_oembed_add_provider( 'https://*.wizer.me/preview/*', 'http://app.wizer.me/api/oembed.{format}', false );
}

Теперь при вставке в контент ссылки вида https://app.wizer.me/preview/1J09IV, она будет обработана и встроена в контент в виде iframe.

0

#2 Пример добавления провайдера

Тут в формате указывается регулярка. Это лишь демонстрация, на деле youtube провайдер уже зарегистрирован в WordPress.

add_action( 'init', 'youtube_oembed_provider' );
function youtube_oembed_provider() {
	wp_oembed_add_provider( '#https?://youtu\.be/.*#i', 'https://www.youtube.com/oembed', true );
}
0

#3 Примеры добавления провайдеров из ядра

Смотрите код метода WP_oEmbed::__construct().

Заметки

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

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

Код wp_oembed_add_provider() WP 6.6.2

function wp_oembed_add_provider( $format, $provider, $regex = false ) {
	if ( did_action( 'plugins_loaded' ) ) {
		$oembed                       = _wp_oembed_get_object();
		$oembed->providers[ $format ] = array( $provider, $regex );
	} else {
		WP_oEmbed::_add_provider_early( $format, $provider, $regex );
	}
}