Функция GET_ATTACHED_FILE() в WordPress: описание, примеры использования

# Функция GET_ATTACHED_FILE() в WordPress

Функция get_attached_file() используется для получения пути к файлу, который прикреплён к записи, на основе ID этого вложения.

## Описание функции

По умолчанию путь к файлу будет обработан через фильтр get_attached_file. Если передать true в аргументе $unfiltered, результат вернётся без фильтрации.

Функция находит значение метаданных _wp_attached_file для конкретного вложения. Это удобно, так как вам не нужно самостоятельно искать название метаданных, и можно использовать механизм фильтрации для изменения имени файла.

**Использует:** 
- get_post_meta()

**Используется в:** 
- wp_maybe_generate_attachment_metadata()
- wp_get_original_image_path()

### Время выполнения

- 1 раз — 0.000594 секунд (медленно) 
- 50000 раз — 0.41 секунд (очень быстро) 

**Тестирование:** PHP 7.0.8, WordPress 4.6

## Хуки функции

- get_attached_file

## Возвращаемое значение

Функция возвращает строку с путем к файлу, если файл прикреплён. Если нет, возвращается false.

## Использован��е

```php
get_attached_file( $attachment_id, $unfiltered );

Аргументы

  • $attachment_id (int) (обязательный) — ID вложения.
  • $unfiltered (true|false) — Нужно ли пропустить фильтр get_attached_file. По умолчанию: false.

Примеры использования

Пример 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

Код функции

Функция get_attached_file реализована следующим образом:


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

// Если файл задан относительным путем, добавляем директорию загрузки
if ( $file && ! str_starts_with( $file, '/' ) && ! preg_match( '|^.:|', $file ) ) {
    $uploads = wp_get_upload_dir();
    if ( false === $uploads['error'] ) {
        $file = $uploads['basedir'] . "/$file";
    }
}

if ( $unfiltered ) {
    return $file;
}

/**
 * Фильтрует путь к прикрепленному файлу на основе данного ID.
 *
 * @since 2.1.0
 *
 * @param string|false $file          Путь к файлу, если файл прикреплен, иначе false.
 * @param int          $attachment_id ID вложения.
 */
return apply_filters( 'get_attached_file', $file, $attachment_id );

}

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

Вот некоторые полезные функции, которые могут вам понадобиться:

  • get_home_path() — возвращает путь к домашней директории сайта.
  • get_parent_theme_file_path() — возвращает путь к файлам родительской темы.
  • get_temp_dir() — возвращает путь к временной директории.
  • get_template() — возвращает название текущей темы.
  • wp_get_upload_dir() — возвращает пути и URLs для загрузок.

Используйте эти функции в комбинации для более эффективной работы с вложениями и файлами в WordPress.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *