web-dev-qa-db-fra.com

remplacez les formulaires de connexion wp-login.php par un crochet et utilisez des formulaires personnalisés avec la validation de formulaire wp-login

Je personnalise tous les formulaires wp-login.php, c’est-à-dire connexion, mot de passe perdu, registre, etc.

J'ai un modèle de travail, mais quand j'ai décodé pour ajouter les messages d'erreur par défaut sur mes formulaires personnalisés, j'ai pensé qu'il devait exister un meilleur moyen de créer des formulaires personnalisés tout en utilisant wp-login.php pour résoudre tous les problèmes et pourquoi écrire des programmes personnalisés. validation du formulaire lorsque wp-login.php le fait assez bien?

Je construis cela comme un plugin.

Ceci est ma solution de travail:

1) Chaque formulaire (connexion, mot de passe perdu, etc.) est un fichier .php distinct. Je le fichier du formulaire est encapsulé par un get_header () et get_footer ()

2) L'action pour chaque formulaire est wp-login.php. Ainsi, lorsque mon formulaire personnalisé est soumis, wp-login.php effectue la validation du formulaire.

3) Pour que post-validation ne retourne pas la réponse par défaut (formulaire de wp-admin.php), j'ai ajouté une fonction wp_redirect () qui transmet mes formulaires personnalisés.

Comme je l'ai dit, cela fonctionne, mais je souhaite maintenant utiliser les messages d'erreur par défaut dans mes formulaires personnalisés et ne peux pas trouver comment obtenir les messages d'erreur à afficher dans mes pages de formulaire personnalisées.

Solutions possibles: 1) wo-login.php utilise un commutateur pour sélectionner le formulaire à afficher en fonction de la validation du formulaire. Y a-t-il un moyen de m'y accrocher et de faire appeler mon formulaire à la place? Je peux utiliser wp-login.php pour tout faire.

2) Dois-je inclure une variable globale pour les messages d'erreur sur mes pages?

3) J'ai en quelque sorte essayé de copier wp-login.php et de retirer le corps, la tête et les fonctions dont je n'ai pas besoin. Je travaille un peu mais pas vraiment.

FYI .... Je ne veux pas utiliser Theme My Login comme solution.

1
Jason

Avez-vous essayé de créer une erreur? Quelque chose comme:

function wpse_23982_admin_notices() {
    if ( isset( $_GET['extendd-message'] ) && $_GET['extendd-message'] == 'response_error' ) {
        add_settings_error( 'extendd-notices', 'extendd-remote-api-fail', __( 'There was an error connecting to extendd.com/. Please try again at another time.', 'extendd' ), 'error' );
    }

}
add_filter( 'registration_errors', 'wpse_23982_admin_notices' );

Puis sur l'erreur, faites quelque chose comme wp_redirect avec erreur.

wp_url.com/?extendd-message=response_error
1
Austin Passy