Главная Новости

Oembed_dataparse — Позволяет изменить контент (HTML) создаваемый при встраивании URL, поддерживаемых oEmbed форматом WordPress. Хук-фильтр WordPress

Опубликовано: 01.09.2018

Позволяет изменить контент (HTML) создаваемый при встраивании URL, поддерживаемых oEmbed форматом WordPress.

oEmbed контент - это видео, аудио, HTML и другие коды на вашем сайте созданные по указанной ссылке на другой сайт, например, ссылка на youtube превратиться в HTML код для встраивания видео (iframe).

oEmbed — открытый формат, созданный с целью упрощения внедрения содержимого одной веб-страницы в другую. В роли контента может выступать фотографии, видеоролики, ссылки или другие типы данных.

Оembed запросы кешируются на 1 день (86400 секунд) и их результаты хранятся в базе данных как метаинформация (скриншот на основе 1 примера):

За создание метаданных отвечает метод WP_Embed::shortcode() .

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

add_filter( 'oembed_dataparse', 'filter_function_name_1035', 10, 3 ); function filter_function_name_1035( $return, $data, $url ){ // filter... return $return; } $return(cтрока)

oEmbed HTML код.

Допустим, мы вставили в контент ссылку на YouTube ролик:

https://www.youtube.com/watch?v=RNFRCz0whuw

WordPress при отображении контента записи сделает такой http запрос и сохранит его:

https://www.youtube.com/oembed ?maxwidth=840 &maxheight=1000 &url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DRNFRCz0whuw &dnt=1 &format=json

Теперь, ответ на запрос можно будет отфильтровать. Фильтр получит такие параметры:

<iframe width="200" height="113" src="https://www.youtube.com/embed/RNFRCz0whuw?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe> $data(объект)

Объект oEmbed.

stdClass Object( [html] => <iframe width="200" height="113" src="https://www.youtube.com/embed/RNFRCz0whuw?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe> [thumbnail_height] => 360 [author_url] => https://www.youtube.com/channel/UC4mPz031whiFiY5ZSuXoYGg [provider_name] => YouTube [provider_url] => https://www.youtube.com/ [thumbnail_url] => https://i.ytimg.com/vi/RNFRCz0whuw/hqdefault.jpg [author_name] => wp-plus [type] => video [thumbnail_width] => 480 [width] => 200 [version] => 1.0 [height] => 113 [title] => Как создать шаблон страницы WordPress, записи или другого типа поста - уроки и разработка WP ) $url(cтрока)

Ссылка, откуда нужно получить embed контент.

https://www.youtube.com/watch?v=RNFRCz0whuw

Примеры

#1 Адаптивный (резиновый) плеер YouTube

Часто можно видеть, как плеер YouTube пытаются сделать адаптивным с помощью JavaScript, но это лучше делать на чистом CSS. Соотношение сторон (пропорции) плеера будут соблюдены.

Добавляем обёртку для плеера YouTube, например в functions.php темы:

## Адаптивный (резиновый) плеер YouTube add_filter( 'oembed_dataparse', function ( $return, $data ) { if ( 'YouTube' === $data->provider_name ) $return = "<div class='youtube-container'>{$return}</div>"; return $return; }, 10, 2 );

Теперь добавляем стили, например в style.css темы:

.youtube-container { position:relative; padding-bottom:56.25%; padding-top:30px; height:0; overflow:hidden; } .youtube-container iframe, .youtube-container object, .youtube-container embed { position:absolute; top:0; left:0; width:100%; height:100%; }

Где используется хук

... default: $return = false; } /** * Filters the returned oEmbed HTML. * * Use this filter to add support for custom data types, or to filter the result. * * @since 2.9.0 * * @param string $return The returned oEmbed HTML. * @param object $data A data object result from an oEmbed provider. * @param string $url The URL of the content to be embedded. */ return apply_filters( 'oembed_dataparse', $return, $data, $url ); } /** * Strips any new lines from the HTML. * * @since 2.9.0 as strip_scribd_newlines() * @since 3.0.0 * * @param string $html Existing HTML. * @param object $data Data object from WP_oEmbed::data2html() * @param string $url The original URL passed to oEmbed. * @return string Possibly modified $html */ public function _strip_newlines( $html, $data, $url ) { if ( false === strpos( $html, "\n" ) ) { ... campusboy 2826 — youtube.com/c/wpplus

Создатель YouTube канала wp-plus, на котором делюсь своими опытом. Активный пользователь wp-kama.ru. WordPress-разработчик. Разработка сайтов и лендингов. Доработка существующих проектов. Сопровождение ресурсов.

Редакторы: Kama 5397
rss