
WordPress

フォームからお問い合わせがあった際に、自動投稿する方法
<p>wordpressのサイトで、お見積りのお問い合わせがあった場合、その内容を自動投稿する方法を調べました。<br><br>参考はこちら<br><a href="https://www.will3in.co.jp/frontend-blog/article/create-post-and-reflect-acf-group-field-from-contactform7/" target="_blank" rel="noopener noreferrer">https://www.will3in.co.jp/frontend-blog/article/create-post-and-reflect-acf-group-field-from-contactform7/</a><br></p><h2 id="h00b8af9eb7">仕様</h2><ul><li>wordpress</li><li>contactform7(フォーム2種類設置)</li><li>acfでカスタムフィールド設定</li><li>カスタム投稿タイプ</li><li>カスタムタクソノミ</li></ul><p><br></p><pre><code>// フォーム送信完了後実行
add_action('wpcf7_mail_sent', 'wpcf7_insert_post');</code></pre><p>cf7にwpcf7<em>mail</em>sentというアクションフックがあるのでこれを利用します。<br>これで、フォームの送信が完了した後に、wpcf7_insert_post関数を実行できます。<br><br>wpcf7<em>insert</em>post関数を作成します。</p><pre><code>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);
}
}
}
}</code></pre><p><br>これでお問い合わせがあった際、必要な項目を抜き出して、自動投稿することができます。<br></p>