wp_embed_register_handler()
Регистрирует Embed обработчик. Это обработчик, который превращает ссылку в контенте в HTML код.
Подробнее про oEmbed в WordPress.
Эта функция рассчитана на создание обработчиков для ссылок (для сайтов) которые не поддерживают oEmbed формат. Т.е. если сайт поддерживает oEmbed формат, то для него нужно регистрировать провайдера, а не кастомный обработчик создаваемый этой функцией. oEmbed провайдер регистрируется через функцию wp_oembed_add_provider().
Хуков нет.
Возвращает
null. Ничего.
Использование
wp_embed_register_handler( $id, $regex, $callback, $priority );
- $id(строка) (обязательный)
- Внутренний идентификатор (имя) обработчика. Должен быть уникальным.
- $regex(строка) (обязательный)
- Регулярное выражение, с которым сравнивается URL из контента. $matches передается $callback функцию.
- $callback(callable) (обязательный)
- Функция обратного вызова, которая будет вызываться при совпадении регулярного выражения.
- $priority(число)
- Используется для указания порядка, в котором будут проверяться зарегистрированные обработчики.
По умолчанию: 10
Примеры
#1 Встраивание gist в контент записи
Хотите, чтобы ссылка на gist превращалась сразу в код по принципу, как WordPress преобразует ссылку на youtube видео сразу в плеер? Ниже рассмотрим как такое сделать. Пример ниже работает как в визуальном редакторе, так и в блочном. Используйте следующий код, вставив в functions.php или оформив в виде плагина: Так как при таком решении мы не делаем никаких запросов на бэкенде, то и кеширование результата не реализовано.add_action( 'init', 'register_gist_oembed_provider' );
function register_gist_oembed_provider() {
wp_embed_register_handler(
'gist',
'~https://gist\.github\.com/[a-z0-9]+/[a-z0-9]+~im',
'callback_gist_oembed_provider'
);
}
function callback_gist_oembed_provider( $matches ) {
return sprintf( '<script src="%s.js"></script>', $matches[0] );
}
#2 Обработчик встраивания для встраивания видео Forbes
wp_embed_register_handler(
'forbes',
'~http://(?:www|video)\.forbes\.com/(?:video/embed/embed\.html|embedvideo/)\?show=(?P<show>[\d]+)&format=frame&height=(?P<height>[\d]+)&width=(?P<width>[\d]+)&video=(?P<video>.+?)($|&)~i',
'wpdocs_embed_handler_forbes'
);
function wpdocs_embed_handler_forbes( $matches, $attr, $url, $rawattr ) {
$src = add_query_arg(
[
'show' => (int) $matches['show'],
'format' => 'frame',
'width' => (int) $matches['height'],
'height' => (int) $matches['width'],
'video' => esc_attr( $matches['video'] ),
'mode' => 'render',
],
'http://www.forbes.com/video/embed/embed.html'
);
$embed = strtr(
'<iframe src="'. $src .'" width="{WIDTH}px" height="{HEIGHT}px" frameborder="0" scrolling="no" marginwidth="0" marginheight="0"></iframe>',
[
'{HEIGHT}' => (int) $matches['height'],
'{WIDTH}' => (int) $matches['width'],
]
);
return $embed;
}
Заметки
- Global. WP_Embed. $wp_embed WordPress Embed object.
Список изменений
| С версии 2.9.0 | Введена. |
Код wp_embed_register_handler() wp embed register handler WP 6.9
function wp_embed_register_handler( $id, $regex, $callback, $priority = 10 ) {
global $wp_embed;
$wp_embed->register_handler( $id, $regex, $callback, $priority );
} 