フォームからお問い合わせがあった際に、自動投稿する方法

カテゴリ

WordPress

時間

wordpressのサイトで、お見積りのお問い合わせがあった場合、その内容を自動投稿する方法を調べました。

参考はこちら
https://www.will3in.co.jp/frontend-blog/article/create-post-and-reflect-acf-group-field-from-contactform7/

仕様

  • wordpress
  • contactform7(フォーム2種類設置)
  • acfでカスタムフィールド設定
  • カスタム投稿タイプ
  • カスタムタクソノミ


// フォーム送信完了後実行
add_action('wpcf7_mail_sent', 'wpcf7_insert_post');

cf7にwpcf7mailsentというアクションフックがあるのでこれを利用します。
これで、フォームの送信が完了した後に、wpcf7_insert_post関数を実行できます。

wpcf7insertpost関数を作成します。

function wpcf7_insert_post($contact_form){
  
  // 送信元のform id取得
  $form_id = $contact_form->id();

  // 特定のフォームからのみ実行
  if($form_id == "2189"){
    // おまじない
    $submission = WPCF7_Submission::get_instance();

    if($submission){
      // フォーム内容取得
      $form_data = $submission->get_posted_data();
  
      // 投稿内容セット
      $new_post = array(
        "post_type"=>'item', //カスタム投稿タイプ指定
        'post_title' => $form_data['your-type'], //記事タイトル設定
        'post_content' => $form_data['your-textarea'], //記事内容設定
        'post_status' => 'publish', //記事を公開状態に
      );
  
      // 新規投稿、投稿ID取得
      $post_id = wp_insert_post($new_post);
  
      // タームにチェック
      wp_set_object_terms($post_id, $form_data['your-type'], 'genre');
  
      // カスタムフィールド追加
      if(!is_wp_error($post_id)){
        add_post_meta($post_id, 'price', $form_data['your-textarea']);
        add_post_meta($post_id, 'publish', $form_id);
      }
    }
  }
}


これでお問い合わせがあった際、必要な項目を抜き出して、自動投稿することができます。