web-dev-qa-db-de.com

Mit welchem ​​Hook sollen benutzerdefinierte Formularfelder im Anmeldeformular überprüft werden?

Ich habe ein benutzerdefiniertes Eingabefeld mit login_form hook hinzugefügt.

Also muss ich die Post-Daten verarbeiten, um sie zu validieren. Ich habe den lostpassword_post für lostpassword_form verwendet und funktioniert hervorragend, aber ich kann keinen Haken finden, um meine Daten beim Anmeldeformular zu validieren.

Irgendwelche Ideen?

3
greenbandit

Verwenden Sie die Aktion 'login_init', um alle Anrufe an wp-login.php abzufangen.

Beispielcode:

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
}

Es gibt zwei wichtige globale Variablen:

  • $errors ist eine Instanz von WP_Error. Vielleicht möchten Sie es verwenden, um Fehlerdaten zu speichern.
  • $action ist die aktuelle Aktion. Vielleicht möchten Sie es auf login ausruhen, um eine Umleitung zu verhindern, wenn die Benutzereingabe ungültig ist.
1
fuxia

Habe das nicht wirklich getestet, aber ich rate nur, wie ich es mit denRegistrierungs- und Profilseiten mache.

Versuchen Sie so etwas:

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' );

Hinweis: Ändern Sie den custom_field Teil und die Nachricht entsprechend.

0
Giraldi