WordPress外部で wp_mail() を利用する方法
WordPress の便利なメール送信関数 wp_mail() を、WordPressのインストールディレクトリ外で利用する方法を紹介します。この手法を使うと、WordPressの設定やプラグイン(例: WP Mail SMTP)を引き継いだ形でメールを送信できます。
0. 今回なぜこのような形を検討する必要があったか
クライアント様は、WordPressのサイトとは別に、LPを作成しており、LPのページについては、WordPressを利用していなかった。そのLPの申し込みフォームのメールがgmail宛に送信できない事象が発生しており、それに対処するため実装しました。
1. 前提条件
- WordPressがインストールされていること。
- 外部スクリプトから wp_mail() を利用する環境が整っていること。
- SMTPプラグイン(例: WP Mail SMTP)を設定済みの場合、これらの設定も引き継がれます。
*難しく書いてありますが、同じURL (example.com) でWordPressが正しく表示されていれば、いいのです。
2. 実装例
以下に、wp_mail() を外部スクリプトで利用する方法を示します。
ファイル構成
パターン1
/path/to/wordpress
├── wp-load.php (WordPressロード用)
└── mail-test.php (今回作成するスクリプト)
パターン2
/path/to/wordpress
└──wp-load.php (WordPressロード用)
/path/to/lp
└── mail-test.php (今回作成するスクリプト)
どちらもコードを実装するのは: mail-test.php
// WordPress の wp-load.php を読み込む
require_once('/path/to/wordpress/wp-load.php');
// マルチバイトメール設定(日本語対応)
mb_language('ja');
mb_internal_encoding('UTF-8');
// メール送信情報を設定
$to = 'recipient@example.com'; // 送信先メールアドレス
$subject = '外部スクリプトからのメール送信テスト';
$message = 'このメールは WordPress の wp_mail() を利用して送信されています。';
// ヘッダー設定
$domain = 'example.com'; // ドメイン名
$from = '〇〇歯科医院'; // 送信者名
$email = 'info@example.com'; // 送信元メールアドレス
$headers = [];
$headers[] = "From: {$from} <info@{$domain}>";
$headers[] = "Reply-To: {$from} <{$email}>";
$headers[] = "Sender: {$from}";
$headers[] = "Return-Path: info@{$domain}";
// メールを送信
if (wp_mail($to, $subject, $message, $headers)) {
echo 'メールが正常に送信されました!';
} else {
echo 'メール送信に失敗しました。';
}
3. 動作確認
上記コードをサーバー上に配置します。
ブラウザやターミナルからこのスクリプトを実行して、メールが送信されるか確認します。
例: https://example.com/mail-test.php をブラウザで開く。
4. 注意点
- wp-load.php のパス:
WordPressの設置場所に合わせて require_once のパスを適切に変更してください。 - From アドレスの上書き:
WP Mail SMTP などのプラグインを使用している場合、送信元アドレスが設定に従って上書きされることがあります。 - セキュリティ:
このスクリプトは公開される場所に配置しないでください。不正利用を防ぐために、認証やアクセス制限を設けることをお勧めします。
5. まとめ
WordPress外部でも wp_mail() を利用することで、WordPressの便利なメール送信機能を活用できます。この方法は、WordPressの設定をそのまま利用できるため、外部スクリプトからも簡単にメール送信が可能です。