web-dev-qa-db-ja.com

ログインフォーム上のカスタムフォームフィールドを検証するためにどのフックを使用すべきですか?

login_formフック付きのカスタム入力フィールドを追加しました。

そのため、投稿データを検証して処理する必要があります。私はlostpassword_postlostpassword_formを使用してうまく機能しましたが、ログインフォームでデータを検証するためのフックを見つけることができません。

何か案は?

3
greenbandit

'login_init'へのすべての呼び出しをキャッチするには、アクションwp-login.phpを使用してください。

サンプルコード

add_action( 'login_init', 'wpse_51227_validate_custom_field' );

function wpse_51227_validate_custom_field()
{
    if ( ! isset ( $_POST['special_custom'] )
        return;

    if ( ! is_numeric( $_POST['special_custom'] )
        // handle the error
}

利用可能な2つの重要なグローバル変数があります。

  • $errorsWP_Errorのインスタンスです。たぶんあなたはエラーデータを保存するためにそれを使いたいでしょう。
  • $actionが現在のアクションです。ユーザー入力が無効な場合にリダイレクトを防ぐためにloginに設定したくなるかもしれません。
1
fuxia

実際にはこれをテストしていませんが、私は登録とプロフィールページを使ってそれをどのように行うかによって推測しているだけです。

このようなことを試してください:

function my_login_errors( $errors ) {
    if ( empty( $_POST['custom_field'] ) )
        $errors->add( 'empty_custom_field', '<strong>ERROR</strong>: Please enter some info.' );
    return $errors;
}
add_filter( 'login_errors', 'my_login_errors' );

注:custom_field部分とメッセージを適宜変更してください。

0
Giraldi