今天小雨给大家分享的 wordpress 后台定制是如何添加一个子菜单页面:
add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function,$position);
参数#参数
$parent_slug
(字符串) (必需) 父菜单的名称(或标准 WordPress 管理页面的文件名)。
$page_title
(字符串) (必需) 选择菜单时在浏览器标签中显示的文本。
$menu_title
(字符串) (必填) 用于菜单显示的文本,也就是你在左侧实际看到的文本。
$capability
(字符串) (必需) 向用户显示此菜单所需的权限,也就是说定义哪些用户可以看到这些权限。
$menu_slug
(字符串) (必需) 此菜单在浏览器地址栏显示的 url(?page=url)。此菜单应该唯一,并且仅包含小写字母数字,破折号和下划线字符,以便与 sanitize_key()兼容。
$function
(callable) (可选) 将被调用以输出此页面内容的函数。
默认值: ''
$position
(int) (可选) 应在菜单项中显示此项目的位置。
默认值:null
那么 wordpress 有哪些标准的管理页面呢?你可以把鼠标放到各个菜单下来查看浏览器左下角显示的链接,大概有下面这些:
1、在仪表盘添加子菜单: add_submenu_page( 'index.php', … );
2、在文章处添加子菜单: add_submenu_page( 'edit.php', … );
3、在媒体处添加子菜单: add_submenu_page( 'upload.php', … );
4、在链接处添加子菜单: add_submenu_page( 'link-manager.php', … );
5、在页面处添加子菜单: add_submenu_page( 'edit.php?post_type=page', … );
6、在评论处添加子菜单: add_submenu_page( 'edit-comments.php', … );
7、在你自定义文章类型处添加子菜单: add_submenu_page('edit.php?post_type=your_post_type',…)
8、在外观处添加子菜单: add_submenu_page( 'themes.php', … );
9、在插件处添加子菜单: add_submenu_page( 'plugins.php', … );
10、在用户处添加子菜单: add_submenu_page( 'users.php', … );
11、在工具处添加子菜单: add_submenu_page( 'tools.php', … );
12、在设置处添加子菜单: add_submenu_page( 'options-general.php', … );
权限这些又是如何定义的呢?一般我们填'manage_options'就够了,如果需要细分这些权限,可以参考官方最新文档:https://wordpress.org/support/article/roles-and-capabilities/
说了这么多,小雨给大家举个例子吧:就来一个高级点的例子,假设我们在一个类中调用这个函数,那么 function 应该为一个数组,该数组中的第一个值是该类的实例,而该数组中的第二个值将是对象中的方法(给定作为字符串)。
Class WPDocs_AdminPage
{
private $_plugin_name;
private $_version;
public function __construct( $plugin_name, $version )
{
$this->_plugin_name = $plugin_name;
$this->_version = $version;
}
public function wpdocs_create_menu_and_submenu_page()
{
add_menu_page(
'PAGE TITLE', 'MENU TITLE', 'CAPABILITY', 'menu_slug',
array( $this, 'wpdocs_method_name_in_the_class' ), 'icon_url', 'POSITION'
);
add_submenu_page(
'parent_slug', 'PAGE TITLE', 'MENU TITLE', 'CAPABILITY', 'menu_slug',
array( $this, 'wpdocs_method_name_in_the_class' )
);
}
}
$admin_page = new WPDocs_AdminPage;
add_action( 'admin_menu', array( $admin_page, 'wpdocs_create_menu_and_submenu_page' ) );