До вече обновил свой блог, с какой то там версии 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-м