wp_oembed_add_provider()
Добавляет oEmbed провайдера. Это URL который будет парсится в контенте для вывода HTML кода с другого сайта.
Подробнее про oEmbed в WordPress.
Подходит только для сайтов которые поддерживают oEmbed формат. Для остальных для обработки URL в контенте нужно создать обработчик с помощью функции wp_embed_register_handler().
Хуков нет.
Возвращает
null. Ничего.
Использование
wp_oembed_add_provider( $format, $provider, $regex );
- $format(строка) (обязательный)
- Паттерн URL который будет искаться в контенте. Тут можно указать регулярку или использовать знак
*, который затем будет заменен на(.+). - $provider(строка) (обязательный)
URL конечной точки (endpoint) по которой сайт отдает данные oEmbed формата.
Установить пустое значение, то WP попробует получить эту ссылку из заголовков HTML обрабатываемой ссылки (discovery).
- $regex(true/false)
- Указана ли регулярке в параметре $format. true - передана регулярка.
По умолчанию: false
Примеры
#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.
#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 );
} #3 Примеры добавления провайдеров из ядра
Смотрите код метода WP_oEmbed::__construct().
Заметки
- Смотрите: WP_oEmbed
Список изменений
| С версии 2.9.0 | Введена. |
Код wp_oembed_add_provider() wp oembed add provider WP 7.0
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 );
}
}