Элемент add_menu_page отображается для роли редактора 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.

Панель администратора

введите здесь описание изображения

Панель редактора

Панель инструментов редактора


person Alejo_Blue    schedule 19.06.2018    source источник


Ответы (1)


Хотя я не могу подтвердить, почему 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'
    );
}
person Xhynk    schedule 19.06.2018
comment
Спасибо за ваши предложения. Я попытался перейти от администратора к редактору, но это не сработало. Также я проверил current_user_can, но ничего не сделал. if (current_user_can('editor')) {мой код} мне действительно интересно, почему он отображается только у моего администратора, а не у остальных редакторов - person Alejo_Blue; 19.06.2018
comment
Вместо editor я использовал edit_pages, и это сработало. Но когда я захожу в это меню, оно показывает мне: Извините, вам запрещено - person Alejo_Blue; 19.06.2018
comment
Обновил ответ, у вас конфликт с плагином Instagram Feed. - person Xhynk; 19.06.2018
comment
Спасибо за отзыв! я вижу это. ну, я не могу деактивировать, потому что я хочу показать этот плагин. То, что я пытаюсь сделать, это просто показать это меню (instagram) моему пользователю Editor. - person Alejo_Blue; 19.06.2018
comment
большое спасибо за твою помощь! я изменил этот раздел кода, который вы только что загрузили: manage_options на edit_pages, и теперь редактор может перейти к этому плагину. Большое спасибо! - person Alejo_Blue; 19.06.2018
comment
Просто примечание: если вы обновите файл плагина таким образом, любые сделанные вами изменения будут перезаписаны при обновлении плагина! Я предоставил еще одно редактирование, вы можете отключить текущее, но это может занять некоторое время. - person Xhynk; 19.06.2018
comment
у меня есть дочерняя тема, туда я помещаю свой файл functions.php. Спасибо за новый код. - person Alejo_Blue; 19.06.2018