我一直在尝试向我的WP仪表盘添加一个菜单,该菜单已经完成。但是现在我想将此菜单显示给编辑者角色以及管理员。
这是我的代码
add_action( 'admin_menu', 'register_my_custom_menu_page' );
function register_my_custom_menu_page() {
add_menu_page( 'Instagram test', 'Instagram test', 'read', 'admin.php?page=sb-instagram-feed', '', 'dashicons-welcome-widgets-menus', 90 );
}
到目前为止,它的工作原理很漂亮,但仅对管理员用户有效,对编辑用户无效。
我已经阅读了有关功能,这就是为什么我将 READ 值放在上面的函数中的原因。
我还如何向我的编辑器用户显示此菜单?
非常感谢您的帮助
这是屏幕截图,我的自定义菜单是 INSTAGRAM TEST
编辑者的仪表板
答案 0 :(得分:2)
虽然我不能证明为什么为什么 read
无法正常工作-通常,如果您想通过用户角色来限制某些内容,则可以放任角色角色。如果您阅读add_menu_page()
的源代码,它将实际上通过current_user_can
运行此功能,该功能也接受角色提示。
我将read
替换为editor
,然后看能得到什么。由于它沿列表向下传播,并且administrators
都具有editor
,contributor
等“功能”,因此它也对管理员有效。
编辑:似乎您已安装Instagram Feed插件,该插件将与您的自定义插件冲突。该插件中的代码显示sb-instagram-feed
页面属于该插件:
function sb_instagram_menu() {
add_menu_page(
__( 'Instagram Feed', 'instagram-feed' ),
__( 'Instagram Feed', 'instagram-feed' ),
'manage_options',
'sb-instagram-feed',
'sb_instagram_settings_page'
);
add_submenu_page(
'sb-instagram-feed',
__( 'Settings', 'instagram-feed' ),
__( 'Settings', 'instagram-feed' ),
'manage_options',
'sb-instagram-feed',
'sb_instagram_settings_page'
);
}
add_action('admin_menu', 'sb_instagram_menu');
该插件需要manage_options
(仅administrator
个功能)。您无需链接到其他插件创建的页面,也无需停用该插件。
编辑2 :请注意,直接编辑插件文件通常不是一个好习惯,因为您所做的任何更改都会在更新插件时被覆盖。您可能可以取消当前的管理菜单,并可以自定义菜单。
// Remove Existing Menu
remove_action( 'admin_menu', 'sb_instagram_menu' );
// Add Custom Menu
add_action( 'admin_menu', 'custom_sb_instagram_menu');
function custom_sb_instagram_menu() {
add_menu_page(
'Instagram Test',
'Instagram Test',
'editor',
'sb-instagram-feed',
'sb_instagram_settings_page'
);
add_submenu_page(
'sb-instagram-feed',
'Test Settings',
'Test Settings',
'editor',
'sb-instagram-feed',
'sb_instagram_settings_page'
);
}