wp_get_original_image_path() WP 5.3.0

Click here to view original web page at wp-kama.ru

Получает из медиатеки по указанному ID путь оригинальной картинки (не её отредактированной копии).

Эта функция похожа на get_attached_file(), однако некоторые изображения могут быть обработаны после загрузки (например в редакторе WP). В этом случае прикрепленный «full (полный)» размер файла обычно заменяется обработанной версией исходного изображения. Эта функция возвращает путь к первоначально загруженному файлу изображения.

К примеру, обрежем загруженную картинку с ID=355 и сохраним изменения.

Редактирование картинки в дефолтном редакторе WordPress

Сравним результат работы функций: wp_get_original_image_path() и get_attached_file():

$attach_path = get_attached_file( 355 );
// До обрезки фото вернёт F:\server\sites\wp-test.ru/wp-content/uploads/2019/04/52007.jpg
// После обрезки вернёт   F:\server\sites\wp-test.ru/wp-content/uploads/2019/04/52007-e1574589208776.jpg

$attach_path = wp_get_original_image_path( 355 );
// До и после обрезки фото вернёт F:\server\sites\wp-test.ru/wp-content/uploads/2019/04/52007.jpg

Использовать эту функцию имеет смысл, только когда на сайте используются огромные картинки (более 2560px в ширину или высоту). Впрочем этот размер можно поменять через фильтр, см. ниже.

Если картинка была загружена в WordPress 5.2 или ниже, или картинка имеет размеры по высоте и ширине меньше, чем указано в фильтре big_image_size_threshold (по умолчанию 2560), то эта функция будет работать точно также, как и функция get_attached_file(), то есть будет при обрезке изображения возвращать путь к обрезанной версии, а не к оригиналу.

Так происходит, когда у картинки размеры меньше чем указанны в фильтре big_image_size_threshold (по умолчанию 2560). В этом случае, при загрузке картинки не сработает функция _wp_image_meta_replace_original(), которая добавляет параметр original_image в метаданные (в этом параметре хранится оригинальный путь к картинке), именно этим параметром пользуется описываемая функция wp_get_original_image_path().

Также, функция проверят, что указанное вложение является именно картинкой, иначе вернет false. Такая проверка сделает код более стабильным.

✈ 1 раз = 0.0014172с = очень медленно | 50000 раз = 1.04с = быстро

Возвращает

Строку/false. Путь к исходному файлу изображения или false, если вложение не является изображением.

Использование

wp_get_original_image_path( $attachment_id );

Примеры

#1 Выведем на экран путь к картинке

$attach_path = wp_get_original_image_path( 516 );

if ( $attach_path ) {
	echo $attach_path;
} else {
	echo 'Этот файл не является изображением';
}

Список изменений

function wp_get_original_image_path( $attachment_id ) {
	if ( ! wp_attachment_is_image( $attachment_id ) ) {
		return false;
	}

	$image_meta = wp_get_attachment_metadata( $attachment_id );
	$image_file = get_attached_file( $attachment_id );

	if ( empty( $image_meta['original_image'] ) ) {
		$original_image = $image_file;
	} else {
		$original_image = path_join( dirname( $image_file ), $image_meta['original_image'] );
	}

	/**
	 * Filters the path to the original image.
	 *
	 * @since 5.3.0
	 *
	 * @param string $original_image Path to original image file.
	 * @param int    $attachment_id  Attachment ID.
	 */
	return apply_filters( 'wp_get_original_image_path', $original_image, $attachment_id );
}

Cвязанные функции