Title: コンタクトフォーム7から記事作成した際の画像保存
Last modified: 2023年9月28日

---

# コンタクトフォーム7から記事作成した際の画像保存

 *  [nagisane](https://ja.wordpress.org/support/users/nagisane/)
 * (@nagisane)
 * [3年前](https://ja.wordpress.org/support/topic/%e3%82%b3%e3%83%b3%e3%82%bf%e3%82%af%e3%83%88%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a07%e3%81%8b%e3%82%89%e8%a8%98%e4%ba%8b%e4%bd%9c%e6%88%90%e3%81%97%e3%81%9f%e9%9a%9b%e3%81%ae%e7%94%bb%e5%83%8f%e4%bf%9d/)
 * 現在、コンタクトフォーム7のフォーム送信から記事投稿ができるようカスタマイズを
   行っているのですが、フォームでアップロードした画像のメディアライブラリへのアップ
   ロードと記事のカスタムフィールドへの追加がうまくいかない状態です。
 * メディアライブラリへは、画像が保存される代わりに、ファイル名が「array」と記載
   されている謎のファイルが保存されています。
 * 当方PHPはコピペでなんとか触れる程度で、参考サイトを見ながらできる範囲いろいろ
   と試してみましたが解決することができず…。
 * 先日もこちらで助けていただいたばかりで大変恐縮なのですが、詳しい方がいらっしゃい
   ましたら解決策をご教授いただけますと幸いです。
 * ↓コード
 *     ```wp-block-code
       //フォーム送信時にブログ投稿をおこなう
       function wpcf7_insert_post(\WPCF7_ContactForm $contactForm)
       {
       //送信情報を取得
       $submission = WPCF7_Submission::get_instance();
           $form_id = $contactForm->id();
   
       if($submission && $form_id == "40") {
       $formdata = $submission->get_posted_data();
       $uploaded_files = $submission->uploaded_files();
       $uploaded_files2 = $submission->uploaded_files();
       $uploaded_files3 = $submission->uploaded_files();
       $new_post = array(
       'post_type' => 'user-report',
       'post_title' => $formdata['ttl'],
       'post_status' => 'draft', //下書き
       'post_content' => $formdata['your-txt']
       );
       //ブログ作成
       $post_id = wp_insert_post($new_post);
       //作成に成功した場合
       if(!is_wp_error($post_id)) {
       //カテゴリを取得
       $item1 = $_POST['product-select1'];
       $term1 = get_term_by('name', $item1 ,'use_item');
       $term_id1 = $term1->term_id;
       $item2 = $_POST['product-select2'];
       $term2 = get_term_by('name', $item2 ,'use_item');
       $term_id2 = $term2->term_id;
       $item3 = $_POST['product-select3'];
       $term3 = get_term_by('name', $item3 ,'use_item');
       $term_id3 = $term3->term_id;
       //カスタムフィールドのデータも登録する
       wp_set_object_terms($post_id,array($term_id1,$term_id2,$term_id3),'use_item');
       add_post_meta($post_id, 'name', $formdata['your-handlename']);
       add_post_meta($post_id, 'date', $formdata['date']);
       add_post_meta($post_id, 'time', $formdata['time']);
       add_post_meta($post_id, 'field', $_POST['area']);
       add_post_meta($post_id, 'field1', $formdata['area2']);
       add_post_meta($post_id, 'results', $formdata['catch']); 
         /* 画像の設定 */
                   if (isset($uploaded_files['photo1'])) {
                       $thumb_path = '/user-report/' . str_replace($baseurl, '', $uploaded_files['photo1']);
                       $thumb_id = addAttachmentFromForm($thumb_path, $uploaded_files['photo1'], $post_id, $time);
                       update_field('photo1', $thumb_id,  $post_id);
                   }
        if (isset($uploaded_files2['photo2'])) {
                       $thumb_path = '/user-report/' . str_replace($baseurl, '', $uploaded_files['photo2']);
                       $thumb_id = addAttachmentFromForm($thumb_path, $uploaded_files['photo2'], $post_id, $time);
                       update_field('photo2', $thumb_id,  $post_id);
                   }
        if (isset($uploaded_files3['photo3'])) {
                       $thumb_path = '/user-report/' . str_replace($baseurl, '', $uploaded_files['photo3']);
                       $thumb_id = addAttachmentFromForm($thumb_path, $uploaded_files['photo3'], $post_id, $time);
                       update_field('photo3', $thumb_id,  $post_id);
                   } 
        }
       }
       }
       add_action('wpcf7_mail_sent', 'wpcf7_insert_post', 10, 1);
   
       /* 画像の詳細処理 */
       function addAttachmentFromForm($filename, $file_base, $post_id, $time) {
       $layout_img_value = '';
        $filetype = wp_check_filetype( basename( $filename ), null );
       $wp_upload_dir = wp_upload_dir();
       $upfile = $wp_upload_dir['url'] . '/' . $time . basename( $filename );
       $copyfile = $wp_upload_dir['path'] .'/' . $time . basename( $filename );
       copy($file_base, $copyfile);
       $attachment = array(
           'guid'           => $upfile,
           'post_mime_type' => $filetype['type'],
           'post_title'     => preg_replace( '/.[^.]+$/', '', basename( $upfile ) ),
           'post_content'   => '',
           'post_status'    => 'inherit'
       );
       $attach_id = wp_insert_attachment( $attachment, $copyfile, $post_id );
       require_once( ABSPATH . 'wp-admin/includes/image.php' );
       $attach_data = wp_generate_attachment_metadata( $attach_id, $copyfile );
       wp_update_attachment_metadata( $attach_id, $attach_data );
   
       if($attach_id) return $attach_id;
       else return false;
       }
       ```
   
 * ↓仕様
 * ・フォームでは、JPG、PNGなどの画像データのみをアップロード
 * ・カスタムフィールドは、**Advanced Custom Fields**で作成。
 * 画像を入れたいフィールドの設定➡フィールドタイプ：画像、ライブラリ：投稿にアップ
   ロード
 * ・最大3枚の画像をアップロード
 * ↓参考にしたサイト
 * [https://qiita.com/webiscuit/items/23a2b0f9d218a0d972eb](https://qiita.com/webiscuit/items/23a2b0f9d218a0d972eb)
 * [https://teratail.com/questions/274973](https://teratail.com/questions/274973)
 * 何卒よろしくお願い致します。

1件の返信を表示中 - 1 - 1件目 (全1件中)

 *  [shokun0803](https://ja.wordpress.org/support/users/shokun0803/)
 * (@shokun0803)
 * [3年前](https://ja.wordpress.org/support/topic/%e3%82%b3%e3%83%b3%e3%82%bf%e3%82%af%e3%83%88%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a07%e3%81%8b%e3%82%89%e8%a8%98%e4%ba%8b%e4%bd%9c%e6%88%90%e3%81%97%e3%81%9f%e9%9a%9b%e3%81%ae%e7%94%bb%e5%83%8f%e4%bf%9d/#post-11684567)
 * nagisaneさん、こんにちは。
 * 参考サイトのコピペで動作するかどうかは検証するにも時間や労力がかかってしまうので、
   フォーラムで回答が付くのは意外に難しいかもしれません。
 * PHP に関して初心者とのことのようですので、この手の大きなコードのコピペのみでの
   稼働は非常に難しいと考えます。手法としては参考サイトに記載されているコードをご
   自身で読み解きながら、必要な箇所の最低限の機能追加から試されてみることをお勧め
   いたします。
 * 具体的には画像をアップロードしたいことが目的かと思いますので、いきなりカスタム
   フィールドへの追加を行わず、最低限の内容のテスト用フォームからサーバー上のどこか
   のディレクトリへ画像が正常にアップロードできるところまでを検証されてみてはいかが
   でしょうか。
 * ContactForm 7 を利用されている場合、記憶が正しければフォームに添付されたファイル
   は一時的にサーバー上にアップロードされてもメールへの添付送信が完了した際に削除
   されサーバー上には残らなかったと思います。ですのでまずはフォームから送信された
   ファイルがどこか適切なディレクトリへ保存されるコードを書き、確実に保存できること
   を確認すること辺りから検証されると良いのではないでしょうか。
 * ご参考になれば。

1件の返信を表示中 - 1 - 1件目 (全1件中)

 トピック「コンタクトフォーム7から記事作成した際の画像保存」には新たに返信すること
はできません。

## タグ

 * [コンタクトフォーム7、記事投稿、画像アップロード](https://ja.wordpress.org/support/topic-tag/%e3%82%b3%e3%83%b3%e3%82%bf%e3%82%af%e3%83%88%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a07%e3%80%81%e8%a8%98%e4%ba%8b%e6%8a%95%e7%a8%bf%e3%80%81%e7%94%bb%e5%83%8f%e3%82%a2%e3%83%83%e3%83%97%e3%83%ad%e3%83%bc/)

 * フォーラム: [使い方全般](https://ja.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 1件の返信
 * 2人の参加者
 * 最後の返信者: [shokun0803](https://ja.wordpress.org/support/users/shokun0803/)
 * 最後の活動: [3年前](https://ja.wordpress.org/support/topic/%e3%82%b3%e3%83%b3%e3%82%bf%e3%82%af%e3%83%88%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a07%e3%81%8b%e3%82%89%e8%a8%98%e4%ba%8b%e4%bd%9c%e6%88%90%e3%81%97%e3%81%9f%e9%9a%9b%e3%81%ae%e7%94%bb%e5%83%8f%e4%bf%9d/#post-11684567)
 * 状態: 未解決

## トピック

### 人気のトピック

### 返信がないトピック

### サポート関連ではないトピック

### 解決済みのトピック

### 未解決のトピック

### すべてのトピック
