Wordpress the_content () проверка фильтра, существует ли изображение

Итак, у меня есть код для изменения фильтра the_content() в wordpress.

add_filter( 'the_content', 'filter_the_content_in_the_main_loop' );

function filter_the_content_in_the_main_loop( $content ) {

// Check if we're inside the main loop in a single post page.
if ( is_single() && in_the_loop() && is_main_query() ) {
    $patterns = array("/.jpg/", "/.jpeg/", "/.png/");
    if (isset($_COOKIE['webpsupport'])) // generated through modernizr detect webp
        $content = preg_replace($patterns, "_result.webp", $content);
    return $content;
}

return $content;
}

теперь это работает и преобразует изображения в формат .webp, но если изображение .webp не существует на сервере, мне нужно вернуться к исходному формату.

В моих файлах шаблонов для различных страниц я могу использовать следующее, чтобы проверить, существует ли версия webp, используя следующий код:

$image = get_the_post_thumbnail_url($postId);
$ext = pathinfo($image, PATHINFO_EXTENSION);
$thePostThumbPath = str_replace("http://localhost", "", $thePostThumbUrl);
    if (!file_exists($_SERVER['DOCUMENT_ROOT'] . $thePostThumbPath))
        $thePostThumbUrl = str_replace("_result.webp", "." . $ext, $thePostThumbUrl);

Любые идеи, как я могу сделать это эффективным образом.

Ваше здоровье


person Web Dev Guy    schedule 05.09.2017    source источник


Ответы (1)


Можете ли вы проверить существующее изображение .webp при применении фильтра?

$patterns = array("/.jpg/", "/.jpeg/", "/.png/");
if (isset($_COOKIE['webpsupport']) && $webpExists)
    $content = preg_replace($patterns, "_result.webp", $content);

Если да, то вам не нужно возвращать путь к изображению обратно.

person Slava    schedule 05.09.2017