Esiste un hook prima che l'utente venga autenticato?
Sto cercando un hook che possa essere utilizzato prima che WP legga il database per autenticare le credenziali di accesso dell'utente, ma non sembro trovarne da nessuna parte. Ne esiste uno?
Ho provato add_filter/action('authenticate', 'customcode', 30, 3)
, ma questo sembra eseguirsi non appena viene richiesta la pagina wp-login.php
, piuttosto che dopo che l'utente preme il pulsante di login e i dati username/password vengono inviati tramite POST
.
Se osservi il codice di wp-login.php
sia il caso login
che quello predefinito eseguono wp_signon()
. Il motivo, a quanto pare, è gestire i casi in cui un utente ha già un cookie valido per il sito. Quindi non credo esista un hook che si attivi solo al login, ma è abbastanza facile compensare. Il primo hook lungo quel percorso di login e prima dell'autenticazione è l'action hook wp_authenticate
, non authenticate
(sebbene anche quest'ultimo sia un hook valido).
function customcode($username, $password ) {
if (!empty($username) && !empty($password)) {
// tuo codice
}
}
add_action('wp_authenticate', 'customcode', 30, 2);

Grazie. Questo approccio funziona più o meno, tranne per il fatto che qualsiasi risposta restituita dai filtri authenticate
finisce per sovrascrivere quelle restituite da wp_authenticate
, quindi non è esattamente quello che cercavo - è colpa mia per aver formulato male la domanda però =/

Ah, sembra che add_filter/action('authenticate', 'customcode', 30, 3)
fosse quello che stavo cercando...
Il problema era che avevo la priorità troppo bassa, quindi qualsiasi risposta creata con il mio codice personalizzato veniva sovrascritta dagli altri filtri.
Dunque, esaminando global $wp_filter['authenticate']
ho potuto vedere i seguenti filtri:
20, wp_authenticate_username_password
30, wp_authenticate_cookie
99, wp_authenticate_spam_check
Modificando la priorità a 100 (o superiore), ho potuto effettuare l'override e creare la risposta desiderata per gestire le credenziali di accesso inviate tramite la pagina di login.

Ci sono solo due argomenti per customcode
quindi dovrebbe essere add_action('authenticate', 'customcode', 30, 2)
. Il 3 è confondente.

authenticate
dovrebbe essere un filtro, credo, https://codex.wordpress.org/Plugin_API/Filter_Reference/authenticate
