J'ai un site Web en cours d'exécution dans CI et il a une table d'utilisateurs. Je suis en train de créer un site Web WordPress et j'en ai besoin pour utiliser la table des utilisateurs de la base de données CI afin que les utilisateurs puissent se connecter à WordPress. Comment puis-je utiliser uniquement cette table de base de données différente? Les deux bases de données sont sur le même serveur. De plus, je dois différencier les utilisateurs administrateurs des utilisateurs normaux, car les administrateurs peuvent accéder au tableau de bord. J'ai essayé ce plugin mais dès que j'active ce plugin, ma page de connexion cesse de fonctionner et affiche une erreur de 500 serveur.
Cela pourrait fonctionner d'utiliser une vue essentiellement comme un alias de table, en procédant comme suit avec la base de données mysql instance WordPress
DROP TABLE wp_users
CREATE VIEW wp_users AS SELECT * FROM CI.users;
Toutefois
wp_usermeta
pour indiquer correctement les administrateurs.Il n'est pas possible dans Wordpress d'avoir des utilisateurs partagés entre 2 installations distinctes sur 2 bases de données séparées.
Cela pourrait être possible simplement en codant en dur:
mais la solution mentionnée n’est bien sûr pas recommandée, car elle n’est pas updateproof.
Vous n'avez pas besoin d'un plugin pour établir plusieurs connexions à la base de données dans CI. Faites juste ceci:
Ceci est votre configuration par défaut de la base de données CI
$db['default']['hostname'] = 'DB_Host';
$db['default']['username'] = 'DB_USER';
$db['default']['password'] = 'DB_PASSWORD';
$db['default']['database'] = 'DB_NAME';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
Dupliquez ce morceau de code, en renommant le $db['default']
avec quelque chose comme $db['secondary']
$db['secondary']['hostname'] = 'SECONDARY_DB_Host';
$db['secondary']['username'] = 'SECONDARY_DB_USER';
$db['secondary']['password'] = 'SECONDARY_DB_PASSWORD';
$db['secondary']['database'] = 'SECONDARY_DB_NAME';
$db['secondary']['dbdriver'] = 'mysql';
$db['secondary']['dbprefix'] = '';
$db['secondary']['pconnect'] = TRUE;
$db['secondary']['db_debug'] = TRUE;
$db['secondary']['cache_on'] = FALSE;
$db['secondary']['cachedir'] = '';
$db['secondary']['char_set'] = 'utf8';
$db['secondary']['dbcollat'] = 'utf8_general_ci';
$db['secondary']['swap_pre'] = '';
$db['secondary']['autoinit'] = TRUE;
$db['secondary']['stricton'] = FALSE;
function getWordpressUsers() {
$secondaryDb = $this->load->database('secondary', TRUE);
$query = $secondaryDb->select('user_email, display_name')->get('wp_users');
var_dump($query);
}
Pour plus d'informations à ce sujet, consultez ceci: https://codeigniter.com/user_guide/database/connecting.html