フォームを通した資料請求、投稿のデータを引き継ぐケース

ワードプレスのメモ

  • 資料のダウンロードをしてもらう際、必ず資料請求フォームを通したい。
  • 資料は複数あり、増減、更新もある。

こういうケースの話。

※MW WP Form使用が前提です。

まず思いつくやり方

フォームにラジオボタンなりチェックボックスを用意しておき、選択状況に応じて自動返信文を切り替える、というのが素直な解決法と思います。

function my_mail( $Mail, $values, $Data ){
	if ( $Data->get( 'dl-radio' ) == '資料1' ){
		$Mail->body .= $Data->get( 'dl-radio' ) . 'は下記よりダウンロードいただけます。' . "\n" . home_url() . '/doc/document-1.pdf' . "\n" . "\n";
	}elseif( $Data->get( 'dl-radio' ) == '資料2' ){
		$Mail->body .= $Data->get( 'dl-radio' ) . 'は下記よりダウンロードいただけます。' . "\n" . home_url() . '/doc/document-2.pdf' . "\n" . "\n";
	}elseif( $Data->get( 'dl-radio' ) == '資料3' ){
		$Mail->body .= $Data->get( 'dl-radio' ) . 'は下記よりダウンロードいただけます。' . "\n" . home_url() . '/doc/document-2.pdf' . "\n" . "\n";
	}
	return $Mail;
}
add_filter( 'mwform_auto_mail_mw-wp-form-XXX', 'my_mail', 10, 3 );
add_filter( 'mwform_admin_mail_mw-wp-form-XXX', 'my_mail', 10, 3 );

こんな感じでfunctions.phpに用意しておく。

「XXX」はフォーム識別子、ファイルのパスは適宜変えてください。

これで、自動返信の末尾に「資料○○は下記よりダウンロードいただけます。」という一文が加わります。チェックボックスにすれば複数も可。

資料の数が少なく、更新もたまにしか無い、という場合ならこれで済むと思います。

頻繁に増減・変更されるような場合

上記の例は「functions.php」の書き換えが必須なので、お客様での変更はまず無理でしょう。

詳細な編集ガイド、バックアップを取る指示などを用意すれば別でしょうけれど。
で、思いつくのが「資料を投稿化して、投稿内のデータで処理しよう」という方法。

カスタムフィールドに資料をアップロードしておき、それを自動返信に反映させればよい、と。

カスタムフィールド

「資料投稿タイプ」なり「資料カテゴリ」にカスタムフィールドを用意。

  • file_upload – ファイルのアップロードフォーム
  • file_anker – 資料の名称フォーム

functions.php

/* ---------- 投稿カスタムフィールドを引数にして自動返信の内容を変える ---------- */
function my_mail_var( $Mail, $values, $Data ){
	if( get_post_meta( $_GET['post_id'], 'file_upload', true ) ){
		$file = get_post_meta( $_GET['post_id'], 'file_upload', true );
		$file_url = wp_get_attachment_url( $file );
		$file_anker = get_post_meta( $_GET['post_id'], 'file_anker', true );
		$Mail->body .= '資料「' . $file_anker . '」は下記よりダウンロードいただけます。' . "\n" . $file_url . "\n" . "\n";
	}
	return $Mail;
}
add_filter( 'mwform_auto_mail_mw-wp-form-XXX', 'my_mail_var', 10, 3 );
add_filter( 'mwform_admin_mail_mw-wp-form-XXX', 'my_mail_var', 10, 3 );

「XXX」はフォーム識別子

フォームへのリンク

「資料投稿タイプ」や「資料カテゴリ」のシングルに表示させます。

<a href="<?php echo home_url( '/' ); ?>contact-document/?post_id=<?php echo $post->ID; ?>">この資料を請求する</a>

「contact-document」は資料請求フォームページのスラッグ。重要なのは変数(?post_id=~)なので、URLの書き方は何でも。

MW WP Formのフォーム

これはあっても無くてもいいですが、何の資料を請求しようとしているか?を目視させるため加えています。

ご希望の資料名:[mwform_text name="document_id" value="{file_anker}"]

「URL引数を有効にする」をお忘れなく!

 

これで、自動返信と管理者宛てメールに、

=================================

資料「資料○○」は下記よりダウンロードいただけます。
https://pico-cre.com/wp/wp-content/uploads/document-3.pdf

=================================

のようにダウンロードリンクが付与されます。

そのほか

  • カスタムフィールドの入力は、出来れば必須にしたいところです。
  • メディアアップローダーでファイルをアップロードするため、URLがちょっと不細工です。
    いじくればサイトルートに変換することも出来そうな気がしますが不明。
  • 同じくメディアアップローダーでファイルをアップロードするため、ファイル名に日本語(2byte)を使っていると、エンコードされて訳が分からなくなります。
    ※「資料1」だと「966fe79469ee93dcd9a8c2357306de78.pdf」となりました。
    半角英数、-、_に留めてもらいましょう。
  • とは言え、日本語ファイル名を使っちゃう場合もあり得るので、カスタムフィールドをファイルアップロード/資料名に分けて、任意の資料名を付けるようにしています。

動作サンプル

投稿タイプ「document」に上記を組み込みました。

https://pico-cre.com/document/

資料は完全なダミーです。