Quick-Fix für WordPress-Berechtigungen in Version 2.9.x
Wenn man eine relativ alte WordPress-Version immer wieder aktualisiert hat, kommt es bei der Konvertierung zur nächsten Version scheinbar irgendwann zu einem Problem mit der Berechtigungsstufe für das Backend. Ich habe ein kleines Script geschrieben, mit dem die Berechtigungen neu gesetzt werden. Ob das bei der Version 3.x auch noch funktioniert kann ich aktuell noch nicht sagen.
WICHTIG: ZUERST EIN BACKUP DER DATENBANK MACHEN! Dann das untenstehende Script in eine neue PHP-Datei (z.B. “update-users.php”) kopieren und ins gleiche Verzeichnis wie die “wp-config.php” legen. Dann über den Browser aufrufen. Update der Datensätze in der Datenbanktabelle wp_usermeta überprüfen (absteigend sortieren nach “umeta_id”). Zum Abschluß die Datei wieder löschen. FERTIG.
Hier das Script:
——————————————————
<?php
// WordPress-Config-Datei importieren
// Import WordPress-Config-File
include ('wp-config.php');
// Verbindung zum Datenbank-Server aufbauen
// Connect to database
$cid=mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
// Array für Rollen
// Array for user-roles
$user_roles=array('administrator'=>'10', 'editor'=>'7', 'author'=>'2', 'contributor'=>'1');
// Bisherige Einträge für meta_key "wp_user_level" löschen
// Delete actual entries with meta_key "wp_user_level"
$result=mysql(DB_NAME, "DELETE FROM ".$table_prefix."usermeta WHERE meta_key LIKE 'wp_user_level' ");
// Für jeden Eintrag aus dem Rollen-Array
// For each entry of the user-roles array
while (list($key,$value)=each($user_roles)) {
echo "$key | $value<br/>\n";
// Alle User mit der entsprechenden Rolle einlesen
// Get all users for the given user-role
$result=mysql(DB_NAME, "SELECT * FROM ".$table_prefix."usermeta WHERE meta_key LIKE '".$table_prefix."capabilities' AND `meta_value` RLIKE '".$key."' ORDER BY user_id ASC");
echo "SELECT * FROM ".$table_prefix."usermeta WHERE meta_key LIKE '".$table_prefix."capabilities' AND `meta_value` RLIKE '".$key."' ORDER BY user_id ASC<br/>\n";
while ($daten = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo $daten[user_id]."<br/>\n";
// und für jeden Eintrag die Berechtigung neu setzen
// and set a new user-level for each entry
$result2=mysql(DB_NAME, "INSERT INTO ".$table_prefix."usermeta VALUES ('','".$daten[user_id]."', 'wp_user_level', '".$value."')");
} // END OF while ($daten = mysql_fetch_array($result, MYSQL_ASSOC))
} // END OF while (list($key,$value)=each($user_roles))
mysql_close($cid);
?>
——————————————————
UND? Hat es funktioniert? Ich würd mich über ein Feedback freuen.












