概要
wp_insert_attachment
関数は、ワードプレスのメディアライブラリに新しい添付ファイル(メディア)を登録するために使用されます。この関数を利用することでプログラムから直接メディアを追加でき、様々な用途で活用されます。以下に、一般的な利用ケースを挙げます。
- 自動的に投稿やページに画像を追加する。
- CSVやXMLファイルなどからバルクインポートを行う。
- カスタムプラグインでのメディアアップロード機能を実装する。
- 画像やファイルの一括アップロード機能を構築する。
- 外部ストレージサービスからメディアを取り込む。
- ユーザーがカスタムアプリケーションを通じてメディアを追加できるようにする。
- 投稿のカスタムフィールドを連携させる際にメディアを添付する。
- 独自のワードプレステーマでメディア管理を強化する。
構文
wp_insert_attachment( $attachment, $file, $post_id, $metadata );
パラメータ
$attachment
(array) – 添付ファイルの情報を含む配列。$file
(string) – アップロードするファイルのフルパス。$post_id
(int) – 添付ファイルを関連付ける投稿のID(オプション)。$metadata
(array) – ファイルのメタデータ(オプション)。
戻り値
- 成功した場合、添付ファイルのポストIDを返します。失敗した場合は0を返します。
関連する関数
使用可能なバージョン
wp_insert_attachment
関数は、WordPress 2.0.0以降で利用可能です。
コアファイルのパス
wp-includes/post.php
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード 1 – 添付ファイルをアップロード
このコードは、指定されたファイルを添付ファイルとして登録します。
$file = 'path/to/your/image.jpg';
$post_id = 0; // 投稿ID、0の場合は添付ファイルのみ
$attachment = array(
'guid' => $file,
'post_mime_type' => 'image/jpeg',
'post_title' => 'Sample Image',
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment($attachment, $file, $post_id);
サンプルコード 2 – 添付ファイルのメタデータを更新
このコードでは、新しい添付ファイルを追加した後にメタデータを更新します。
$attachment_id = wp_insert_attachment($attachment, $file, $post_id);
require_once(ABSPATH . 'wp-admin/includes/image.php');
$metadata = wp_generate_attachment_metadata($attachment_id, $file);
wp_update_attachment_metadata($attachment_id, $metadata);
サンプルコード 3 – 添付ファイルを投稿に紐づける
このコードは、指定の投稿にメディアを紐づけて追加します。
$post_id = 123; // 投稿のID
$attachment_id = wp_insert_attachment($attachment, $file, $post_id);
サンプルコード 4 – ファイルのアップロードとメディア登録
ユーザーからファイルをアップロードし、それをメディアライブラリに登録します。
if ($_FILES['file']['tmp_name']) {
$file = $_FILES['file']['tmp_name'];
$attachment = array(
'guid' => $file,
'post_mime_type' => $_FILES['file']['type'],
'post_title' => sanitize_file_name($_FILES['file']['name']),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment($attachment, $file);
}
サンプルコード 5 – 添付ファイルをバルクインポート
このコードは、複数のファイルをループで回して一括登録します。
$files = array('path/to/image1.jpg', 'path/to/image2.jpg');
foreach ($files as $file) {
$attachment = array(
'guid' => $file,
'post_mime_type' => 'image/jpeg',
'post_title' => basename($file),
'post_content' => '',
'post_status' => 'inherit'
);
$attachment_id = wp_insert_attachment($attachment, $file);
}