2019年1月10日 追記: セッションによる多重送信機能を利用できるように、一部コードを書き直しました。

TransmitMail を WordPress で使いたい場合、いろいろなやり方があるかと思いますが、私だったらこうする、みたいなことを書いてみたいと思います。

ファイル構成

ファイル構成は下記のようにします。

WordPress の設置ディレクトリ/
    └ wp-content/
        └ themes/
            └ theme_name/
                ├ page-contact.php
                └ contact/
                    ├ ※ここに TransmitMail のファイル一式を置く
                    ├ ※ index.php は不要なので削除する
                    ├ テンプレートファイル
                    ├ config/
                    ├ lib/
                    ├ log/
                    └ tmp/

contact ページを作る

スラッグはなんでもいいですが、ここでは contact というスラッグでページを作ることにします。本文は空にします。(本文を入れても構いません。その場合、本文を出力する記述などが必要になります。)

page-contact.php に TransmitMail を読み込む

上記で作った contact ページのテンプレートファイルが page-contact.php なので、このファイルに TransmitMail の読み込みなどを書いてきます。

HTML の構造にもよりますが、下記のようなコードを書きます。

<?php
require_once TEMPLATEPATH . '/contact/lib/TransmitMail.php';
$tm = new TransmitMail(TEMPLATEPATH . '/contact/config/config.php');

get_header();
?>
<div class="content">
    <?php
    $tm->run();
    ?>
</div>
<?php get_footer();

設定ファイルは PHP ファイルを利用します。

config.php を編集する

config.php を下記の記述します。

<?php
// この辺りはいつもの TransmitMail の設定
$config['to_email'] = 'info@example.com';
$config['to_subject'] = '[株式会社テスト]お問い合わせ';
$config['auto_reply_subject'] = '[株式会社テスト]お問い合わせありがとうございます';
$config['auto_reply_name'] = '株式会社テスト';

// 以下が WordPress で TransmitMail を利用する場合の特有の設定
$config['tpl_input'] = TEMPLATEPATH . '/contact/input.html';
$config['tpl_confirm'] = TEMPLATEPATH . '/contact/confirm.html';
$config['tpl_finish'] = TEMPLATEPATH . '/contact/finish.html';
$config['tpl_error'] = TEMPLATEPATH . '/contact/error.html';
$config['mail_body'] = TEMPLATEPATH . '/contact/config/mail_body.txt';
$config['mail_auto_reply_body'] = TEMPLATEPATH . '/contact/config/mail_auto_reply_body.txt';
$config['log_dir'] = TEMPLATEPATH . '/contact/log/';
$config['tmp_dir'] = TEMPLATEPATH . '/contact/tmp/';

注意点としては、 $config['session']false にしておくことでしょうか。(セッションによる多重送信防止機能がうまく動作しないためです。おそらく、 WordPress のセッション周りと競合しているんだと思います。この設定により、セッションによる多重送信防止機能はオフになります。)

2019年1月10日 追記 セッションによる多重送信防止機能が使えることが確認できたため、 $config['session'] = false; の行を削除しました。

TransmitMail のテンプレートファイルを編集する

最後に TransmitMail のテンプレートファイルを編集します。

ヘッダー、フッターなどは WordPress のテーマファイルに書いているので、 form 要素の周辺と TransmitMail に関連する部分だけを記述します。

注意点としては、 form 要素の action 属性の記述しないことです。 action 属性を記述しないことで、 submit 先が今見ているページ自身になります。 TransmitMail の初期のテンプレートファイルは action 属性が index.php になっているので、初期テンプレートから編集する場合は注意してください。

動作確認

http://localhost/contact/ などの URL で TransmitMail が動作することが確認できるかと思います。

以下は Twenty Seventeen に TransmitMail を設置してみた場合のスクリーンショット画像です。

まとめ

以上、 TransmitMail を WordPress で利用する場合の設置方法のご紹介でした。

WordPress にはいくつかのメールフォームプラグインがありますが、レイアウトの自由度が低かったりしますので、 WordPress で制作したサイトにレイアウトの自由度の TransmitMail を設置したい場合に、この記事を参考にしていただければと思います。

それでは、 Let’s enjoy WordPress and TransmitMail!