Как исправить ошибку "извините, у вас нет доступа к этой странице" при переходе по ссылкам "плагины > настройки"?
Я только что обновился до WordPress 4.6, и теперь когда я пытаюсь нажать на ссылку Настройки в некоторых моих плагинах, я получаю сообщение "Извините, у вас нет доступа к этой странице."
Я могу активировать/деактивировать плагин без проблем, но по какой-то причине я не могу перейти к просмотру настроек.
Я пытался следовать некоторым методам, которые использовали другие люди для исправления этой проблемы; например, добавление нового администратора и обновление значений "wp_capabilities" и "wp_user_level" в базе данных, но это всё равно не работает.
Кто-нибудь знает, как я могу дальше отладить или решить эту проблему?
Если у вас настроен HTTPS на WordPress и вы добавили код ниже в файл wp-config.php, убедитесь, что эти строки находятся в самом начале файла. Я столкнулся с этой проблемой, и, возможно, это вам поможет.
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

Как это связано с ошибкой только на одной конкретной странице? Пожалуйста, объясните это в вашем ответе.

Это помогло мне. Чтобы уточнить, почему это важно: людям, которые используют обратный прокси и https, возможно, потребуется добавить эти строки, см.: https://wordpress.org/support/article/administration-over-ssl/
Однако в документации не уточняется, что они должны быть в начале wp-config. Я поместил их в конце и получил сообщение "извините, вам не разрешено.."
Потратил время на все другие решения, которые не помогли, пока не нашел это.

По моему мнению, чтобы войти в PHPMyAdmin, перейдите в таблицу wp_usermeta, затем отредактируйте поле wp32_capabilities для любого пользователя и добавьте это a:1:{s:13:"administrator";s:1:"1";}. Это изменит привилегии пользователя на администратора. Существует несколько причин, по которым это может измениться, и вы получите ошибку.
Я столкнулся с этой ошибкой на своем сайте и попробовал этот метод всего один раз, после чего проблема была решена.

Вы можете держать несколько установок WordPress, пока префиксы таблиц разные и не конфликтуют. В этой статье описано исправление ошибки доступа, которая возникает после изменения префикса: https://www.mysysadmintips.com/other/web/743-wordpress-admin-sorry-you-are-not-allowed-to-access-this-page

Я заметил, что сообщение "Извините, у вас нет доступа к этой странице" чаще всего появляется, когда несколько сайтов WordPress находятся в одном phpMyAdmin — все с одинаковым префиксом таблиц, независимо от имени базы данных. Я не могу сказать, сколько именно сайтов WordPress могут находиться в одном phpMyAdmin с одинаковым префиксом таблиц.

Привет! Поскольку ссылки на внешние ресурсы могут устаревать, не мог бы ты расширить свой ответ, чтобы он был самодостаточным?

Это не имеет смысла. phpMyAdmin не имеет к этому никакого отношения. Твой WordPress будет работать только с одной базой данных на сервере MySQL. Если ты не пытаешься установить несколько сайтов в одну базу данных с одинаковым префиксом, это никогда не будет проблемой. Можешь объяснить, как именно этот ответ решает проблему с технической точки зрения?

По умолчанию, при первом запуске плагина, возможности будут назначены ролям "Администратор" и "Редактор". Вы можете добавлять или удалять возможности для пользователей с помощью отличного плагина Members, если его еще нет.

WordPress отображает стандартную страницу 403, когда происходит одно из нескольких событий в бэкенде:
- Пользователю запрещен доступ из-за неправильных разрешений его роли
- Страница бэкенда не найдена, что происходит, когда плагин или тема больше не активны, но оставили устаревшие данные в базе, или когда они неправильно маршрутизируют свою админ-страницу из-за неправильной настройки. Это часто случается при использовании плагинов для перезаписи URL, которые не обрабатывают URI бэкенда корректно или пропускают их перезапись. Это также часто приводит к блокировке доступа к экрану входа.
- Произошла ошибка во внутреннем механизме маршрутизации ядра, и он получает результат, который не понимает, не может обработать или который соответствует нераспознанной схеме
- Во время этапа маршрутизации для админ-панели происходит критическая, но не фатальная ошибка
В вашем случае, скорее всего, имеет место третий вариант. Код ядра WordPress не выполняет строгой проверки типов и обычно продолжает работу без тщательной проверки формата или валидности полученных данных для текущей задачи. Это часто приводит к странным и трудно диагностируемым ошибкам, если вы не понимаете, как работают внутренние механизмы ядра.
В качестве предварительных мер можно предпринять следующее:
- Убедитесь, что каждый сайт в рамках одной установки имеет свою собственную базу данных, назначенную ему, с выделенным пользователем, у которого нет прав доступа к другим базам данных в вашем кластере. Например, когда вы входите в PhpMyAdmin как root, у вас есть доступ ко всему кластеру. Для любого приложения должна быть выделенная база данных и пользователь в вашем кластере, и этот пользователь не должен иметь доступ к другим базам данных, если только это не общий ресурс, созданный специально для обмена данными между двумя приложениями. Это снижает вероятность того, что ваше приложение попытается получить данные из неправильной базы данных, а также предотвращает проблемы с конфликтами между двумя или более установками WordPress с одинаковыми префиксами. Не размещайте две установки WordPress в одной базе данных, иначе обе сломаются.
- Проверьте вкладку Network в инструментах разработчика вашего браузера и посмотрите код ошибки запроса. Если это 403 (как и должно быть), то проблема либо в отсутствии страницы, либо в недостаточных правах пользователя. Если это 500 (чего быть не должно), значит, сервер столкнулся с ошибкой и перешел к стандартной процедуре завершения. Если это 500, у вас проблема с плохим плагином, темой или базой данных. Если это 403, скорее всего, это связано с неудачным обновлением, неправильной настройкой или законным запретом доступа.

Измените префикс таблиц на "_" в файле wp-config.php и сохраните. Затем попробуйте загрузить wp-admin/. Возможно, вы увидите сообщение о новой установке. Не устанавливайте, вернитесь и снова измените префикс на "WP". У меня это сработало. Не уверен, что это поможет всем.
до: $table_prefix = 'wp_';
промежуточный вариант: $table_prefix = '_';
после: $table_prefix = 'WP_';

Аналогичное решение устранило сообщение 403: Sorry, you are not allowed to access this page
.
В моём случае при переносе на новый сервер имена таблиц в базе данных были изменены на строчные, включая те, на которые ссылается $table_prefix
.
Обновление $table_prefix
на строчные символы позволило заработать фронтенду, однако /wp-admin
выдавал ошибку 403.
Решением стала проверка базы данных на наличие ссылок на оригинальный префикс в верхнем регистре. Например, в таблице _usermeta.meta_key
было несколько экземпляров оригинального префикса в верхнем регистре.
