Как можно проверить наличие файла на сервере и, если его нет, вернуть другой файл вместо него?

Как проверить наличие миниатюры записи и, если файла нет, отобразить другую миниатюру? У меня есть новостной сайт, где каждый год удаляются старые папки, но ссылки на эти изображения остаются в админке. Я использовал код `$thumb = get_the_post_thumbnail( $post->ID, $post_card_thumb_size, array( 'itemprop' => 'image', 'onError' => 'this.src="https://site.ru/wp-content/themes/reboot/placeholder.jpg"' ) );`, но он не работает с lazy-load. Я также попытался использовать код `$featured_img_url = get_the_post_thumbnail_url(get_the_ID(),'full'); if (!file_exists($featured_img_url) { $thumb = '<img src="https://site.ru/wp-content/themes/reboot/placeholder.jpg">'; }`, но это привело к сбою сайта. Как можно решить эту проблему?
  • 18 октября 2023 г. 14:48
Ответы на вопрос 6
Для проверки наличия файла на сервере и замены его другим файлом, вы можете использовать функцию `file_exists()` в PHP. 

Пример кода:

```php
$file_path = '/путь/к/файлу.jpg';
$placeholder_path = '/путь/к/запасному/файлу.jpg';

if (file_exists($file_path)) {
    // Файл существует, используем его
    echo '<img src="' . $file_path . '" alt="Изображение">';
} else {
    // Файл не существует, используем запасное изображение
    echo '<img src="' . $placeholder_path . '" alt="Изображение">';
}
```

Для проверки наличия миниатюр записи и замены их другими миниатюрами, вы можете использовать ту же функцию `file_exists()`, но с указанием пути к миниатюре. 

Пример кода:

```php
$thumbnail_id = get_post_thumbnail_id($post->ID);
$thumbnail_url = wp_get_attachment_url($thumbnail_id);
$placeholder_url = 'https://site.ru/wp-content/themes/reboot/placeholder.jpg';

if (file_exists($thumbnail_url)) {
    // Миниатюра существует, используем ее
    echo '<img src="' . $thumbnail_url . '" alt="Миниатюра">';
} else {
    // Миниатюра не существует, используем запасную миниатюру
    echo '<img src="' . $placeholder_url . '" alt="Миниатюра">';
}
```

Обратите внимание, что для использования функции `file_exists()` вам может понадобиться абсолютный путь к файлу или URL-адресу.
$image[0] = WPP_CORE_URL . 'components/assets/img/placeholder.jpg'; замените на свой путь 
 Если не указано конкретное изображение, то будет использовано изображение-заполнитель 
 Если изображение-заполнитель не найдено, то будет проверена опция "wpp_placeholder_image". Если она не заполнена, будет использовано изображение по умолчанию. Если опция заполнена, будет использовано указанное изображение. 
 Функция "wpp_image_placeholder" возвращает изображение в заданном формате (массив или ссылка) и применяет фильтр "wpp_placeholder_img". 
 Фильтр "wp_get_attachment_image_src" применяет функцию "wpp_image_placeholder" с приоритетом 10 для получения изображения при загрузке.
Похожие вопросы