以下のコードで実行できる
$wp_filetype = wp_check_filetype(basename($filename), null ); //ファイル名の拡張子、mime形式を配列で取得 $wp_upload_dir = wp_upload_dir(); //ファイルのアップロード先ディレクトリを取得 $attachment = array( 'guid' => $wp_upload_dir['url'] . '/' . basename( $filename ), 'post_mime_type' => $wp_filetype['type'], //mime形式を指定「image/png」「image/jpeg」など 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ), //ファイル名を指定 'post_content' => '', //空の文字列を指定 'post_status' => 'inherit' //投稿ステータスを指定 ); $attach_id = wp_insert_attachment( $attachment, $filename, $post_id ); //投稿ID「$post_id」に対して添付ファイルをメディアライブラリにアップロード。変数「attach_id」に返ってきたIDを格納 // you must first include the image.php file // for the function wp_generate_attachment_metadata() to work require_once( ABSPATH . 'wp-admin/includes/image.php' ); //「wp_generate_attachment_metadata()」を使う場合には、このファイルを事前に読み込んでおくこと $attach_data = wp_generate_attachment_metadata( $attach_id, $filename ); //wp_update_attachment_metadata() が必要とする形式の添付ファイルのメタデータを作成する wp_update_attachment_metadata( $attach_id, $attach_data ); //添付ファイルのメタデータを更新
ただし、 $filename はサーバー上のファイルの場所を表す。 ※ファイルのURIではなく絶対パスを使用しなけらばならない。また、ファイルがアップロードディレクトリに存在する必要がある。 参考サイト