add_menu_page()函数详解

描述

给WordPress的后台添加一个顶级菜页面。

具体来说,这个函数是创建一个新的顶级菜单,在管理员菜单栏和注册一个回调函数钩子,用于输出页面内容的链接菜单页面被请求的时候。返回 $hookname

使用方法

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php
add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, 
$position );
?>

[/pcsh]

参数

$page_title
(字符串) (必须) 当选择菜单时,该文本将被显示在网页的标题中。
默认值: None
$menu_title
(字符串) (必须) 在菜单上显示的名称文本
默认值: None
$capability
(字符串) (必须) 此菜单所需的功能将显示给用户。用户级别是过时的和不应该用在这里!
默认值: None
$menu_slug
(字符串) (必须) 这个菜单的名称是指这个菜单(应该是菜单的唯一)。在3.0版本之前,这被称为文件(或处理)参数。如果函数的参数被省略了,这menu_slug应该是PHP文件处理菜单页面内容的显示。
默认值: None
$function
(字符串) (可选) 显示菜单页的页面内容的功能。
默 认值: None. 从技术上讲,函数的参数是可选的,但如果它没有提供,那么WordPress的假设包括PHP文件将生成的管理界面,无需调用一个函数。大多数插件作者选 择把页面生成代码放在主插件文件中的函数中。如果在函数的参数指定,可以使用的menu_slug参数任意字符串。这允许使用的页面,如 ?page=my_super_plugin_page 而不是 ?page=my-super-plugin/admin-options.php.
该函数必须在两种方法中引用:
  1. 如果该函数是一个类的成员,它应该被引用为 array( $this, 'function_name' )
  2. 在所有其他情况下,使用函数名本身就足够了
$icon_url
(字符串) (可选) 该菜单的左侧菜单。
Default: 空字符串

  • 如果你有一个自定义的图像文件,你可以使用 plugin_dir_url( __FILE__ ) 函数来获得你的插件目录的网址,然后添加图像文件名到它。这个图标应该是 20 x 20 像素或更小。
  • (WP 3.8+) 假如 ‘dashicons-…’, 一个dashicon显示集合https://developer.wordpress.org/resource/dashicons/。例如,默认的 “gear” 符号可以显式地指定 ‘dashicons-admin-generic’。
  • (WP 3.8+) 假如 ‘data:image/svg+xml;base64…’, 指定的SVG数据图像作为一个CSS背景。
  • 加入是 ‘none’ (以前 ‘div’),图标是一个空的DIV CSS可以更换风格。
  • 假如是 ” (默认值), “gear” Dashicon显示 (和 menu-icon-generic 添加到链接的CSS类)。
$position
(整 数) (可选) 菜单显示的位置,这个菜单应该出现在那个菜单里面。默认情况下,如果省略此参数,则菜单将出现在菜单结构的底部。数字越高,菜单的位置越低。警告:如果两 个菜单项使用相同的位置属性,其中的项目可能被覆盖,所以只有一项显示!使用十进制来代替整型值可以减少冲突的风险,例如 63.3 而不是 63 (Note: Use quotes in code, IE ‘63.3’).
Default: 菜单结构底部

  • 2 – Dashboard
  • 4 – Separator
  • 5 – Posts
  • 10 – Media
  • 15 – Links
  • 20 – Pages
  • 25 – Comments
  • 59 – Separator
  • 60 – Appearance
  • 65 – Plugins
  • 70 – Users
  • 75 – Tools
  • 80 – Settings
  • 99 – Separator

Return Values

string
$hookname 在内部用于跟踪输出页面内的全局菜单页面回调 $menu 数组

Examples

添加自定义菜单项WordPress管理菜单,为用户与管理员的能力:

示例 1:

[pcsh lang="php" tab_size="4" message="" hl_lines="" provider="manual"]

<?php
add_action( 'admin_menu', 'register_my_custom_menu_page' );
function register_my_custom_menu_page() {
	add_menu_page( 'custom menu title', 'custom menu', 'manage_options', 
	'myplugin/myplugin-admin.php', '', plugins_url( 'myplugin/images/icon.png' ), 6 );
}

[/pcsh]

使用该方法,应位于页面生成代码 myplugin/myplugin-admin.php:

<?php echo "Admin Page Test"; ?>

示例 2:

 

Notes

    • 如果你正在运行“你没有足够的权限来访问这个页面”错误,那么你已经钩得太早了。 该 hook 应该使用 admin_menu

 

    • 如果你只想将现有的管理菜单项移到不同的位置,你可以使用 admin_menu 钩子在设置菜单项与他们在全局的当前位置 $menu$submenu 变量(这是数组),并重置它们在其他地方的数组。

 

    • 这个函数需要一个 ‘capability’ (see Roles and Capabilities) 这将被用来确定页面是否包含在菜单中。连接到处理页面输出的功能必须检查用户是否具有所需的“Capabilities”。

 

    • 如果您使用的是设置接口来保存数据,并且需要用户以外的管理员,将需要修改通过 hookoption_page_capability_{$option_group},$option_group 是一样的option_groupregister_setting()

 

允许编辑保存数据的示例:

// Register settings using the Settings API 
function register_my_setting() {
	register_setting( 'my-options-group', 'my-option-name', 'intval' ); 
} 
add_action( 'admin_init', 'register_my_setting' );

// Modify capability
function my_page_capability( $capability ) {
	return 'edit_others_posts';
}
add_filter( 'option_page_capability_my-options-group', 'my_page_capability' );

Source File

add_menu_page() 方法在文件 wp-admin/includes/plugin.php。

 

此处评论已关闭