У вас недостаточно полномочий для доступа к этой странице

26 Мар
2010

До вече обновил свой блог, с какой то там версии 2.8 до текущей. 2.9.2 ну заодно решил русифицировать.

Обновление прошло успешно, а вот русификация… был не большой подводный камень.

Да, русификация так же прошла успешно. Но что странно! Пока я не русифицировал, а просто обновил блог. Было все хорошо блог работал.

После русификации я начал наблюдать на сайте вот такую картину, когда пытался зайти в админскую часть.

У вас недостаточно полномочий для доступа к этой странице.

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

Совсем не много по гуглил, я узнал, что такая ошибка происходит, как бы это не было парадоксально, из-за плагина wp-db-backup , который служил верой и правдой все эти годы.
Он конечно довольно старенький, но свою работу знает (знал). Бэкапил не спеша каждую неделю базу, на всякий случай… и тут на тебе такое.

Т.е. когда я удалял этот файл с сервера, то и блог работал и русский язык появился. Но как только я активировал его, опять наблюдал вот эту фразу:

У вас недостаточно полномочий для доступа к этой странице.

Решил я разобраться, что же там такое, из-за чего ошибка то.

Итак.

Сама фраза

У вас недостаточно полномочий для доступа к этой странице.

находится в файле ru_RU.po, а точнее в его скомпилированной копии ru_RU.mo

Вот так оно там выглядит. Т.е. английскому значению сопоставляется русское.

#: wp-admin/menu.php:311
msgid "You do not have sufficient permissions to access this page."
msgstr "У вас недостаточно полномочий для доступа к этой странице."

Дальше поиски уже осуществлялись по фразе

You do not have sufficient permissions to access this page.

Привели меня к файлу menu.php

if (! user_can_access_admin_page()) {
	do_action('admin_page_access_denied');
	wp_die( __('You do not have sufficient permissions to access this page.') );
}

Ага, значит после вызова функции user_can_access_admin_page(), меня не признают, как админа.

Ну что ж, нужно разобраться, почему так… где же связь между wp-db-backup.php

По этому открыл файл wp-db-backup.php и начала его изучать. Эксперементальным путем нашел, что ошибка где то в этом месте:

if ( function_exists('wp_create_nonce') )
	$query_args = array_merge( $query_args, array('_wpnonce' => wp_create_nonce($this->referer_check_key)) );

А конкретно в этой конструкции

wp_create_nonce($this->referer_check_key)

по этому я, что бы не тратить уйму времени, заменил этот код

$query_args = array_merge( $query_args, array('_wpnonce' => wp_create_nonce($this->referer_check_key)) );

этим

$query_args = array_merge( $query_args, array('_wpnonce' => time()/*wp_create_nonce($this->referer_check_key)*/) );

я пишу «заменил», а не исправил… потому что не особо разбирался… что там и почему была ошибка

для себя я только понял, что это какой то уникальный ключ, который создает функция wp_create_nonce, в описании так и написано «Creates a random, one time use token.»

P.S.
Плагину такое можно простить, ведь обновлялся он последний раз в году этак, 2006-м :)

Comment Form

top