wordpressのメディアライブラリに画像をアップロードし、カスタムフィールドテンプレートの値を更新する

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