Dans le cadre de projets WordPress, il est courant de jouer avec les rôles utilisateurs et leurs permissions, pour customiser l’admin pour les différents types d’utilisateurs qui seront amenés à l’utiliser.
On joue avec les fonctions remove_role, add_role, et parfois on a de mauvaises surprises, comme un « Vous n’avez pas les droits suffisants pour accéder à cette page. » quand on veut accéder au wp-admin avec un des nouveaux rôles que l’on a créé.
On décide alors de recopier le nouveau rôle à partir d’un des rôles par défaut de WordPress, quand on se rend compte que l’on ne peut pas le faire car on a supprimé les rôles par défaut avec remove_role sans savoir que cette suppression était irrémédiable !
Heureusement, il est assez simple de réinitialiser tout ça pour repartir avec tous les roles par défaut et à nouveau pouvoir les utiliser comme modèle !
Pour cela, il faut agir directement en base de données, dans la table wp_options, en éditant la ligne qui a pour option_name : « wp_user_roles ».
Attention, si vous avez modifié le préfixe de base de données dans wordpress, il faut remplacer « wp_ » par votre préfixe. Exemple : « prefix_user_roles ».
La option_value à assigner à cette ligne est la suivante :
a:5:{s:13:"administrator";a:2:{s:4:"name";s:13:"Administrator";s:12:"capabilities";a:62:{s:13:"switch_themes";b:1;s:11:"edit_themes";b:1;s:16:"activate_plugins";b:1;s:12:"edit_plugins";b:1;s:10:"edit_users";b:1;s:10:"edit_files";b:1;s:14:"manage_options";b:1;s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:6:"import";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:8:"level_10";b:1;s:7:"level_9";b:1;s:7:"level_8";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;s:12:"delete_users";b:1;s:12:"create_users";b:1;s:17:"unfiltered_upload";b:1;s:14:"edit_dashboard";b:1;s:14:"update_plugins";b:1;s:14:"delete_plugins";b:1;s:15:"install_plugins";b:1;s:13:"update_themes";b:1;s:14:"install_themes";b:1;s:11:"update_core";b:1;s:10:"list_users";b:1;s:12:"remove_users";b:1;s:9:"add_users";b:1;s:13:"promote_users";b:1;s:18:"edit_theme_options";b:1;s:13:"delete_themes";b:1;s:6:"export";b:1;}}s:6:"editor";a:2:{s:4:"name";s:6:"Editor";s:12:"capabilities";a:34:{s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;}}s:6:"author";a:2:{s:4:"name";s:6:"Author";s:12:"capabilities";a:10:{s:12:"upload_files";b:1;s:10:"edit_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:4:"read";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;s:22:"delete_published_posts";b:1;}}s:11:"contributor";a:2:{s:4:"name";s:11:"Contributor";s:12:"capabilities";a:5:{s:10:"edit_posts";b:1;s:4:"read";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;}}s:10:"subscriber";a:2:{s:4:"name";s:10:"Subscriber";s:12:"capabilities";a:2:{s:4:"read";b:1;s:7:"level_0";b:1;}}}
C’est tout bête mais c’est pratique d’avoir cela sous la main, ça peut éviter d’avoir à faire une nouvelle installation de WordPress juste pour pouvoir retrouver cette valeur 🙂
Bonjour, j’ai un problème avec un plugin (creation de tableau « tablepress ») qui marche et affiche les données mais dont je n’arrive plus à accéder au tableau de réglage, je pense que c’est un problème de droits car j’avais caché son panneau (pour certains roles) grace à un autre plugin de gestion des roles qui n’est plus développé et que j’avais desinstallé en reinitialisant les réglages. Malgré cela, même en désinstallant tablepress et en effaçant manuellement son dossier en ftp, impossible en le réinstallant d’acceder à ses réglages (alors que cette extension marche parfaitement sur mes autres sites (même thèmes, mêmes extensions, même mises à jour!). Donc j’essayerais bien votre astuce, mais est-elle toujours compatible avec la dernière version de wordpress (4.4.2)?
Merci pour votre aide.
Bonjour.
Je pense qu’elle est toujours compatible, je vous suggère d’essayer mais en faisant auparavant une sauvegarde de la valeur que vous aurez remplacé, pour pouvoir la restaurer au cas où 🙂
Super et merci depuis la MàJ vers 471 puis 472 je n’avais plus accès au panneau d’administration.
Maintenant, il faut que je règle le PB d’AWPCP qui s’est lâchement planté : police non conforme, retour à des paramétrage par défaut, disparition des images…
Merci encore
Christophe, NC
MERCI !!!
J’ai passé tout l’après midi à chercher pourquoi d’un seul coup les accès à l’admin générait le fameux « Vous n’avez pas les droits suffisants pour accéder à cette page » (pour les utilisateurs avec un rôle juste au dessous de l’admin complet) et une page blanche pour les accès admin complet (j’ai tracé le code pour voir que ça s’arrêtait dans wp-admin/includes/menu.php sur do_action(‘admin_menu’, »); mais ça ne m’a pas aidé beaucoup).
J’ai lu des tas de trucs avant de tomber sur votre page, j’ai été vérifier la valeur dans wp_user_roles de wp_options et j’ai vu qu’elle était réduite à ça :
a:1:{s:8: »customer »;a:2:{s:4: »name »;s:8: »Customer »;s:12: »capabilities »;a:3:{s:4: »read »;b:1;s:10: »edit_posts »;b:0;s:12: »delete_posts »;b:0;}}}
j’ai retrouvé une ancienne version de ma base et la valeur était bien plus complète, un peu comme la vôtre mais avec des rôles ajoutés.
J’ai remplacé et oh miracle, j’ai récupéré l’accès à mon backoffice !
Merci encore !
Bonjour, je tenais à vous dire merci ! J’ai utilisé un plugin personnalisant les rôles des utilisateurs, après ça même en mode admin je ne visualisait plus certains plug indispensables dans le back-office comme Woocommerce, j’ai suivi votre démarche, vidé le cache et remis à jour les plugins et c’était réglé 🙂
Bonjour,
Après plusieurs recherches, je suis tombée sur votre solution qui je pense peut résoudre mon problème (mon compte admin n’a plus le rôle d’administrateur..) Cependant lorsque je rentre dans ma table wp_options je ne possède pas de ligne « wp_user_roles », je ne peux donc pas ajouter les lignes que vous préconisez. Cela est-il normal ? Si la réponse est non savez-vous comment puis-je résoudre mon problème ?
Merci d’avance !
Un grand merci pour cette astuce!
Vous m’avez sauvé après des heures de recherches sur google et différents forums.
Bonjour,
Apres de nombreuses recherches, on m’a suggéré de suivre votre solution. Cependant, quand je suis dans ma base de données, dans ma table wp_options, je ne possède pas de ligne wp_users-roles … je suis donc bloquée…. Avez vous une solution à ma suggérer ?
Merci
Bonjour ,
Avec les versions 5.2 et 5.3 faire ce qui suit:
INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, ‘3’, ‘wp_capabilities’, ‘a:1:{s:13: »administrator »;b:1;}’);
Vous remplacerez le « 3 » par l’id de l’utilisateur dans la table wp_users.
Courage
Si vous avez changé le préfixe de votre base de donnée, l’option ne commence plus par wp_ mais par le préfixe choisi !
Par exemple si la table s’appelle « toto_options », l’option_name s’appellera « toto_user_roles »
Merci pour la précision, c’est vrai et c’est le genre de détail qu’on pourrait oublier facilement et s’arracher les cheveux pendant des heures à cause de ça…
Je complète l’article 🙂
Bonjour !
Je me permets de commenter, car j’ai fais un changement de préfixe à mes tables pour un de mes sites, et je me suis retrouvée sans accès !
Je rajoute que maintenant avec la version 5.8 (au 05/08/2021 en tout cas), il faut aussi faire des changements dans la base wp_usermeta !
Si vous aviez un préfixe en wp_ ou toto_ …. il y a quelques valeurs à éditer (8 je crois) dans cette table la !
Ensuite il fait effectuer la commande expliquée dans l’article dans la table des options !
Voila pour ma petite contribution si cela peut aider quelqu’un d’autre !