wordpress后台制作教程(四):设置页面添加总结

前面的wordpress主题后台制作教程一、二、三分别介绍了在wordpresss后台添加外观子菜单页面、顶级菜单页面和子菜单页面。其中有一些注意事项这里来总结一下。

一、动作钩子

我们在添加后台设置页面的时候一般使用了如下代码:

  1. add_action('admin_menu', 'test_function');  

一般都是使用admin_menu钩子来添加页面的,官网文档中也有提示:

NOTE: If you're running into the »You do not have sufficient permissions to access this page.« message in a `wp_die()` screen, then you've hooked too early. The hook, you should use is `admin_menu`.

大意是说:如果你碰到了提示你说:你没有足够的权限访问这个页面(You do not have sufficient permissions to access this page),很有可能你使用的钩子太早触发了,你应该使用‘admin_menu’这个钩子。

二、权限

我们添加设置页面的函数中都有一个参数:$capability,这个参数为用户访问这个菜单页面需要的权限。在函数add的参数介绍中有建议:

 User levels are deprecated and should not be used here!

在wordpress中也将权限分成了很多级别,也就是user levels,这里建议你使用capability,wordpress官方网站转么有一个介绍页面.如下:

Capabilities介绍

所以建议使用这个页面提到的内容,不过我看很多插件和主题的作者并没有这样做,比如像国内博主“万戈”的一篇文章中,这个参数是:basename(__FILE__),还有人这个参数写的是:administrator,但是这准确来说不是权限,而是角色,还有在国外收费主题中看到这个参数使用了数字,也就是user levels。他们都这样用,所以我也只是敢建议了。。。

三、相关函数

第一篇教程中我们在后台的“外观”菜单项里面添加了一个子菜单项,使用的函数是:add_theme_page(),在教程(三)中又介绍了一个添加子菜单项的函数add_submenu_page(),我们可以用add_submenu_page()来代替add_theme_page(),add_theme_page只是wordpress提供的一个更方便一点的函数,跟这个函数一样的函数还有:

  1. For Dashboardadd_submenu_page( 'index.php', ... ); Also see add_dashboard_page()
  2. For Postsadd_submenu_page( 'edit.php', ... ); Also see Also see add_posts_page()
  3. For Mediaadd_submenu_page( 'upload.php', ... ); Also see add_media_page()
  4. For Linksadd_submenu_page( 'link-manager.php', ... ); Also see add_links_page()
  5. For Pagesadd_submenu_page( 'edit.php?post_type=page', ... ); Also see add_pages_page()
  6. For Commentsadd_submenu_page( 'edit-comments.php', ... ); Also see add_comments_page()
  7. For Custom Post Typesadd_submenu_page( 'edit.php?post_type=your_post_type', ... );
  8. For Appearanceadd_submenu_page( 'themes.php', ... ); Also see add_theme_page()
  9. For Pluginsadd_submenu_page( 'plugins.php', ... ); Also see add_plugins_page()
  10. For Usersadd_submenu_page( 'users.php', ... ); Also see add_users_page()
  11. For Toolsadd_submenu_page( 'tools.php', ... ); Also see add_management_page()
  12. For Settingsadd_submenu_page( 'options-general.php', ... ); Also see add_options_page()

上面12个除去第7个custom post type,就是正常默认情况下,wordpress的11个顶级菜单项了。比如第一个For Dashboardadd_submenu_page( 'index.php', ... ); Also see add_dashboard_page()。

往仪表盘添加一个子菜单项,可以使用add_submenu_page(‘index.php’,...)这个函数,也可以直接使用add_dashboard_page函数。

已有4条评论

  1. suoliw
    suoliw : 回复

    受益匪浅,多谢!

    再请教一个问题,利用add_dashboard_page()等函数增加的子菜单是如何排序的。就比如外观这个菜单下已经有了多个菜单,那么我增加的菜单能不能定位到第一个或者最后一个。

  2. 红笺小字
    红笺小字 : 回复

    怎样给add_theme_page再添加一个二级子菜单呢

    • 阿树工作室
      阿树工作室 回复红笺小字: 回复

      add_theme_page函数添加的本身就属于二级菜单了。。如果再添加子菜单,还没见到过。。。

发表评论