2018.08.19

ContactForm7のフォーム送信時に自動でブログ記事を作成する方法

こんにちは、ゾノ( @ozonosho )です。

さて、今日のブログではWordPressのプラグイン「Contact Form 7」でフォーム送信時に自動でブログ記事を作成する方法を紹介したいと思います。

この方法を利用すれば、たとえば応募フォームで送信された応募情報を利用してそのままブログを作成することができるので、新メンバー追加時の自己紹介ブログを自動で作成することなんかもできちゃいます。

カスタムフィールド項目にも対応可能!
自サイトの運用に活用できそうな方はぜひ参照ください。

ContactForm7のフォーム送信時に自動でブログ記事を作成する方法

実装は簡単で、下記のような関数をfunctions.phpに追加してください。

//フォーム送信時にブログ投稿をおこなう
function wpcf7_insert_post(){
	//送信情報を取得
	$submission = WPCF7_Submission::get_instance();
	if($submission) {
		$formdata = $submission->get_posted_data();
		$new_post = array(
			'post_type' => 'post',
			'post_title' => $formdata['your-title'],
			'post_status' => 'draft', //下書き
			'post_content' => $formdata['your-content']
		);
		//ブログ作成
		$post_id = wp_insert_post($new_post);
		//作成に成功した場合
		if(!is_wp_error($post_id)) {
			//カスタムフィールドのデータも登録する
			add_post_meta($post_id, 'your_field', $formdata['your_field']);
		}
	}
}
add_action('wpcf7_mail_sent', 'wpcf7_insert_post', 10, 1);

ContactForm7がメール送信時のフック「wpcf7_mail_sent」を用意してくれているので、このフックを利用して処理をおこないます。

$formdata[”]の中身は、問い合わせフォームでご自身が設定した項目名称を入れてください。

ブログ作成は関数「wp_insert_post」にて実行されます。
カスタムフィールドの値はwp_insert_postでは登録できないので、wp_insert_postが成功した場合にadd_post_metaで追加することでカスタムフィールドの値も同時に登録することができます。

問い合わせフォームを送信して無事にブログ記事が作成されていれば成功です。

おわりに

以上、今回の記事ではWordPressのプラグイン「Contact Form 7」でフォーム送信時に自動でブログ記事を作成する方法を紹介させていただきました。

当サイトで別途紹介している記事『ContactForm7のフォーム送信時にユーザー登録を自動でおこなう方法』と組み合わせれば、ユーザー登録をおこなってそのままそのユーザーの記事としてブログを作成することもできます。ぜひ色々と試してみてください。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む