Responsive video embed в WordPress с шаблоном на основе Bootstrap


Решил добавить респонсивности видеозаписям в шаблоне на основе bootstrap 3. В вордпресс оказалось это очень легко. Достаточно применить фильтр добавив нижеуказанный код в файл functions.php.

// Добавляем фильтр для oembed_dataparse
add_filter( 'oembed_dataparse','responsive_video_wrap_oembed_dataparse',10,2);

function responsive_video_wrap_oembed_dataparse($html, $data)
{
	// Проверяем наличие oembed данных
	if(!is_object($data) || empty($data->type))
	{
		return $html;
	}

	// Если тип данных не является видео
	if(!($data->type === 'video'))
	{
		return $html;
	}

	// Считаем стороны
	$ar = $data->width / $data->height;

	// В зависимости от сторон, устанавливаем css класс из bootstrap
	$ar_mod = ( abs($ar-(4/3)) < abs($ar-(16/9)) ? 'embed-responsive-4by3' : 'embed-responsive-16by9');

	// Удаляем длину \ ширину из html
	$html = preg_replace( '/(width|height)="\d*"\s/', '', $html );

	// Возвращаем HTML
	return '<div class="embed-responsive '.$ar_mod.'" data-aspectratio="'.number_format($ar, 5, '.').'">'.$html.'</div>';
}

Результат

Стоит отметить то, что данный код будет работать, только для вновь добавленных записей, а так же в том случае, если старая запись будет обновлена.

Информация по теме