Получает из медиатеки по указанному ID путь оригинальной картинки (не её отредактированной копии).
Эта функция похожа на get_attached_file(), однако некоторые изображения могут быть обработаны после загрузки (например в редакторе WP). В этом случае прикрепленный «full (полный)» размер файла обычно заменяется обработанной версией исходного изображения. Эта функция возвращает путь к первоначально загруженному файлу изображения.
К примеру, обрежем загруженную картинку с ID=355 и сохраним изменения.
Сравним результат работы функций: 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 ); }