【WordPress】Contact Form 7でpタグとbrタグの自動挿入を削除する方法

【WordPress】Contact Form 7でpタグとbrタグの自動挿入を削除する方法 WordPress

Contact Form 7(CF7)はフォームのフィールド間に自動で <p> タグ・<br> タグを挿入します。これが原因で余白が広がりすぎたり、CSSで間隔を細かく調整したいときに邪魔になったりします。この自動挿入は functions.phpフィルターを1つ追加するだけで無効化できます。

この記事でわかること

  • wpcf7_autop_or_not フィルターで自動 p/br タグを無効化する
  • __return_false を使った最短の書き方
  • 無効化後にレイアウトをCSSで整えるコツ
スポンサーリンク

functions.php にフィルターを追加して無効化する

テーマ(できれば子テーマ)の functions.php に次の1行を追加します。CF7が用意している wpcf7_autop_or_not フィルターに、「整形しない=false」を返すだけです。WordPress標準の __return_false を使うと最短で書けます。

functions.php:自動 p/br タグを無効化(最短)
// Contact Form 7 の自動 p / br タグ挿入を無効化
add_filter('wpcf7_autop_or_not', '__return_false');

自前の関数で書く場合は次のようになります(動作は同じです)。

functions.php:自前の関数で書く場合
add_filter('wpcf7_autop_or_not', 'my_disable_cf7_autop');
function my_disable_cf7_autop() {
  return false;
}
これだけでOK
保存すれば、以降CF7のフォームに <p><br> が自動挿入されなくなります。フォーム編集画面の「追加設定」タブで何かを書く必要はありません。

無効化したらレイアウトはCSSで整える

自動の <p><br> が無くなると、フィールドが詰まって表示されます。間隔は自分でCSSを当てて整えます。CF7のフォームには .wpcf7-form クラスが付くので、それを起点にスタイルを書けます。

CSS:フィールドの余白を整える例
.wpcf7-form p,
.wpcf7-form label {
  display: block;
  margin-bottom: 12px;
}
フォーム側のマークアップで整えるのが基本
自動挿入を切ったら、CF7のフォーム編集画面で自分で <div> や改行を入れてレイアウトを組み、CSS(Flexbox / Grid)で間隔を調整するのが、長期的に保守しやすい方法です。フォームに独自のclass・idを付けてスタイルを当てる方法はContact Form 7でformタグにclass・idを設定する方法を参照してください。

CF7のその他のカスタマイズ

確認画面・完了画面の追加や、送信トラブルの対処など、CF7のカスタマイズは次の記事もご覧ください。

よくある質問(FAQ)

QCF7が自動で追加するpタグ・brタグを削除するには?
Afunctions.phpadd_filter('wpcf7_autop_or_not', '__return_false'); を追加します。これでCF7のフォームへの自動 <p><br> 挿入が無効になります。
Q無効化したらレイアウトが詰まってしまいました。
A自動の <p><br> が無くなったためです。フォーム編集画面で <div> や改行を入れてマークアップを整え、.wpcf7-form を起点にCSS(Flexbox / Grid)で余白を調整してください。
Q一部のフォームだけ無効化したいです。
Awpcf7_autop_or_not はサイト全体に効きます。フォームごとに制御したい場合は、対象フォームに専用のclassを付け、CSS側で余白を整える運用にするのが簡単です。CSSの起点となるclass付与はformタグにclass・idを設定する方法が参考になります。

まとめ

  • 無効化add_filter('wpcf7_autop_or_not', '__return_false');functions.php に追加
  • 無効化後.wpcf7-form を起点にCSSで余白を整える
  • レイアウト:フォーム編集画面で <div> を入れ、Flexbox / Grid で組むと保守しやすい

フィルター1行で自動タグを無効化し、デザインはCSSで自由に整えましょう。