LoginSignup
2
2

More than 3 years have passed since last update.

contact form 7 で確認画面を追加してつまった話

Last updated at Posted at 2020-11-17

contact form 7で確認画面の実装にcontact form 7 add confirmを使用したときにつまったところをまとめておきます。

チェックボックスをオリジナルデザインで実装していると、確認をしたときに選択されていないようになってしまう
(実際には選択されているが、隠れてしまっている)ので、その解決策をまとめておきます。
こんな感じで選択されていないようになってしまったときの解決方法。
af1efeab8a0aed4f54e72921534f21cb.gif

前提

contact form 7 add confirmを使用
・チェックボックスを使用

ではcontact form 7でチェックボックスを作成するところから順番に説明していきます。

チェックボックスの作成

まずは、contact form 7の初期画面です。
4359b9187bc47fe3b1bd41bcfad4e2a0.png

チェックボックスを追加します。
8141c75eeebd3a9ae89ef86f2e0e8ab8.png

追加されたのを確認して、保存します。
271cff2286289f1bf35d4edb9b17e1f3.png

こんな感じで動作します。
989a2d7539c1e3f9832f042c68308a68.gif

contact form 7 add confirmで確認画面を追加

こちらのプラグインをインストールします。
download.png

追加すると画面にこのように追加されます。
964e07778aa59e683c7c3cff9117bdc8.png

下記のように追加して、表示をみてみましょう。
2256e8d5fe87ec3b602b70b66f9c6bbe.png

このように動作します。
cb426c732f4dab01bbcc8da5b90d6fb5 (2).gif

チェックボックスにオリジナルのCSSを当てた時の対処方法

このように非常に簡単に、確認画面が実装できるんですよね。
でも、ここからが本題になりますがチェックボックスにオリジナルのデザインをあてたときに確認を押すと
選択されていないようになっていました。

af1efeab8a0aed4f54e72921534f21cb.gif

これだと、
「入力したはずなのに消えてしまっている、もう一回やるか。あれ、また消えてる、、無限ループ」
となってしまいますよね。

これが何が起きているかを、検証画面で確認しました。

■入力した時のバナナの項目
7f48be3f68d1f8d95adb130a32351138.png

■確認した時のバナナの項目
7cc21ea6b316c75f383a04bd82e16d1d.png
見ていただいて分かる通り、inputタグが追加されていますね。

これが悪さをしているのですが、選択したときにチェックボックスを当てるCSSを確認すると下記のように書いていました。

style.css
input[type="checkbox"]:checked + .wpcf7-list-item-label:after {/*チェックアイコン*/
  content: "";
  display: block;
  position: absolute;
  top: -2px;
  left: 16px;
  width: 20px;
  height: 20px;
  background: url(../../assets/check.png) no-repeat center;
}

ふむふむ、input[type="checkbox"]:checked + .wpcf7-list-item-label:afterが怪しいですね。
このというのは、隣接セレクタといい直後に隣接している要素にスタイルを適用するようです。

なので、下記のようにinputタグが自動で生成されてしまうと直後の隣接している要素がかわってしまうということですね。
この場合だと、最初はspanタグが直後だったが、inputタグが直後になってしまったということです。
7cc21ea6b316c75f383a04bd82e16d1d.png

なので、直後の隣接している要素の指定から、~に書き換えてあげましょう!
説明:E ~ F …… E要素の後ろにある同じ階層のF要素
http://www.htmq.com/selector/precede.shtml

書き換えたコードがこちら

style.css
input[type="checkbox"]:checked ~ .wpcf7-list-item-label:after {/*チェックアイコン*/
  content: "";
  display: block;
  position: absolute;
  top: -2px;
  left: 16px;
  width: 20px;
  height: 20px;
  background: url(../../assets/check.png) no-repeat center;
}

上記のように書き換えることで、このように確認画面を押しても、選択された状態が保っているのが確認とれるようになります。

22d17823912d746e9005043cd860a38b.gif

まとめ

プラグインを使用するときは、自動で生成されるコードがあることを理解して検証画面を確認することが大切ですね。

※本記事で使用したコードはこちらを参考にさせていただきました。めちゃくちゃわかりやすいので見てみてください。
https://yuyauver98.me/contactform7-checkbox-customize/

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2