Как восстановить права администратора?
Да, я гений. Мне удалось удалить все права администратора (спасибо плагину Membership). Я мог бы их восстановить... если бы у меня был доступ администратора, хах.
В общем, как мне вернуть все права администратора? У меня есть доступ к базе данных через PHPMyAdmin, но я не знаю, где и что нужно добавить обратно в базу данных.
Буду благодарен за любую помощь. Спасибо!
Строка ниже представляет собой массив в сериализованной форме.
a:1:{s:13:"administrator";s:1:"1";}
Здесь:
a:1 означает массив с одним элементом
s:13 означает строку и длину строки, следующей за ней
Array
{
"administrator" => "1"
}
После сохранения в таблице, вы можете использовать функцию unserialize() для преобразования обратно в массив для использования в вашем коде.
Большое спасибо.

a = array (массив), s = string (строка). Число обозначает размер элемента. Это стандартная сериализация в PHP.
a:1 = следующий элемент - это массив из одного элемента, s:13 = следующий элемент - строка из 13 символов, s:1 = следующий элемент - строка из одного символа

Я столкнулся с той же проблемой, и это сработало для меня. Но вот более сложный вопрос: почему так происходит? Единственный плагин, который я использую - это JWT для аутентификации и пользовательский шаблон для API. Я не меняю никаких разрешений и даже не добавляю неизвестные плагины/шаблоны на свой сайт. Мне интересно, почему это произошло.

Хорошо, извините за вопрос. Я разобрался. Но для будущих пользователей вот совет.
Шаг 1 (РЕЗЕРВНАЯ КОПИЯ!!!!) - сделайте резервную копию вашей базы данных, если следующий шаг что-то испортит, а у вас не будет бэкапа - это будет только ваша вина.
Шаг 2 - Используйте PHPMyAdmin или аналогичный инструмент для доступа к БД, найдите таблицу wp_usermeta и отсортируйте по user_id. Пользователь #1 - это ваш администратор. Затем найдите поле wp_capabilities и нажмите "редактировать" (именно эта часть была испорчена у меня).
Я заменил испорченное значение. Вот это:
a:3:{s:15:"membershipadmin";s:1:"1";s:10:"M_add_ping";s:1:"1";s:10:"subscriber";s:1:"1";}
на это (которое я скопировал из другой WP базы данных):
a:4:{s:13:"administrator";s:1:"1";s:15:"membershipadmin";s:1:"1";s:11:"M_add_level";s:1:"1";s:10:"M_add_ping";s:1:"1";}
Прежде чем отметить свой ответ как верный, может кто-то подтвердит мое решение или объяснит содержимое этого поля и как оно должно выглядеть правильно? Вы можете взять мой ответ, переписать его как свой, и если он правильный - я отмечу ваш ответ.

Я внес изменения в базу данных, как было указано, но при входе в систему как администратор я по-прежнему не мог изменять пользователей или страницы.
При сравнении поля с ролями пользователей в базе данных я заметил, что оно отличается от других установок WordPress. Моим решением было следующее:
Найти поле с именем "wp_user_roles" в таблице [префикс базы данных]_options, например "wp_options", и убедиться, что у администраторов есть все необходимые возможности. Это сериализованная строка с большим объемом информации, поэтому я считаю, что проще всего скопировать данные из чистой установки WordPress.

У меня была такая же проблема, и ни одно из этих решений мне не помогло.
То, что в итоге сработало:
- Войдите в PHP Admin для редактирования базы данных
- Найдите таблицу wp_usermeta и посмотрите ID администратора (вероятно, это 1)
- Теперь найдите поле wp_capabilities
- Замените строку на следующую:
a:14:{s:13:"administrator";b:1;s:15:"membershipadmin";b:1;s:24:"membershipadmindashboard";b:1;s:22:"membershipadminmembers";b:1;s:21:"membershipadminlevels";b:1;s:28:"membershipadminsubscriptions";b:1;s:22:"membershipadmincoupons";b:1;s:24:"membershipadminpurchases";b:1;s:29:"membershipadmincommunications";b:1;s:21:"membershipadmingroups";b:1;s:20:"membershipadminpings";b:1;s:23:"membershipadmingateways";b:1;s:22:"membershipadminoptions";b:1;s:32:"membershipadminupdatepermissions";b:1;}
Обновите, и теперь у вас есть доступ ко всем функциям плагина membership.

Не могли бы вы добавить объяснение, как можно использовать представленный код? Иначе это не очень полезно.

Это довольно просто. Всё, что я сделал - открыл phpmyadmin, выбрал базу данных с моего предыдущего сайта, нашёл таблицу wp_usermeta
, кликнул на user_capabilities
, и так как ID администратора был 1, я просто скопировал строки
(a:2:{s:13:"administrator";b:1;s:13:"bbp_keymaster";b:1;})
и вставил их в проблемную базу данных. Нажал сохранить, вышел из системы и зашёл снова - и мои роли вернулись.
