# Как прикрепить загруженное изображение (вложение) к посту?
## Вопрос
Я пытаюсь прикрепить (добавить) уже загруженное изображение (вложение) к посту. В таблице wp_postmeta
я добавил _wp_attached_file
как meta_key
и значение = productimages/Routers/v/CISCO1941.jpg
, но это не работает, и я не вижу изображение как вложение к посту! Однако, когда я использую кнопку добавления изображения в HTML-редакторе WordPress, она добавляет точно такое же поле в эту таблицу, но с другим ID поста!
Есть ли какая-то зависимость для этого поля?
## Ответ
1. **Вложение — это пост.** Каждое вложение является постом с типом attachment
. Больше информации можно найти в документации WordPress о типах постов.
2. **Связь между вложениями и постами.** Каждое вложение прикрепляется к посту через поле post_parent
в таблице wp_posts
. В это поле вам нужно указать ID поста, к которому вы хотите прикрепить вложение.
### Как обновить поле post_parent
Вам нужно обновить поле post_parent
вложения, установив в него ID нужного поста:
```php
wp_update_post( [
'ID' => $attachment_id,
'post_parent' => $post_id
] );
Альтернативный способ — прямой запрос к базе данных
Вы также можете сделать это с помощью прямого запроса к базе данных. Это может быть лучше, так как wp_update_post()
выполняет несколько операций, таких как создание ревизий (если они включены), обновление данных комментариев и так далее. Если вам нужно выполнить операцию для большого объёма данных, лучше использовать прямой запрос:
global $wpdb;
$wpdb->update( $wpdb->posts, [ 'post_parent' => $post_id ], [ 'ID' => $attachment_id ] );
После выполнения обновления кэша поста, чтобы удостовериться, что изменения применились:
clean_post_cache( $post_id );
Заключение
Теперь вы знаете, как прикрепить уже загруженное изображение (вложение) к посту. Если у вас ��озникнут дополнительные вопросы, не стесняйтесь обращаться за помощью!