【问题标题】:Add custom page to admin menu visible only to admins将自定义页面添加到仅对管理员可见的管理菜单
【发布时间】:2014-01-26 18:42:00
【问题描述】:

我想建立一个自定义调查并在 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 );
}

名为“调查”的菜单项出现在后端。当我单击它时,它会转到 /wp-admin/survey/survey-admin.php 显示我的 php 文件内容,但仪表板会随着侧边栏菜单消失......这个页面对每个人也可见,并且 wordpress 功能 is_admin 不起作用此页面中不再存在...

什么是正确的解决方案?我只想在 wordpress 后端显示我的自定义页面,并能够检查用户是否是管理员。我需要为此创建一个插件吗?

谢谢!

【问题讨论】:

    标签: wordpress admin backend


    【解决方案1】:

    另一个解决方案是使用current_user_can()检查用户的能力

    if ( current_user_can('edit_files') ) {
        add_action( 'admin_menu', 'register_survey' );
    }
    

    以下是每种用户类型的功能列表:http://codex.wordpress.org/Roles_and_Capabilities#Administrator

    【讨论】:

    • 菜单项“Survey”仅对管理员正确显示,但当我单击它时,它会转到我的简单页面survey-admin.php,我不再拥有 wordpress 仪表板。如果您可以在我的简单页面上使用 is_admin 功能,那将不是什么大问题,但是不再提供 wordpress 功能......有没有办法在此处附加打印屏幕?
    • 你真的应该看看is_admin()函数,它只用于当前页面在管理员面板中,而不是确定当前用户是否为管理员。我很好奇为什么没有 WordPress 功能可用,而您却在使用像 add_menu_page()add_action() 这样的功能。只需将屏幕截图上传到网站并发布链接即可。
    【解决方案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 } ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多