# WP_INSERT_ATTACHMENT() │ WP 2.0.0
Функция wp_insert_attachment() позволяет добавить вложение в WordPress. В этой статье мы разберем, как использовать эту функцию, а также что такое вложение и как работает этот процесс.
## Основные понятия
### Что такое вложение?
Вложение — это любой медиа-файл (например, изображение или видео), который можно прикрепить к записи или странице в WordPress. Эти файлы хранятся в библиотеке медиа.
## Параметры функции
Функция wp_insert_attachment() принимает несколько параметров. Давайте рассмотрим их:
- $args (обязательный): Массив или строка с аргументами для создания вложения.
- $file (по умолчанию: false): Имя файла. Если файл уже загружен, укажите путь.
- $parent_post_id (по умолчанию: 0): ID родительской записи, к которой вы прикрепляете вложение.
- $wp_error (по умолчанию: false): Если true, функция вернет объект WP_Error в случае ошибки.
- $fire_after_hooks (по умолчанию: true): Если true, после вставки вызовутся хуки.
## Возвращаемое значение
Функция возвращает:
- ID вложения при успешном выполнении.
- 0 или объект WP_Error в случае ошибки.
## Пример использования
### Пример 1: Добавление файла вложения в базу данных WordPress
Предположим, что файл уже загружен в директорию загрузок. Теперь нужно добавить его в базу данных WordPress и прикрепить к записи с ID 37.
```php
// Файл должен находиться в директории загрузок WordPress.
$filename = '/path/to/uploads/2013/03/filename.jpg';
// ID записи, к которой мы прикрепляем файл.
$parent_post_id = 37;
// Проверяем тип файла для поля 'post_mime_type'.
$filetype = wp_check_filetype(basename($filename), null);
// Получаем путь к директории загрузок.
$wp_upload_dir = wp_upload_dir();
// Подготавливаем массив с необходимыми данными.
$attachment = array(
'guid' => $wp_upload_dir['url'] . '/' . basename($filename),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace('/.[^.]+$/', '', basename($filename)),
'post_content' => '',
'post_status' => 'inherit'
);
// Вставляем вложение в базу данных.
$attach_id = wp_insert_attachment($attachment, $filename, $parent_post_id);
// Подключаем необходимые функции для создания метаданных.
require_once( ABSPATH . 'wp-admin/includes/image.php' );
// Создаем метаданные для вложения и обновляем запись в базе данных.
$attach_data = wp_generate_attachment_metadata($attach_id, $filename);
wp_update_attachment_metadata($attach_id, $attach_data);
Пример 2: Вложение с подписью и описанием
Если вы хотите сделать медиа-вложение с подписью и описанием, используйте следующие поля:
$attach_id = wp_insert_attachment(
array(
'guid' => $upload['url'],
'post_title' => sanitize_text_field($title),
'post_excerpt' => sanitize_text_field($caption),
'post_content' => sanitize_text_field($description),
'post_mime_type' => $response_headers['content-type'],
),
$upload['file'],
0
);
// Подключаем необходимые функции для создания метаданных.
require_once( ABSPATH . 'wp-admin/includes/image.php' );
// Создаем метаданные для вложения и обновляем запись в базе данных.
$attach_data = wp_generate_attachment_metadata($attach_id, $filename);
wp_update_attachment_metadata($attach_id, $attach_data);
Заметки
- Эта функция используется для работы с вложениями. Если вы хотите внести изменения в записи или страницы, используйте функцию
wp_insert_post().
Изменения в функции
- Версия 2.0.0: функция была введена.
- Версия 4.7.0: добавлен параметр
$wp_errorдля возможности возврата WP_Error в случае неудачи. - Версия 5.6.0: добавлен параметр
$fire_after_hooks.
Связанные функции
Функция wp_insert_attachment() тесно связана с другими функциями для работы с вложениями и записями:
wp_insert_post()wp_insert_category()wp_generate_attachment_metadata()wp_update_attachment_metadata()
Эти функции помогут вам более эффективно работать с медиа-файлами в WordPress.