login_form
フック付きのカスタム入力フィールドを追加しました。
そのため、投稿データを検証して処理する必要があります。私はlostpassword_post
にlostpassword_form
を使用してうまく機能しましたが、ログインフォームでデータを検証するためのフックを見つけることができません。
何か案は?
'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つの重要なグローバル変数があります。
$errors
はWP_Error
のインスタンスです。たぶんあなたはエラーデータを保存するためにそれを使いたいでしょう。$action
が現在のアクションです。ユーザー入力が無効な場合にリダイレクトを防ぐためにlogin
に設定したくなるかもしれません。実際にはこれをテストしていませんが、私は登録とプロフィールページを使ってそれをどのように行うかによって推測しているだけです。
このようなことを試してください:
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
部分とメッセージを適宜変更してください。