- 資料のダウンロードをしてもらう際、必ず資料請求フォームを通したい。
- 資料は複数あり、増減、更新もある。
こういうケースの話。
※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/
資料は完全なダミーです。