Récupérer les utilisateurs et groupes de wordpress

Notre association utilise wordpress pour son site web, mais également pour la gestion des bénévoles via ses utilisateurs. Je souhaiterais éviter de dupliquer le travail pour la gestion des utilisateurs et des groupes, en utilisant une application wordpress qui semble le permettre : user_sql. Néanmoins, j’aimerais rester prudent dans mes tests et éviter de bousiller la base de données wordpress.

  • est-ce que vous avez déjà tenté cette manipulation ?
  • est-ce qu’il est possible de créer un utilisateur en lecture seule sur la base de wordpress ?

Pour l’utilisateur, je ne suis pas très versé en bases de données et en phpMyAdmin, du coup je n’ai pas trouvé la fonctionnalité dans l’interface de ouvadmin, ni dans celle de phpMyAdmin, peut-être est-il possible de créer l’utilisateur via une requête ? Je n’ai pas l’impression de pouvoir avec les requêtes prudentes que j’ai tentées. Sinon il me sera peut-être possible de créer une vue en lecture seule.

J’ai réussi à avoir une version qui marche, des fois que ça puisse en intéresser d’autres. J’utilise donc l’application user_sql pour nextcloud. J’ai commencé par renseigner l’hôte ainsi que les identifiants de votre base de données pour votre site wordpress de façon à ce que l’application puisse aller chercher dedans. La documentation de l’application user_sql donne une configuration pour wordpress, mais les commentaires mentionnés sur la page de l’application ne me donnaient pas confiance sur le fait qu’elle n’allait pas bousiller la base de wordpress. Du coup par sécurité, j’ai créé des vues sur les tables wordpress en utilisant ALGORITHM=TEMPTABLE, ce qui d’après la doc de mariaDB rend la vus non éditable.

Pour les utilisateurs, j’ai utilisé la vue suivante :

CREATE
 ALGORITHM = TEMPTABLE
 VIEW `nc_users`
 AS select ID, user_login, user_pass, display_name, user_email from wp_users;

Ensuite sur wordpress, nous avons un greffon qui gère les groupes. Avec ce greffon, pour récupérer la liste des groupes, j’utilise la vue suivante :

CREATE
 ALGORITHM = TEMPTABLE
 VIEW `nc_groups`
 AS select t.name from wp_terms as t inner join wp_term_taxonomy as tt on tt.term_id = t.term_id where tt.taxonomy = "user-group";

Enfin pour déterminer quel utilisateur coller dans quel groupe, j’ai créé la vue suivante :

CREATE
 ALGORITHM = TEMPTABLE
 VIEW `nc_usergroups`
 AS select u.user_login, t.name from wp_users as u inner join wp_term_relationships as tr on u.ID = tr.object_id inner join wp_term_taxonomy as tt on tr.term_taxonomy_id = tt.term_taxonomy_id inner join wp_terms as t on tt.term_id = t.term_id where tt.taxonomy = "user-group";

Une fois ces trois vues crées, j’ai renseigné les noms des vues et les colonnes à utiliser dans les paramètres de user_sql. À noter que pour moi, l’algorithme de hashage à configurer pour les pots de passe était Portable PHP password

Je ne suis absolument pas un spécialiste de SQL, j’ai suivi la doc, je n’ai aucune idée des performances donc si vous avez mieux je suis preneur.

1 Like