oEmbed — это универсальный формат, созданный для упрощения внедрения содержимого на веб-страницы (аудио, видео, изображения). Разработаны стандарты и механизмы использования этого формата, во многих системах управления сайтами есть плагины и шорткоды, работающие с oEmbed.
Шорткод embed, встроенный в WordPress, служащий для вставки различного медиа-содержимого, имеет очень простые настройки в админке — можно указать автоматическую вставку объектов по ссылке на поддерживаемые ресурсы, ширину и высоту встраиваемых объектов. На всех страницах указанный размер будет одинаковый.
Так же можно задать размеры внедряемых объектов с помощью параметров шорткода. Например:
<iframe loading="lazy" title="Как правильно оптимизировать картинки в WordPress" width="640" height="360" src="https://www.youtube.com/embed/59stcZc2W7k?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
Если на разных страницах вам нужно использовать разную ширину и высоту объектов, вставляемых с помощью oEmbed, то можно использовать шорткод, указывая в нем разные значения ширины и высоты. Однако для продуктивной работы это не очень правильный подход — можно и забыть, где какой размер указывать, да и каждый раз вводить параметры размеров тоже не рационально. Гораздо удобнее было бы определить несколько вариантов для разных страниц, и автоматически использовать их при вставке. Например, на главной странице ширина и высота объектов oEmbed должна быть 320 на 200 точек, на странице категорий — 640 на 480, а на странице поста — 960 на 540 точек. Давайте сделаем так, чтобы при вставке объектов oEmbed вам больше не пришлось каждый раз вводить их высот и ширину.
Для этого откроем файл functions.php, вставим в него:
function tp_oembed_defaults($embed_size) { //ширина и высота объектов oEmbed на главной странице if(is_front_page()) { $embed_size['width'] = 320; $embed_size['height'] = 200; } //ширина и высота объектов oEmbed в любом архиве elseif( is_archive()) { $embed_size['width'] = 520; $embed_size['height'] = 360; } //ширина и высота объектов oEmbed на странице постов определенной категории elseif(is_category()) { $embed_size['width'] = 640; $embed_size['height'] = 480; } //ширина и высота объектов oEmbed на странице постов с определенной меткой elseif(is_tag()) { $embed_size['width'] = 640; $embed_size['height'] = 480; } //ширина и высота объектов oEmbed на странице отдельного поста elseif(is_single()) { $embed_size['width'] = 960; $embed_size['height'] = 540; } //ширина и высота объектов oEmbed на всех остальных страницах else { $embed_size['width'] = 640; $embed_size['height'] = 360; } return $embed_size; } add_filter('embed_defaults', 'tp_oembed_defaults');
Таким образом, используя Conditional Tags, вы, независимо от других настроек блога, можете задать ширину объектов oEmbed на любых страницах, и использовать просто ссылки на них, которые WordPress будет автоматически преобразовывать в аудио/видео/изображения с заданными размерам.
