説明
wp_insert_attachment() は、ファイルをメディアライブラリに登録する関数です。
基本構文
wp_insert_attachment( array|string $args, string|false $file = false, int $parent_post_id = 0, bool $wp_error = false, bool $fire_after_hooks = true ): int|WP_Error
引数
$args:post_title、post_mime_typeなどの配列$file:ファイルのパス$parent_post_id:親投稿のID$wp_error:失敗時にWP_Errorを返すか
戻り値
添付ファイルのID。失敗時は 0 または WP_Error。
使い方(サンプル)
$id = wp_insert_attachment( array(
'post_title' => 'サンプル画像',
'post_mime_type' => 'image/jpeg',
'post_status' => 'inherit',
), $file, 123 );
注意点
- 登録後に
wp_generate_attachment_metadata()でメタデータを作ります。 - ファイルは事前にアップロードディレクトリに置く必要があります。
実務での使いどころ
- すでにアップロードフォルダにあるファイルを、メディアとして登録するとき。
- プログラムで作成した画像や、外部から取り込んだファイルを、メディアに追加するとき。
よくあるミスと対処
- ファイルが、アップロードフォルダの中にない。
- 登録しただけで、サムネイルが作られない。
wp_generate_attachment_metadata()とwp_update_attachment_metadata()を続けて呼ぶ。 post_mime_typeを指定していない。- 戻り値が
0やWP_Errorのときを、考えていない。
NG例
$id = wp_insert_attachment( array( 'post_title' => '画像' ), $file ); // MIMEタイプがない。サムネイルもない
OK例
$id = wp_insert_attachment( array(
'post_mime_type' => 'image/jpeg',
'post_title' => '画像',
'post_status' => 'inherit',
), $file );
if ( $id ) {
require_once ABSPATH . 'wp-admin/includes/image.php';
wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
}
使い分け早見表
| 関数 | 役割 |
|---|---|
wp_insert_attachment() |
ファイルを、メディアとして登録する |
wp_generate_attachment_metadata() |
サムネイルを生成する |
media_handle_upload() |
アップロードから、登録・サムネイル生成まで、まとめて行う |
関連項目
wp_generate_attachment_metadata()、media_handle_upload()
公式リファレンス:wp_insert_attachment() | Function | WordPress Developer Resources

コメント