フォームからお問い合わせがあった際に、自動投稿する方法
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);
}
}
}
}
これでお問い合わせがあった際、必要な項目を抜き出して、自動投稿することができます。