Ce n’est pas dans les sujets dont je parle habituellement ici, mais je viens d’y passer plusieurs heures, alors je vous donne la solution, ça aidera peut-être quelqu’un.
Le problème : j’ai créé un site avec WordPress et j’ai voulu le mettre sur un autre serveur. J’ai copié tous les fichiers et la base de données, le site a l’air de marcher, j’essaie de me connecter à l’interface d’administration : « Sorry, you are not allowed to access this page. »
Évidemment, j’ai cherché cette erreur, et j’ai essayé toutes les possibilités classiques : désactiver les plugins un par un, vérifier mon utilisateur dans la base de données, j’ai même regardé le code sources des fichiers dans wp-admin
pour essayer de comprendre d’où ça pouvait venir.
J’ai aussi vérifié, comme on me le recommandait dans l’une des pages que j’ai trouvées, si les rôles définis par l’option wp_capabilities
dans la table wp_usermeta
étaient corrects. Ils l’étaient, mais le problème était ailleurs, à cause d’une caractéristique mal documentée, comme je l’ai découvert par chance au fin fond d’une discussion du forum de WordPress.
En fait, l’option wp_capabilities
(et peut-être d’autres) ne doit pas forcément s’appeler comme ça. La partie wp_
est en réalité le même préfixe que celui des tables de la base de données, défini dans wp-config.php
. Et comme j’avais changé ce préfixe, il fallait aussi changer le nom de cette option.
Bref, j’ai résolu mon problème en exécutant les commandes SQL suivantes (à adapter à vos préfixes, bien entendu) :
UPDATE wp2022_options SET option_name = REPLACE(option_name, 'wp_', 'wp2022_') WHERE option_name LIKE 'wp_%'; UPDATE wp2022_usermeta SET meta_key = REPLACE(meta_key, 'wp_', 'wp2022_') WHERE meta_key LIKE 'wp_%';