WordPressを使っているのに、あえてフォームはプラグインを使わない理由

WordPressでサイトを作るとき、
お問い合わせフォームをどうするかは、ほぼ必ず話題になります。

多くの場合は、

  • Contact Form 7
  • MW WP Form
  • その他フォーム系プラグイン

といったものを使うのが一般的だと思います。

ただ、私の場合は
フォーム系プラグインを使わない
というスタンスです。

今回は、その理由を整理してみます。


フォームプラグインを否定したいわけではない

最初に書いておくと、
フォームプラグイン自体が悪いと言いたいわけではありません。

  • 手軽に導入できる
  • 管理画面で完結する
  • 非エンジニアでも触りやすい

こうしたメリットがあるのは事実ですし、
条件によっては最適な選択になることもあります。


それでも毎回使っていない理由

それでも私がフォームプラグインを使わないのは、
シンプルに言うと
コードで管理したほうが楽だと感じているからです。

ここで言う「楽」というのは、

  • 実装が楽
  • 管理が楽
  • 数年後に見返したときも分かりやすい

という意味です。


プラグインだと「把握する場所」が増える

フォームプラグインを使うと、

  • HTMLはどこか
  • バリデーションは設定画面か
  • メール文面は管理画面か
  • フックは functions.php か

と、
確認すべき場所が分散しがちになります。

一方、コードで書いていれば、

  • このファイルがフォーム
  • この処理が送信
  • この部分がバリデーション

と、構造が一目で分かります。

後から自分が触るにしても、
他の人が引き継ぐにしても、
この差は意外と大きいです。


MW WP Form の開発終了アナウンスがあったことも影響している

以前、定番だった MW WP Form について、
一度「開発終了」というアナウンスが出たことがありました。

現在もプラグイン自体は公開されていますが、

  • 今後どこまで継続的にメンテナンスされるのか
  • WordPressやPHPの将来バージョンに追随できるのか

正直、外からは判断しづらい部分があります。

この件をきっかけに、
フォームという重要な機能を、特定のプラグインに依存するのは少し怖い
と感じるようになりました。


フォームは「止まると困る」機能

フォームは、

  • 壊れてもすぐ気づきにくい
  • でも止まると機会損失が大きい

という、かなり厄介な機能です。

  • メールが届いていない
  • スパムだけ届いている
  • アップデート後に動かなくなった

こうしたトラブルの切り分けで、
プラグイン・WordPress本体・サーバ設定を行き来するのは、
正直あまりやりたくありません。


管理画面から文言を変えたい、という要望について

フォームプラグインを使う理由として、
「管理画面から文章を変更したいから」という要望もよく聞きます。

ただ、この点についても、
必ずしもフォームプラグインが必須とは限りません。

例えば、

  • フォームの説明文
  • 注意書き
  • 送信完了メッセージ
  • メール本文の一部

こういった文言は、
カスタムフィールドとして用意しておき、
フォームのコード側で読み込めば、
管理画面から自由に変更できます。

構造や処理はコードで管理しつつ、
変更頻度の高い文言だけを管理画面に切り出す。

この形のほうが、

  • どこを触ればいいか分かりやすい
  • 設定が散らばらない
  • 数年後に見ても把握しやすい

というメリットがあると感じています。


プラグインを使うと、どうしても制約が出てくる

フォームプラグインを使っていると、
どうしても「プラグイン側の仕様」に合わせる必要が出てきます。

例えば、

  • HTML構造を細かく調整したい
  • クラスの付け方を統一したい
  • バリデーションの挙動を少しだけ変えたい
  • 分岐条件を要件どおりに書きたい

こういった細かい調整をしようとすると、

  • 用意されている設定では足りない
  • フィルターやフックを探す
  • 結局、プラグインの内部仕様を追うことになる

という流れになりがちです。

それなら最初から、

  • HTML
  • バリデーション
  • 送信処理

をコードで書いてしまったほうが、
結果的に早く、分かりやすいと感じることが多くなりました。

「ある程度まで簡単にできる」代わりに、
「それ以上の調整がしづらい」。

このトレードオフも、
フォームプラグインを使わない理由の一つです。


自作フォームでやっていることは最低限

自作するといっても、
特別なことをしているわけではありません。

  • フロントとバックエンドのバリデーション
  • トークンを使った簡易CSRF対策
  • PHPMailerなどを使ったメール送信
  • 必要最低限のスパム対策

「フォームとして最低限必要なこと」だけを
コードでシンプルに書いています。


それでもプラグインを使うケースはある

もちろん、
どんな場合でも自作するわけではありません。

例えば、

  • 管理画面から構造自体を頻繁に変えたい
  • 非エンジニアがフォーム仕様を触る
  • 要件がかなりシンプル
  • 短期案件でスピード優先

こうした条件なら、
フォームプラグインを選ぶほうが合理的です。


まとめ

フォームプラグインを使わない理由は、
思想というより、かなり実務的な話です。

  • コードで管理したほうが分かりやすい
  • プラグイン依存や制約を減らしたい
  • 数年後の自分や他の人が触りやすい

過去の経験から、
今はこのやり方が一番しっくりきています。