- WordPress :6.2
- Statut : non résolu
- Ce sujet contient 5 réponses, 3 participants et a été mis à jour pour la dernière fois par test3@vitamine-c.ch, le il y a 11 mois et 2 semaines.
-
AuteurMessages
-
3 septembre 2023 à 9 h 45 min #2460031
Bonjour,
Ma configuration WP actuelle
- Version de PHP/MySQL : PHP 8.1
- Thème utilisé : Twenty Twenty-Three
- Extensions en place : aucun
- Nom de l’hébergeur :
- Adresse du site :
Problème(s) rencontré(s) :
Bonjour,
Je souhaite partager une réflexion concernant WordPress Multisite. Lorsqu’une installation Multisite est créée, il est important de noter qu’elle partage une base de données unique. Mon objectif est d’assurer que lorsqu’un utilisateur s’inscrit sur l’un de mes sites, ce compte puisse être utilisé sur l’ensemble des sites de l’installation.
Le problème auquel je fais face est que par défaut, chaque site créé gère ses propres utilisateurs, ce qui complique la gestion unifiée des comptes.
Je sollicite donc des suggestions ou du code, le cas échéant, qui me permettraient de résoudre cette problématique et de permettre aux utilisateurs de bénéficier d’un accès partagé à l’ensemble des sites de mon réseau WordPress Multisite.
Je vous remercie à l’avance pour votre aide.
Bonne journée.
DDX3 septembre 2023 à 16 h 44 min #2460059Salut, je vois cette vidéo qui parle de la gestion des comptes utilisateurs en multisites, peut être des pistes à explorer…
26 septembre 2023 à 17 h 57 min #2461144Bonjour,
Le problème que vous rencontrez est commun dans les installations WordPress Multisite. Par défaut, chaque site subsite gère effectivement ses propres utilisateurs. Cependant, tous les utilisateurs sont en réalité stockés dans la même base de données, dans la table
wp_users
. Les capacités et rôles des utilisateurs pour chaque subsite sont gérés dans la tablewp_usermeta
.Pour que chaque utilisateur puisse accéder à tous les subsites sans avoir à s’inscrire à nouveau, vous pouvez suivre ces étapes :
- Plugin User Role Editor :
- Installez et activez le plugin User Role Editor.
- Avec ce plugin, vous pouvez attribuer des rôles aux utilisateurs pour plusieurs sites en une seule fois.
- Synchroniser les utilisateurs manuellement : Si vous ne souhaitez pas utiliser de plugin, vous pouvez synchroniser les utilisateurs en ajoutant un peu de code. Vous pouvez l’ajouter dans le fichier
functions.php
de votre thème ou mieux, dans un plugin personnalisé.
function ajouter_utilisateur_a_tous_les_sites( $user_id ) {
$current_user = get_userdata( $user_id );
$user_role = reset( $current_user->roles );
$blogs = get_sites();
foreach ( $blogs as $blog ) {
switch_to_blog( $blog->blog_id );
$current_roles = get_user_meta( $user_id, 'wp_' . $blog->blog_id . '_capabilities', true );
if ( empty( $current_roles ) ) {
// Ajoute l'utilisateur au site s'il n'en fait pas déjà partie
add_user_to_blog( $blog->blog_id, $user_id, $user_role );
}
restore_current_blog();
}
}
add_action( 'user_register', 'ajouter_utilisateur_a_tous_les_sites' );Ce code utilise l’action
user_register
, qui est déclenchée chaque fois qu’un nouvel utilisateur s’inscrit. Il ajoute ensuite cet utilisateur à tous les subsites avec son rôle d’origine.- Plugins dédiés : Il existe aussi des plugins dédiés qui peuvent aider à synchroniser les utilisateurs à travers les subsites, comme Multisite User Sync. Il se charge de synchroniser les utilisateurs, leurs rôles, et leurs métadonnées à travers tous les sites d’une installation Multisite.
J’espère que cela vous aidera à mettre en place une gestion unifiée des utilisateurs sur votre installation WordPress Multisite.
Bonne continuation !
26 septembre 2023 à 18 h 07 min #2461150Bonjour,
Merci beaucoup pour cette brillante réponse.
Pour l’option 02:
« Vous pouvez l’ajouter dans le fichierfunctions.php
de votre thème ou mieux, dans un plugin personnalisé. »Je dois ajouter dans tous les thèmes ?
Que veux-tu dire « dans un plugin personnalisé » ?Un grand merci et une belle soirée.
DDX26 septembre 2023 à 18 h 12 min #2461153reBonjour,
Pour répondre à vos questions :
- Fichier functions.php : Si vous ajoutez le code au fichier
functions.php
de votre thème, il est conseillé de l’ajouter uniquement dans le thème principal (ou parent) de votre installation Multisite. Si chaque subsite utilise un thème différent, alors oui, il faudrait ajouter ce code à chaque thème. Cependant, cette méthode présente des inconvénients, notamment le fait que si vous mettez à jour ou changez le thème, vous risquez de perdre les modifications. - Plugin personnalisé : Lorsque je parle d’un « plugin personnalisé », je fais référence à la création d’un petit plugin spécifique pour votre site, dont le seul objectif serait d’ajouter cette fonctionnalité de synchronisation des utilisateurs. L’avantage de cette méthode est qu’elle est indépendante du thème que vous utilisez. Ainsi, même si vous changez de thème ou le mettez à jour, la fonctionnalité restera active.
Pour créer un plugin personnalisé :
a. Créez un nouveau dossier dans
wp-content/plugins/
, par exemplesynchronisation-utilisateurs
.b. À l’intérieur de ce dossier, créez un fichier, par exemple
synchronisation-utilisateurs.php
.c. Ouvrez ce fichier avec un éditeur de texte et ajoutez-y un en-tête de plugin basique :
<?php
/*
Plugin Name: Synchronisation des Utilisateurs Multisite
Description: Synchronise automatiquement les utilisateurs à travers tous les subsites.
Version: 1.0
Author: DDX
*/d. Sous cet en-tête, ajoutez le code que je vous ai fourni précédemment.
e. Enregistrez le fichier, puis rendez-vous dans le tableau de bord WordPress, section « Extensions », et activez votre nouveau plugin.
Cette seconde option est généralement préférée par les développeurs et administrateurs car elle garantit que la fonctionnalité ne sera pas perdue en cas de changement ou de mise à jour du thème.
Bonne continuation et n’hésitez pas si vous avez d’autres questions !
27 septembre 2023 à 21 h 45 min #2461280Un grand MERCI
En créant ce plugin, est-ce que je dois du coup l’activer sur tous mes sites (pour rappel, WP multisite)
De plus, si par la suite j’ajoute le plugin Plugin User Role Editor pensez-vous qu’il y aura un problème de compatibilité? La version basique ne supporte pas les sites Multisites.
Merci pour tes brillantes réponses
DDX
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.