WordPress автоматическое встраивание видео на YouTube — добавление фильтра для обработки атрибута `end`

WordPress автоматически преобразует URL YouTube в содержимом страницы / записи во встроенное видео iframe.

Это уважает start параметр, если присутствует, в URL YouTube, но он не учитывает end параметр, если присутствует.

Поэтому мне нужно найти код WordPress, который обрабатывает эту функцию автоматического встраивания YouTube, так что, я надеюсь, я могу подключить свой собственный фильтр, который (используя это решение) позаботится о end требования.

Я искал через class-wp-embed.php, class-oembed.php а также media.php файлы /wp-includes/ каталог, и, в последнем, думал, что я нашел код, который мне нужен …

apply_filters( 'wp_embed_handler_youtube', $embed, $attr, $url, $rawattr )

…но этот фильтр не вызывается.

Может кто-то указать мне верное направление?

3

Решение

У меня были такие же проблемы и я не нашел ответа. Итак, вот рабочее решение:

add_filter('embed_oembed_html', 'my_theme_embed_handler_oembed_youtube', 10, 4);
function my_theme_embed_handler_oembed_youtube($html, $url, $attr, $post_ID) {
if (strpos($url, 'youtube.com')!==false) {
/*  YOU CAN CHANGE RESULT HTML CODE HERE */
$html = '<div class="youtube-wrap">'.$html.'</div>';
}
return $html;
}
5

Другие решения

Вы можете настроить URL-адрес YouTube и установить различные условия. Я реализовал это в прошлом. Вы можете получить некоторые ссылки из приведенного ниже кода:

 if(strpos($url, "youtube")!==false)
{
if(strpos($url, "<object")===false)
{
if(strpos($url, "<iframe")===false)
{
if(strpos($url, "//youtu.be/")===false)
{
$url_string = parse_url($url, PHP_URL_QUERY);
parse_str($url_string, $args);
$videoId = isset($args['v']) ? $args['v'] : false;

}
else
{
$url_string = explode('/',$url);
$videoId = $url_string[3];
}
}
else
{
$pattern = '!//(?:www.)?youtube.com/embed/([A-Za-z0-9\-_]+)!i';
$result = preg_match($pattern, $url, $matches);

$videoId = $matches[1];
}
}
else
{
preg_match('#<object[^>]+>.+?http://www.youtube.com/v/([A-Za-z0-9\-_]+).+?</object>#s', $url, $matches);
$videoId = $matches[1];
}
$urlfrom = 'youtube';
$video_thumb= '';

}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector