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 都有 editorcontributor 等 "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;          
}