Login in WordPress utilizzando i dati di un database esterno
Ho un sito WordPress e un database esterno (non quello di WP) contenente gli utenti. Il processo di inserimento in quella tabella utilizza lo stesso algoritmo di WordPress. Quello che mi serve fare è effettuare il login in WordPress ma utilizzando questo database esterno che si trova sullo stesso host. Ho controllato questi link http://www.tyssendesign.com.au/articles/cms/connecting-to-external-database-from-within-wordpress/ e http://wordpress.org/extend/plugins/external-database-authentication/ ma il primo non è quello che cerco e il secondo non è compatibile con WP 3+ (io uso la 3.3.1). Avete suggerimenti, documentazione o altro?
Puoi sovrascrivere la funzione core wp_authenticate.
Dovrai creare un plugin personalizzato e dichiarare una nuova versione di wp_authenticate. La funzione accetta un nome utente e una password e restituisce un oggetto WP $user.
wp_authenticate è una funzione 'pluggable' e si trova nel file wp-includes/pluggable.php.

questa funzione può funzionare nel file functions.php del mio tema? Inoltre, come posso connettermi a un database esterno e verificare lì username e password?

La funzione deve essere in un plugin, non funzionerà nel functions.php (ha a che fare con il modo in cui le funzioni plugable vengono caricate in WP).

Potresti usare le funzioni php mysql/mysqli per connetterti al database e validare username e password, la connessione al database sarebbe semplicemente l'uso standard del database in php. Sarebbe comunque bene comprendere i processi di hashing/salting delle password per garantire le migliori pratiche per la memorizzazione delle password.

Avevo bisogno di più funzionalità rispetto a quelle che potevo trovare altrove, quindi ho scritto il mio plugin - External Login.
Offre queste principali caratteristiche:
- Mappare una struttura di tabella DB diversa per renderla compatibile con i campi di WordPress
- Gestire diversi metodi di hashing dal tuo database esterno (bcrypt, MD 2 4 e 5, SHA 256 384 e 512, e molti altri ancora)
- Consentire diversi metodi di salting
- Generare una copia dell'utente nel database per continuare a utilizzare le funzionalità comuni di WordPress con utenti e ruoli
- Mappare i ruoli dal tuo "database esterno" a quelli presenti in WordPress, ad esempio uno studente nel "database esterno" diventa un editor nel database di WordPress.
Fammi sapere se hai bisogno di un'altra funzionalità :)

Hai provato il plugin External Database Authentication? Solo perché non è stato aggiornato da un po' non significa che non funzioni necessariamente. Almeno puoi dare un'occhiata al loro codice sorgente per vedere come hanno realizzato ciò che hanno fatto e usarlo come base per ottenere ciò di cui hai bisogno.
Ecco il codice http://plugins.trac.wordpress.org/browser/external-database-authentication/trunk/ext_db_auth.php

Ho appena aggiornato quel vecchio plugin per le mie esigenze. Puoi trovare l'aggiornamento su http://www.7mediaws.org/extend/plugins/external-db-auth-reloaded

Sì, il tuo plugin è fantastico. Quello che ti serve per migliorare e finalizzare il tuo plugin è che nelle versioni più recenti di WordPress, ci sono due tabelle diverse che contengono i dati degli utenti. Sono wp_user e wp_usermeta. E nel plugin, è fornita solo una tabella per l'autenticazione. Quindi se questa funzionalità funziona correttamente, sicuramente il tuo plugin sarà un successo al 100%.
Inoltre, c'è un bug. Dato che c'è solo una tabella per l'autenticazione, non sono riuscito ad autenticare i ruoli degli utenti e sincronizzarli. Questo significa che quando abilito il login esterno, al momento del logout e al successivo login, ho il ruolo di sottoscrittore, che ho specificato nel caso in cui nessun ruolo corrisponda. Quindi ho perso anche i miei privilegi di amministratore. Per favore, aiutami e capisci il problema.
