wordpressのメディアライブラリに画像をアップロードし、カスタムフィールドテンプレートの値を更新するサンプルコードです。
$locales = array('ja','en'); $layout_img_value = ""; $index = $this->Roomlayout_Img_IDX_START; foreach($locales as $locale){ $index += 1; $wp_upload_dir = wp_upload_dir(); //ファイルのアップロード先ディレクトリを取得 $filename = $wp_upload_dir["path"] . '/' . $_FILES["roomlayout_img_".$locale]["name"][$index][0]; $image_file_path = $_FILES['roomlayout_img_'.$locale]['tmp_name'][$index][0]; $tmp_image_data = file_get_contents($image_file_path); // Get image data file_put_contents($filename, $tmp_image_data); $wp_filetype = wp_check_filetype(basename($filename), null ); //ファイル名の拡張子、mime形式を配列で取得 $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を格納 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() が必要とする形式の添付ファイルのメタデータを作成する _log($attach_id); wp_update_attachment_metadata( $attach_id, $attach_data ); //添付ファイルのメタデータを更新 if($locale == 'ja'){ $layout_img_value .= "[:ja]".$attach_id; }elseif($locale == "en"){ $layout_img_value .= "[:en]".$attach_id; } } update_post_meta($post_id, "roomlayout_img", $layout_img_value);