Contact Form 7 Add Password field

このプラグインは、Contact Forum 7 プラグインへ password 項目を追加します。
例. [password example] (オプション) / [password* example] (必須)

Contact Form 7 Add Password field

最新

  • 2022.11.13: 3.3公開

ここでは 2.9 で実装したフックを使った Validation チェックについての紹介をします。

フックの使い方

以下、サポートしているフックを テーマのための関数「functions.php」 内でどのように記述するかの例をあげておきます。 フックを利用すると fucntions.php やプラグインから、本プラグインの Validationチェックを変更、追加できます。$_POST や $_GET 等、フォームデータを取得するときには、無害化(エスケープ)の必要性を常に考えてください。

例1. WordPress のログインユーザーのパスワードと同一かチェックする (2021-07-21)

Contact Form 7 の password フィールドに入力したデータと、とWordPress のログインユーザーのパスワードが一致するかどうかのチェックをします。

[password* password2]

のように設定しているとします。
比較するユーザーは、 sample ユーザーとします。

WordPress のパスワードは、Hash化された保存されますが、WordPress 独自のものと、MD5でハッシュ化されたものなど複数あります。そこは、生パスワードと Hash化されたパスワードのチェック関数「wp_check_password」 が吸収してくれます。

必要なこと
1. 入力したフォームからパスワードデータを取得($_POST[‘password2’])
2. WordPress の sample ユーザーの ハッシュ化されたパスワードとIDを取得

  1. パスワードのチェック

テーマの functions.php の記載例

下記の例では、$_POSTで取得したデータを比較しかしていないこと、パスワードは記号も入ることから無害化(エスケープ)はしていない

以下、Contact Form 7を使ったTiPSです。

WordPress へユーザー登録する (2021-07-22)

下記の例は、ユーザー名、パスワード、メールアドレスを Contact Form 7 および本プラグインを使って入力させた上で、送信をおした後に Contact Form 7 の  wpcf7_mail_sent フックを利用して WordPress へユーザー登録する仕組みです。既存ユーザーがいる、登録した場合のエラーメッセージ、その他各種設定は置き換える必要があります。

そのため安易の下記をコピー&ペーストして使わず、必ず設定を見直してください。
*特に安易に設定すると、勝手にWordPressのユーザーを作成できてしまうので注意が必要です。安易なパスワードを設定されないように工夫する(([password* password2 password_min:12 password_strength:4]等)など考えてください。あくまで下記はもっとも単純にしたコード例にすぎないことを覚えておいてください。

以下は、テーマの functions.php に追加することを想定したコードです。

  • ユーザー名: Conctact Form 7 の[text* your-name] から取得
  • パスワード: 本プラグインを活用し [password* password2]から取得
  • メールアドレス: Conctact Form 7 の[text* your-email] から取得
  • ユーザー権限: contributor ( https://wordpress.org/support/article/roles-and-capabilities/ の Summary of Roles参照。設定時はすべて小文字にすること。

以上の設定でデータを入力してもらったと仮定します。

Contact Form 7 の入力値を変更する (2023-01-28)

以下の例は、パスワードなど値を秘匿したい場合につかうTiPSです。本プラグイン内に組み込むことはできず、テーマの functions.php に追加します。

  • Contact Form 7 の変更したい項目名を取得

以上の設定でデータを入力してもらったと仮定します。
*ここでは変更したい項目が2つあり、それぞれ「user-pass」「check-user-pass」とします。また入力された値をハッシュ化しています。パスワードを生データであつかわず、ハッシュ値で保存する場合に利用できるでしょう。
実際に Contact Form 7 では本プラグインを使って、パスワード入力とそれをチェックする入力フォームを作成したとします。

そうしておいて、テーマの functions.php に次のコードを追加します。

*もし値を入力させずしたい場合には、次のようなコードになるでしょう。

2021年7月21日作成
2023年1月28日更新