Добавить пользовательскую страницу в меню администратора, видимое только администраторам
Я хочу создать собственный опрос и отобразить его результаты в бэкэнде WordPress.
Я добавил новый пункт меню администратора, как это:
add_action( 'admin_menu', 'register_survey' );
function register_survey(){
add_menu_page( 'Survey', 'Survey', 'manage_options', '/survey/survey-admin.php', '', '/wp-admin/survey/icon.png', 30 );
}
Пункт меню с именем Survey появляется в бэкэнде. Когда я нажимаю, он переходит в /wp-admin/survey/survey-admin.php, где отображается содержимое моего php-файла, но панель инструментов исчезает с меню боковой панели... Эта страница также видна всем, и функция wordpress is_admin не работает больше на этой странице...
Какое правильное решение? Я просто хочу отобразить свою пользовательскую страницу на бэкэнде WordPress и проверить, является ли пользователь администратором. Нужно ли создавать плагин для этого?
Спасибо!
2 ответа
Я нашел решение, создав плагин и добавив этот код:
<?php
add_action( 'admin_menu', 'register_survey' );
function register_survey() {
//create new top-level menu
add_menu_page('Survey', 'Survey', 'administrator', __FILE__, 'survey_page',plugins_url('/icon.png', __FILE__));
}
function survey_page() {
?>
<div class="wrap">
<h2>Survey</h2>
MY TEXT HERE
<?php if ( is_admin() ) {
echo '<p>is admin!</p>';
}
?>
</div>
<?php } ?>
Другим решением было бы проверить возможности пользователей, используя current_user_can()
if ( current_user_can('edit_files') ) {
add_action( 'admin_menu', 'register_survey' );
}
Вот список возможностей для каждого типа пользователей: http://codex.wordpress.org/Roles_and_Capabilities