0

我一直在尝试向我已经完成的 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 测试

管理员仪表板

在此处输入图像描述

编辑器仪表板

编辑器仪表板

4

2 回答 2

2

虽然我无法证明为什么 read不起作用 - 通常如果您想通过用户角色限制某些内容,您可以为角色添加 slug。如果您阅读源代码,add_menu_page()它实际上将运行current_user_can接受角色 slug 的功能。

我会替换readeditor,看看你会得到什么。它也适用于管理员,因为它在列表中传播并且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_optionsadministrator唯一的能力。您不需要链接到其他插件制作的页面,也不需要停用该插件。

编辑 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'
    );
}
于 2018-06-19T16:39:05.603 回答
0

这对于管理员和编辑角色都是正确的。

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;          
}
于 2021-08-12T07:58:49.730 回答