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