Как исправить ошибку "Вам не разрешено редактировать этот элемент" для Администраторов на существующих записях?

22 янв. 2016 г., 14:42:18
Просмотры: 30.8K
Голосов: 3

Я выполняю работу для нового клиента (не технического специалиста, их бывший технический специалист ушел). У них установлена версия WordPress 4.3.2.

У меня есть учетная запись администратора, но я не могу редактировать существующие записи. Я могу создавать новые и редактировать их, но не могу редактировать существующие записи.

Ссылки на редактирование не отображаются, и если я самостоятельно создаю URL (/wp-admin/post.php?post=1375&action=edit)

Я получаю следующее сообщение об ошибке:

Вам не разрешено редактировать этот элемент.

У меня есть полный доступ к файловой системе, базе данных и т.д. Как мне исправить эту проблему, чтобы я мог редактировать существующие записи через интерфейс WordPress?

Я вижу, что установлен плагин User Role Editor.

Я активировал его и обновил. Он показывает, что администраторы имеют полные права.

администраторы имеют полные права

5
Комментарии

Вы на 100% уверены, что у пользователя роль Администратора? Если да, то это может быть связано с каким-то плагином, поэтому стандартная процедура отладки следующая: отключите все плагины и переключитесь на стандартную тему. Проверьте, сохраняется ли проблема. Если всё работает, включайте плагины по одному и проверяйте, когда снова возникнет ошибка.

kraftner kraftner
22 янв. 2016 г. 14:54:24

Спасибо @kraftner. Я уверен на 99.9% :) В ролях пользователя указано администратор, и я создал ещё одного пользователя (результат тот же). Спасибо за совет по отключению плагинов (всего 49, 23 активных, 26 неактивных).

David Silva Smith David Silva Smith
22 янв. 2016 г. 14:58:54

Ух ты, с таким количеством плагинов шансы, что один из них виноват, довольно высоки. И вы ведь делаете это не на боевом сайте, а на локальной копии, верно? :)

kraftner kraftner
22 янв. 2016 г. 15:00:24

Лол, вот бы был клон сайта. Я еще не отключил их все, и не знаю достаточно о WP, чтобы понять, могут ли быть проблемы. Думаю, попробую этот (хак?) http://wordpress.stackexchange.com/questions/65418/admins-cant-edit-each-others-posts Пытаюсь найти нужный файл functions.php (их тут много)

David Silva Smith David Silva Smith
22 янв. 2016 г. 15:07:13

Ну тогда я пас. Ковыряться в правах админов и плагинах на боевом сайте — это как делать операцию на сердце грязными руками и с завязанными глазами.

kraftner kraftner
22 янв. 2016 г. 15:11:57
Все ответы на вопрос 1
2

Я исправил это, отредактировав файл /wp-includes/capabilities.php

Исходный код был:

function current_user_can( $capability ) {
    $current_user = wp_get_current_user();

    if ( empty( $current_user ) )
        return false;

    $args = array_slice( func_get_args(), 1 );
    $args = array_merge( array( $capability ), $args );

    return call_user_func_array( array( $current_user, 'has_cap' ), $args );
}

И я изменил его на:

function current_user_can( $capability ) {
    $current_user = wp_get_current_user();

    if ( empty( $current_user ) )
        return false;

    if (is_admin())
        return true;
    $args = array_slice( func_get_args(), 1 );
    $args = array_merge( array( $capability ), $args );

    return call_user_func_array( array( $current_user, 'has_cap' ), $args );
}
22 янв. 2016 г. 15:38:18
Комментарии

не следует изменять системные файлы WordPress, так как при следующем обновлении ядра ваши изменения будут перезаписаны

Stan Stan
11 мая 2016 г. 04:28:32

Поддерживаю комментарий @Stan. Редактирование файлов ядра — это временное решение, которое может быть перезаписано без вашего ведома, если у вас включены автоматические обновления.

Gary Gary
29 нояб. 2016 г. 18:57:26