Nullyのぶろぐ

仙台で働くエンジニアの日記

ContactForm7プラグインをSSLで使えるようにする

仕事ではほとんどWordPressを使っています。

が、共用SSLでContactForm7動かないよ!なんて言われても...。

ってなる前に下調べして使えそうだったので、ざくっとご紹介!

ContactForm7とは

メールフォームを簡単に作れるプラグインです。

ContactForm7はメールフォームプラグインの中でも意外と利用率が高いプラグインかと思います。

このプラグインだけに限らないと思いますが、共用SSLを通してメール送信しようとすると大抵の場合弾かれます。

(URLが正しくなかったり、正しいSSLのURLがわからなかったりで)

対処法

ContactForm7は、予めフィルタフックやアクションフックをたくさん持っています。

このフックを利用して共用SSLの中の該当のURLにフィルタリングしてやります。

// 定数として適当に共用URLを定義しておく

define("MY_PUBLIC_SSL_URI", "https://example.com");

// フィルタフックを登録

add_filter("wpcf7_form_action_url", "my_filter_contactform_uri");

function my_filter_contactform_uri($wpcf_request_uri) {

// 共用SSLURIをフィルタ結果として返却する

return MY_PUBLIC_SSL_URI. $wpcf_request_uri;

}

こんな感じの関数をテーマのfunctions.phpにつくっておいて上げれば後は自動的にフィルタされるという寸法!

追記

どうやら、上記の手段はさくらインターネットのサーバーでは動作しますが、他のサーバーだと動かないサーバーも有るようです。

注意すること

定義するSSL定数のURLの末尾のスラッシュや、不用意にURLハッシュを消さないことくらいかな?

実際にまだ動かしてないので不明...。

終りに

意外とContactForm7のSSL化をする際にコアコードを修正してしまって、プラグインのアップデートを気軽にすることが出来ない感じのが多かったのですが、フィルタフックをうまく利用することで、それぞれの依存関係が減り、保守にもつながります。

なのでハードコーディングはおすすめしません!

フィルタフック及びアクションフックを使って依存関係と心配事を減らしましょう!