Je recherche un point d'ancrage pouvant être utilisé avant que WP ne lise la base de données pour authentifier les informations de connexion de l'utilisateur, mais ne semble pas pouvoir en trouver un. Existe-t-il?
J'ai essayé add_filter/action('authenticate', 'customcode', 30, 3)
, mais cela semble fonctionner dès que la page wp-login.php
est demandée, plutôt qu'après que l'utilisateur ait cliqué sur login et que le nom d'utilisateur/mot de passe est POST
.
Si vous regardez le code pour wp-login.php
le cas login
et le cas par défaut run wp_signon()
. La raison, me semble-t-il, est de gérer les cas où un utilisateur possède déjà un cookie valide pour le site. Donc, je ne pense pas qu’il y ait un crochet qui ne se déclenche qu’après la connexion, mais il est assez facile de compenser. Le premier raccordement le long de ce chemin de connexion et avant l'authentification est l'action hook wp_authenticate
not authenticate
(bien qu'il s'agisse d'un hook valide).
function customcode($username, $password ) {
if (!empty($username) && !empty($password)) {
// your code
}
}
add_action('wp_authenticate', 'customcode', 30, 2);
Ah, il s'avère que add_filter/action('authenticate', 'customcode', 30, 3)
était ce que je cherchais ...
Le problème était que ma priorité était trop faible, et quelle que soit la réponse que je créais avec mon code personnalisé, elle était écrasée par les autres filtres.
Donc, dumping global $wp_filter['authenticate']
je pouvais voir les filtres suivants:
20, wp_authenticate_username_password
30, wp_authenticate_cookie
99, wp_authenticate_spam_check
En modifiant la priorité sur 100 (ou supérieure), je pouvais effectuer la substitution et créer la réponse que je souhaitais pour gérer les informations d'identification de connexion soumises via la page de connexion.