get_attached_file() WP 2.0.0

Отримує абсолютний (серверний) шлях вкладення (прикріпленого файлу) по переданому ID вкладення.

Шлях перебуває у довільному полі вкладення: _wp_attached_file. Функція просто отримує значення цього поля та поєднує його з wp_upload_dir() .

Використовуйте wp_get_attachment_url() , щоб отримати URL-адресу до файлу вкладення, а не його шлях.

Працює на основі:
get_post_meta()
1 раз – 0.000594 сек
(повільно) | 50000 разів – 0.41 сек
(дуже швидко) |
PHP 7.0.8, WP 4.6

Хуки з функції

Повертає

Строку|false. Дорога до прикріпленого файлу або false, якщо не вдалося отримати шлях.

Використання

get_attached_file($attachment_id, $unfiltered);
$attachment_id
(число) (обов’язковий)
ID вкладення, шлях до якого необхідно отримати.
$unfiltered
(логічний)
За промовчанням отриманий шлях проганяється через фільтр
get_attached_file , але якщо вказати в цьому параметрі true, шлях не буде фільтруватися.


Типово: false

Приклади

0

#1 Отримаємо повний шлях до файлу вкладення

$attach_id = 5;

$ attached_path = get_attached_file ($ attach_id);
//> /home/www/example.com/wp-content/uploads/2014/11/file_name.png

$ filename = basename ( $ attached_path );
//> file_name.png

список змін

З версії 2.0.0Введено.

Код get_attached_file() WP 6.0.2

function get_attached_file( $attachment_id, $unfiltered = false ) {
	$file = get_post_meta($attachment_id, '_wp_attached_file', true);

	// If the file is relative, prepend upload dir.
	if ( $file && 0 !== strpos( $file, '/' ) && ! preg_match( '|^.:|', $file ) ) {
		$uploads = wp_get_upload_dir();
		if ( false === $uploads['error'] ) {
			$file = $uploads['basedir'] . "/$file";
		}
	}

	if ( $unfiltered ) {
		return $file;
	}

	/**
	 * Filters attached file базується на given ID.
	 *
	 * @ Since 2.1.0
	 *
	 * @param string|false $file Зображення файлу файлу, в якому записаний файл повинен бути, false otherwise.
	 * @param int $attachment_id Attachment ID.
	 */
	return apply_filters( 'get_attached_file', $file, $attachment_id );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *