Quel est le meilleur moyen de partager des données d'utilisateurs sur plusieurs sites Web Wordpress?

9

Tout d’abord, le multisite n’est pas ce que je recherche. J'ai 5 sites Web qui utilisent Wordpress, tous sur des domaines distincts pour lesquels j'aimerais activer les comptes d'utilisateurs. J'ai besoin que les données des utilisateurs soient partagées sur l'ensemble du réseau et lorsqu'un utilisateur crée un compte, il aurait également un accès instantané à tous les autres sites Web. Ce que j'essaie de faire n'est pas recommandé par Wordpress lorsque j'utilise Multisite:

  

Si vous envisagez de créer des sites strongment interconnectés, partageant des données ou des utilisateurs, un réseau multisite pourrait ne pas être la meilleure solution.   - enlace (1er paragraphe, 3ème phrase)

J'ai essayé d'utiliser le "truc de la table des utilisateurs partagés" comme mentionné ici enlace et ici enlace et un certain nombre d'autres endroits ... le problème, c’est que cette information a entre 2 et 7 ans et que j’utilise Wordpress 3.5.1 et que cette "astuce" ne semble pas fonctionner.

J'ai essayé d'insérer ce code dans wp-config autour de la ligne $table_prefix .

define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');

En résumé, je ne pense pas que cette astuce fonctionne, car je ne parviens pas du tout à me connecter au deuxième site du côté de l'administrateur.

Des suggestions sur le meilleur moyen de lier ces données?

    
posée Ian 12.02.2013 - 00:36

3 réponses

8

D'accord, tout d'abord, je me sens idiot, bien que, pour ma défense, la plupart des articles qui traitent de cette question ne mentionnent pas un détail crucial dans la réalisation de ce travail. La réponse est que vous devez définir l'autorisation pour au moins un administrateur de la base de données. Cette information peut être trouvée dans le Codex ici: enlace

Après avoir configuré le fichier wp-config.php, il est impératif de modifier la ligne maître usermeta (dans mon cas, wp_usermeta), la ligne wp_capabilities et la colonne meta_value. Faites ceci via phpMyAdmin.

Remarque: effectuez cette opération pour qu'au moins un administrateur utilisateur se connecte. Vous pouvez ajuster tous les autres rôles utilisateurs / administrateurs à partir du backend une fois que vous y êtes entré.

PourchaquesiteWebcréé,lepréfixedesnouveauxsitesdoitêtreattribuéaurôled'utilisateuradmin.

Dansmoncas,puisquecelanefonctionnequesur2sitespourlemoment,celaressembleàceci:

a:1:{s:13:"administrator";s:1:"1";}
tbs_capabilities = a:1:{s:13:"administrator";s:1:"1";}

La première ligne définit les autorisations pour le préfixe de table par défaut (dans ce cas, wp_) et la deuxième ligne, les autorisations pour le deuxième site Web (dans ce cas, avec le préfixe tbs_).

Merci à brasofilo pour le commentaire qui m'a amené à creuser un peu plus loin pour enfin résoudre mon problème!

J'espère que cette réponse pourra aider d'autres personnes qui avaient le même problème que moi.

    
réponse donnée Ian 12.02.2013 - 08:22
2

Lorsque vous partagez wp_users et wp_meta, il existe un autre problème. Une autre installation de wordpress reconnaît les utilisateurs mais elle ne reconnaît pas les rôles des utilisateurs provenant de l'autre site Web . Le rôle apparaît comme indéfini.

Ainsi, vous avez modifié votre fichier wp-config.php selon vos besoins:

define('CUSTOM_USER_TABLE', 'someprefix_users');
define('CUSTOM_USER_META_TABLE', 'someprefix_usermeta');

Je pense que le moyen le plus simple de le faire, sans bricoler la base de données, consiste à utiliser les éléments internes de wp. Lors de la connexion, il est possible d’attribuer un rôle. Disons que nous avons besoin du rôle de contributeur pour tout le monde et d'administrateur pour l'utilisateur 'superman'.

function check_user_role($user_login, $user) {
  if ( $user_login == 'superman' ) {
     $user->add_role('administrator');
     } else {
     $user->add_role('contributor');
  }
}

// the action fired on login
add_action('wp_login', 'check_user_role', 10, 2);

Ainsi, les utilisateurs provenant du site Web initial se voient attribuer le rôle de "contributeur" lorsqu'ils se connectent.

  • Vous pouvez supprimer la vérification de l'utilisateur une fois que vous vous êtes connecté avec l'utilisateur admin.
  • Les utilisateurs peuvent avoir plusieurs rôles, les capacités comptent.

enlace

    
réponse donnée cenk 24.02.2015 - 02:58
0

Je devais créer une nouvelle ligne:

meta_key='tbs_capabilities' meta_value='a:1:{s:13:"administrator";b:1;}'

et user_id=1 . La méthode que vous avez décrite n'a pas fonctionné.

    
réponse donnée James Smith 02.06.2014 - 05:59

Lire d'autres questions sur les étiquettes