Добавить пользовательскую страницу в меню администратора, видимое только администраторам

Я хочу создать собственный опрос и отобразить его результаты в бэкэнде 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

Другие вопросы по тегам