Вы должны просмотреть все изображения внутри $post
the_content()
, используя foreach()
.
Что дает нам regex
для группового соответствия тега <img>
.Поместите все изображения в array()
.
Начните отсчет с -1
, поскольку 0
имеет 1-е изображение уже в array()
.
Переберите array()
с изображениями, найдите изображениес "size-full"
с групповым соответствием 3
, если да, получите его значение src
с групповым соответствием 7
.
После, замените src="value"
extenstion - .png, .jpg ...,назначить замененную строку новой переменной.Используйте новую переменную и добавьте к ней расширение ".webp"
.
Замените существующие теги <img>
элементом <picture>
и вызовите функцию для $content
.
function webp_picture_fix($content){
global $post;
preg_match_all("/<img(.*?)class=('|\")(.*?)('|\")(.*?)src=('|\")(.*?)('|\")(.*?)>/i", $content, $images);
if(!is_null($images)){
$i = -1;
foreach ($images as $key) {
$i++;
//echo $key[$i];
if(strpos($images[3][$i], 'size-full') !== false){
//echo "hi";
$slika_ekstenzija = $images[7][$i];
$sewebp = preg_replace('/\\.[^.\\s]{3,4}$/', '', $slika_ekstenzija);
$webp_slika_src = $sewebp.".webp";
$replacement = '<picture><source srcset="'.$webp_slika_src.'" type="image/webp" /><img'.$images[1][$i].'class='.$images[2][$i].$images[3][$i].$images[4][$i].$images[5][$i].'src='.$images[6][$i].$images[7][$i].$images[8][$i].$images[9][$i].'></picture>';
$content = str_replace($images[0][$i], $replacement, $content);
}
}
}
return $content;
}
add_filter('the_content', 'webp_picture_fix', 9999);