• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

関数リファレンス/wp insert attachment

提供: WordPress Codex 日本語版
移動先: 案内検索

説明

メディアライブラリへ添付ファイルを追加します。併せて wp_update_attachment_metadata()wp_generate_attachment_metadata() も使ってください。成功すると wp_posts テーブルに作られたエントリーの ID を返します。

この関数は WordPress が添付ファイルを扱うときに使用する低レベル API の一部です。添付ファイルをアップロードして追加する処理の全体を一度に実行するには、ほとんどの場合、media_handle_upload() を使うとよいでしょう。

使い方

<?php wp_insert_attachment( $attachment, $filename, $parent_post_id ); ?>

パラメータ

$attachment
配列) (必須) データベースの wp_posts テーブルへ書き込む、添付ファイルに関するデータの配列。キーとして、少なくとも post_titlepost_content(このキーの値は空文字列にする)、post_statuspost_mime_type を含める必要があります。
初期値: なし
$filename
文字列) (オプション) サーバー上のファイルの場所。ファイルの URI ではなく絶対パスを指定してください。ファイルは uploads ディレクトリに置く必要がありますwp_upload_dir() を見てください。
初期値: false
$parent_post_id
整数) (オプション) 添付ファイルは親の投稿や固定ページに紐付けることができます。親投稿の ID を指定するか、紐付けないなら 0 を指定します。
初期値: 0

戻り値

添付ファイルの ID(整数)を返します。失敗すると 0(整数)を返します。

用例

ID が 37 の投稿を親にして添付ファイルを追加する例です。

<?php
// $filename はアップロード用ディレクトリにあるファイルのパス。
$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 );

// wp_generate_attachment_metadata() の実行に必要なので下記ファイルを含める。
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 );

// アイキャッチ画像にする。
set_post_thumbnail( $parent_post_id, $attach_id );

参考

一部のサーバーでは、GUID を作るために _wp_relative_upload_path() を利用しても正しい結果が得られない場合があります。

変更履歴

  • 新規導入 : 2.0

ソースファイル

wp_insert_attachment()wp-includes/post.php にあります。

関連項目

wp_get_attachment_url(), wp_delete_attachment(), wp_insert_post()


関数リファレンステンプレートタグ目次もご覧ください。


最新英語版: WordPress Codex » Function Reference/wp_insert_attachment最新版との差分