add_menu_page 项显示给编辑角色 Wordpress
add_menu_page item show to Editor Role Wordpress
我一直在尝试向我的 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测试。
管理员的仪表板
编辑器仪表板
虽然我无法证明 为什么 read
不起作用 - 通常如果您想按用户角色限制某些内容,您可以放入 slug为了角色。如果您阅读 add_menu_page()
it will actually run the capability through current_user_can
的源代码,它也接受角色 slug。
我会用 editor
替换 read
,看看你能得到什么。它也适用于管理员,因为它向下传播列表并且 administrators
都有 editor
、contributor
等 "capabilities".
编辑:看来您安装了 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
的功能。您不需要 link 到其他插件制作的页面,或停用该插件。
编辑 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'
);
}
这对于管理员和编辑者角色都是正确的。
add_menu_page( 'Transcoding Mp3', 'Transcoding Mp3', 'edit_pages', 'transcoding_mp3', 'transcoding_mp3_fun', '', 90 );
function transcoding_mp3_fun() {
$currentusr = wp_get_current_user();
$idcur = $currentusr->data->ID;
$namecur = $currentusr->data->user_login;
echo 'This is editor id = '. $namecur;
}
我一直在尝试向我的 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测试。
管理员的仪表板
编辑器仪表板
虽然我无法证明 为什么 read
不起作用 - 通常如果您想按用户角色限制某些内容,您可以放入 slug为了角色。如果您阅读 add_menu_page()
it will actually run the capability through current_user_can
的源代码,它也接受角色 slug。
我会用 editor
替换 read
,看看你能得到什么。它也适用于管理员,因为它向下传播列表并且 administrators
都有 editor
、contributor
等 "capabilities".
编辑:看来您安装了 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
的功能。您不需要 link 到其他插件制作的页面,或停用该插件。
编辑 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'
);
}
这对于管理员和编辑者角色都是正确的。
add_menu_page( 'Transcoding Mp3', 'Transcoding Mp3', 'edit_pages', 'transcoding_mp3', 'transcoding_mp3_fun', '', 90 );
function transcoding_mp3_fun() {
$currentusr = wp_get_current_user();
$idcur = $currentusr->data->ID;
$namecur = $currentusr->data->user_login;
echo 'This is editor id = '. $namecur;
}