Поэтому я пытаюсь проверить, есть ли формат изображения webp по URL, полученному из get_the_post_thumbnail_url()
Это не работает, как я ожидал, хотя.
Вот код, с которым я работаю:
if (!file_exists($thePostThumbUrl))
$thePostThumbUrl = str_replace("_result.webp", "." . $ext, $thePostThumbUrl);
если я повторяю URL-адрес большого пальца, он получает правильное изображение в формате .webp
echo $thePostThumbUrl . '<br/ >';
Вывод:
URL изображения + _result.webp
Я знаю версию PHP, с которой я работаю PHP/5.6.30
Итак, как предложил Akintunde, функция file_exists не будет работать с URL-адресом изображения. Таким образом, код необходимо было изменить, чтобы вместо него использовать путь к серверу.
Этот код делает свое дело:
$ext = pathinfo($thePostThumbUrl, PATHINFO_EXTENSION);
$thePostThumbPath = str_replace("http://localhost", "", $thePostThumbUrl);
if (!file_exists($_SERVER['DOCUMENT_ROOT'] . $thePostThumbPath)) {
$thePostThumbUrl = str_replace("_result.webp", "." . $ext, $thePostThumbUrl);
}
Спасибо Акинтунде за указание мне в правильном направлении 🙂
Я написал функцию, которая проверяет, существует ли данное изображение в формате webp на сервере:
function webpExists($img_src){
$env = array("YOUR_LOCAL_ENV", "YOUR_STAGING_ENV", "YOUR_PROD_ENV");
$img_src_webp = str_replace(array(".jpeg", ".png", ".jpg"), ".webp", $img_src);
$img_path = str_replace($env, "", $img_src_webp);
return file_exists($_SERVER['DOCUMENT_ROOT'] . $img_path);
}
Вы должны использовать CURL для этого случая, потому что это URL.
Пример:
function checkRemoteFile($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
// don't download content
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(curl_exec($ch)!==FALSE)
{
return true;
}
else
{
return false;
}
}