Функция has_cap вызвана с устаревшим аргументом wordpress

После установки плагина WordPress или после обновления, появляется сообщение об использовании функции has_cap с устаревшим аргументом, но этой функции нет в коде плагина.
Что менять в плагине?

Notice: Функция has_cap вызвана с аргументом, который считается устаревшим с версии 2.0! Использование уровней пользователей в плагинах и темах считается устаревшим. Используйте роли и возможности.. in /…/……/wp-includes/functions.php on line XXXX

Причина кроется тут:
Неправильно использовать числовое значение уровня пользователя (устаревшее – deprecated) или строковое значение роли. Функции добавления меню и подменю принимают строковое значение (например, “edit_pages” – редактирование страниц), а не роли пользователей.

Решение, работает на wordpress 3.9.x :

//Неверно: роль задана как число 8
add_menu_page( ‘MyPage’, ‘MyPage’, 8, ‘mypage’,
array(&$this, ‘mainAdmin’), null, 6);
//Правильно: возможность ‘edit_pages’
add_menu_page( ‘MyPage’, ‘MyPage’, ‘edit_pages’, ‘mypage’,
array(&$this, ‘mainAdmin’), null, 6);
//Неверно: строковое значение роли ‘administrator’
add_submenu_page(‘mypage’, ‘MyLines’, ‘Lines’, ‘administrator’,
‘my-lines’, array(&$this, ‘linesPage’));
//Правильно:
add_submenu_page(‘mypage’, ‘MyLines’, ‘Lines’, ‘edit_pages’,
‘my-lines’, array(&$this, ‘linesPage’));

В моем случае проблема была заключена в плагине RusToLat:

строка
add_options_page(‘RusToLat’, ‘RusToLat’, 8, __FILE__, ‘rtl_options_page’);
заменена на
add_options_page(‘RusToLat’, ‘RusToLat’, ‘edit_pages’, __FILE__, ‘rtl_options_page’);

Если есть проблемы по конкретным плагинам, пишите в комментарии, разберемся 😉

Join the Conversation

1 Comment

  1. Спасибо Вам добрый человек! Очень помогла статья, тоже проблема была с данным плагином "RusToLat" после обновления Word press

Leave a comment

Your email address will not be published. Required fields are marked *