add_menu_page项目显示给编辑者角色Wordpress

时间:2018-06-19 16:28:04

标签: wordpress function menuitem roles capability

我一直在尝试向我的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

管理员的Dashabord enter image description here

编辑者的仪表板

Editors Dashboard

1 个答案:

答案 0 :(得分:2)

虽然我不能证明为什么为什么 read无法正常工作-通常,如果您想通过用户角色来限制某些内容,则可以放任角色角色。如果您阅读add_menu_page()的源代码,它将实际上通过current_user_can运行此功能,该功能也接受角色提示。

我将read替换为editor,然后看能得到什么。由于它沿列表向下传播,并且administrators都具有editorcontributor等“功能”,因此它也对管理员有效。

编辑:似乎您已安装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'
    );
}