Există un hook înainte de autentificarea utilizatorului?
Caut un hook care poate fi folosit înainte ca WordPress să citească baza de date pentru a autentifica datele de conectare ale utilizatorului, dar nu reușesc să găsesc unul. Există?
Am încercat add_filter/action('authenticate', 'customcode', 30, 3)
, dar acesta pare să se execute imediat ce pagina wp-login.php
este solicitată, nu după ce utilizatorul apasă pe butonul de login și username/parola sunt trimise prin POST
.

Dacă te uiți la codul din wp-login.php
atât cazul login
cât și cel implicit rulează wp_signon()
. Motivul, după cum mi se pare, este gestionarea cazurilor în care un utilizator are deja un cookie valid pentru site. Deci, nu cred că există un hook care să se declanșeze doar la autentificare, dar este destul de ușor să compensăm acest lucru. Primul hook de-a lungul căii de autentificare și înainte de autentificare este hook-ul de acțiune wp_authenticate
, nu authenticate
(deși acesta este un hook valid).
function customcode($username, $password ) {
if (!empty($username) && !empty($password)) {
// codul tău
}
}
add_action('wp_authenticate', 'customcode', 30, 2);

Ah, se pare că add_filter/action('authenticate', 'customcode', 30, 3)
era ceea ce căutam...
Problema era că aveam prioritatea prea mică, așa că orice răspuns cream cu codul meu personalizat era suprascris de celelalte filtre.
Prin afișarea global $wp_filter['authenticate']
am putut vedea următoarele filtre:
20, wp_authenticate_username_password
30, wp_authenticate_cookie
99, wp_authenticate_spam_check
Prin schimbarea priorității la 100 (sau mai mare), am putut face suprascrierea și să creez răspunsul dorit pentru gestionarea credențialelor de autentificare trimise prin pagina de logare.

Există doar două argumente pentru customcode
, deci ar trebui să fie add_action('authenticate', 'customcode', 30, 2)
. Numărul 3 este confuz.

authenticate
ar trebui să fie un filtru, cred, https://codex.wordpress.org/Plugin_API/Filter_Reference/authenticate
