ワードプレスのwp_insert_attachment関数の使用方法・解説

概要

wp_insert_attachment関数は、ワードプレスのメディアライブラリに新しい添付ファイル(メディア)を登録するために使用されます。この関数を利用することでプログラムから直接メディアを追加でき、様々な用途で活用されます。以下に、一般的な利用ケースを挙げます。

  1. 自動的に投稿やページに画像を追加する。
  2. CSVやXMLファイルなどからバルクインポートを行う。
  3. カスタムプラグインでのメディアアップロード機能を実装する。
  4. 画像やファイルの一括アップロード機能を構築する。
  5. 外部ストレージサービスからメディアを取り込む。
  6. ユーザーがカスタムアプリケーションを通じてメディアを追加できるようにする。
  7. 投稿のカスタムフィールドを連携させる際にメディアを添付する。
  8. 独自のワードプレステーマでメディア管理を強化する。

構文

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);
}

この関数について質問する


上の計算式の答えを入力してください