概要説明
お問い合わせの履歴をプラグインを使わずに保存できるようにするためのカスタマイズ。カスタム投稿を事前に用意する必要があります。お問い合わせの履歴としての使い方だけでなく、ユーザー投稿型の機能もこちらのカスタマイズで簡単に実装が行えます。
カスタム投稿記事としてメールを保存
functions.php
/*----------------------------------------------------
Contact Form 7 から送信された情報をカスタム投稿に保存させる
----------------------------------------------------*/
if ( !function_exists( 'wpcf7_send_add_post' ) ){
function wpcf7_send_add_post(){
// 送信情報を取得
$submission = WPCF7_Submission::get_instance();
if($submission) {
$formdata = $submission->get_posted_data();
// 特定のフォームの場合のみとしたい場合はidを使用
$formid = $submission->get_contact_form()->id();
// 管理画面からフォームの編集画面を表示させ url のpost=55 の部分を指定
if ( $formid == 55 ) ) {
// 例) 本文とメールアドレスを記事本文に設定
$post_content = $formdata['your-message'] . "\n" . $formdata['your-email'];
// 投稿を作成
$insert_post = array(
'post_type' => 'mail_history', // メール履歴用のカスタム投稿を事前に用意
'post_title' => $formdata['your-subject'], // 記事タイトル
'post_content' => $post_content, // 本文
'post_status' => 'draft' // 下書き保存
);
wp_insert_post($insert_post);
}
}
}
add_action('wpcf7_mail_sent', 'wpcf7_send_add_post');
}
/wp-admin/admin.php?page=wpcf7&post=55&action=edit
特定のフォームのみという制限を加える場合は管理画面のフォーム編集画面を表示させ、URL内に含まれるパラメーターを確認します
実装後フォームから送信を行い動作確認
正常に動作していると上記のように管理画面のカスタム投稿一覧画面にフォームからの送信内容が表示されるようになります
こちらの機能を使って投稿機能を実装
メールの送信履歴保存で使うのも便利ですが、ユーザー投稿型のコンテンツサイトにも使えます。
Contact Form 7 を使ってユーザーからの投稿を記事として表示させるような機能を簡単に作ることができます。



