Задать вопрос
@redesupar

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

В общем такая проблема, есть новостной сайт и на нём много записей, и чтобы уменьшить весь фтп, раз в год удаляют старые папки, но в админке эти ссылки остаются.
Вопрос! Как проверить миниатюру записи и если нет файла то отдать другой?
Делал так
$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">';
}

но сайт вообще рухнул
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
// $image[0] = WPP_CORE_URL . 'components/assets/img/placeholder.jpg'; замените на свой путь
if ( ! function_exists( 'wpp_image_placeholder' ) ) :

	/**
	 * Изображение заполнитель
	 */
	function wpp_image_placeholder( $image = null, $return = 'array', $size = 'thumbinail' ) {
		if ( ! empty( $image ) ) {
			$uploads   = wp_upload_dir();
			$file_path = str_replace( $uploads['baseurl'], $uploads['basedir'], $image[0] );
		} else {
			$image = [];
		}

		if ( empty( $file_path ) || ! file_exists( $file_path ) ) {
			$placeholder_image = get_option( 'wpp_placeholder_image', 0 );

			if ( empty( $placeholder_image ) ) {
				$image[0] = WPP_CORE_URL . 'components/assets/img/placeholder.jpg';
			} else {
				$image_opt = wp_get_attachment_image_src( $placeholder_image );

				if ( ! empty( $image_opt ) ) {
					$image[0] = $image_opt[0];
				}
			}
		}

		$img = 'array' === $return ? $image : $image[0];

		return apply_filters( 'wpp_placeholder_img', $img, $return );
	}


endif;

add_filter( 'wp_get_attachment_image_src', 'wpp_image_placeholder', 10 );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы