WordPressで動的にファイルを添付してメールを送信する

物件情報サイトや資格のポータルサイトなどの資料請求フォームでは、問い合わせがあった物件・資格の資料を添付して自動返信したいケースがあります。

この記事では、WordPressで動的に添付するファイルを切り替えて、メールを送信する方法を紹介します。

資料を投稿に紐付ける

ACFを使って投稿に「ファイル」のカスタムフィールドを追加したら、適当な投稿にファイルを登録しましょう。

メールの送信処理

URLパラメータからファイルのIDを取得して、更にget_attached_file関数でファイルのパスを取得します。
これをwp_mail関数の第5引数に渡して実行すると、ファイルを添付してメールを送信することができます。

$to = 'abc@*****.jp';
$subject = 'My Subject';
$message = 'This is my message.';
$headers = array(
  'From: My Name <xyz@*****.jp>'
);
$attachments = array();
if ( isset($_GET['post_id']) && !is_array($_GET['post_id']) ) {
  $file_id = get_field('file', sanitize_text_field($_GET['post_id']));
  if ( $file_id ) {
    $file_path = get_attached_file($file_id);
    $attachments[] = $file_path;
  }
}
if ( $attachments ) {
  wp_mail( $to, $subject, $message, $headers, $attachments );
}

各フォームプラグインの送信完了後のフックにこの処理を追加すると、自動返信することができます。

コメント