Регистрирует Embed обработчик. Это обработчик, который превращает ссылку в контенте в HTML код.
Эта функция рассчитана на создание обработчиков для ссылок (для сайтов) которые не поддерживают 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] ); }
Так как при таком решении мы не делаем никаких запросов на бэкенде, то и кеширование результата не реализовано.
Заметки
- Global. WP_Embed. $wp_embed
Список изменений
function wp_embed_register_handler( $id, $regex, $callback, $priority = 10 ) { global $wp_embed; $wp_embed->register_handler( $id, $regex, $callback, $priority ); }