WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

get_attached_file() WP 2.0.0

Получает абсолютный (серверный) путь вложения (прикрепленного файла) по переданному ID вложения.

Путь находится в произвольном поле вложения: _wp_attached_file. Функция просто получает значение этого поля и объединяет его с wp_upload_dir().

Является основой для: wp_get_original_image_path()
Работает на основе: 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

Примеры

#1 Получим полный путь до файла вложения

$attach_id = 5;
echo get_attached_file( $attach_id );

// Выведет: /home/www/site.ru/wp-content/uploads/2014/11/file_name.png

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

С версии 2.0.0 Введена.

Код get attached file: wp-includes/post.php WP 5.3

<?php
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 the attached file based on the given ID.
	 *
	 * @since 2.1.0
	 *
	 * @param string $file          Path to attached file.
	 * @param int    $attachment_id Attachment ID.
	 */
	return apply_filters( 'get_attached_file', $file, $attachment_id );
}

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

Из метки: path directory (путь папка)

Еще из раздела: Вложения (media файлы)

6 комментов
  • Илья info-effect.ru

    Привет ! можешь подсказать...в базе данных, в пост мета, wp_attached_file - 1780 строк, wp_attachment_metadata - 1773 строк...это нормально ? можно ли удалить данные строки, чтобы почистить БД...? Спасибо за внимание.

    1
    Ответить04.Ноя.2015 в 21:53 #
    • Kama7641

      В WordPress вообще нет таких таблиц, это видимо плагин какой-то... unknw

      Ответить04.Ноя.2015 в 22:30 #
      • Илья info-effect.ru

        Может я не правильно выразился, данные строки находятся в - wp_postmeta/Структура/meta_key....можно их удалить ?

        Ответить04.Ноя.2015 в 23:08 #
        • Kama7641

          Руками не советую, посмотри плагин для очистки пустых метаполей... Там надо сравнить с тем что есть в wp_posts. Ну и что там почиститься 3КБ. Не надо заниматься ерундой... ИМХО. Когда будет 20к строк хотя бы тогда еще можно подумать о чистке ну и ищите плагины для этого, желательно с отзывами хорошими.

          Ответить04.Ноя.2015 в 23:45 #
          • Илья info-effect.ru

            Спасибо за внимание, буду разбираться дальше...просто интересно, а вдруг это хлам, зачем он мне. Люблю порядок.

            Ответить05.Ноя.2015 в 00:30 #
  • @ Sergii

    Подскажите - а как получить id загружаемого медиафайла? какой-то хук есть?

    Ответить22.Авг.2019 в 12:02 #
Здравствуйте, !     Войти . Зарегистрироваться