У меня есть следующий код, который очищает много вещей, которые не будут использоваться в области администратора:
add_action( 'admin_menu', 'my_remove_menu_pages' );
function my_remove_menu_pages() {
remove_menu_page( 'edit.php' ); //Posts
remove_menu_page( 'upload.php' ); //Media
remove_menu_page( 'edit-comments.php' ); //Comments
remove_menu_page( 'themes.php' ); //Appearance
remove_menu_page( 'users.php' ); //Users
remove_menu_page( 'tools.php' ); //Tools
remove_menu_page( 'options-general.php' ); //Settings
};
Однако есть два пункта меню, которые были вставлены из плагинов.
Когда я наводю курсор мыши на каждый пункт меню, он говорит, что ссылки:
/wp-admin/edit.php?post_type=acf
/wp-admin/admin.php?page=wpcf7
Есть ли способ скрыть эти страницы меню тоже?
Ответы:
Вам нужно использовать правильные хуки (которые не всегда совпадают с URL-адресами / слагами), и не повредит использовать хук, который запускается позже (например,
admin_init
):Вы можете использовать следующее для отладки:
Это дает (для моей настройки) следующее для страницы меню плагина Contact Form 7:
Элемент массива с ключом
2
является то , что вы ищете:wpcf7
.источник
remove_menu_page()
было огромной помощью - научил меня ловить рыбу, а не просто вручать мне рыбу!ВЫ МОЖЕТЕ ОТЛАДИТЬ ВСЕ ЭТО С ПОТОМ, ЧТОБЫ ПОЛУЧИТЬ ВСЕ ИНФОРМАЦИЮ, ВАМ НУЖНУЮ:
Ключи предоставят вам значения массива, которые позволяют вам делать все это с глобалами WordPress (хотя и не рекомендуется)
А для удаления для определенных пользователей просто сделайте то же самое, кроме как с добавленными возможностями:
И СВЯЗАТЬ ВСЕ ВМЕСТЕ, ПОЧЕМУ НЕ КОРОТКО НАШ КОД? ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ Массивы, ЧТОБЫ ИЗБЕЖАТЬ ПИСЬМЕНА remove_submenu_page 50 раз. Это также работает с узлами панели инструментов:
источник
Возможно, вам нужно установить приоритет add_action на большее число и настроить таргетинг на эти две новые ссылки, например, так:
Расширенные пользовательские поля также предоставляют справочный документ о том, как сделать это для своего меню здесь:
http://www.advancedcustomfields.com/resources/how-to/how-to-hide-acf-menu-from-clients/
Контактная форма 7 также имеет свой собственный способ ограничения видимости меню:
http://contactform7.com/restricting-access-to-the-administration-panel/
источник
remove_menu_page( 'wpcf7' );
Обновить
Я создал фрагмент кода с более надежной функцией, которая работает как с основными меню, так и с элементами подменю.
Оригинальный ответ
Вместо указания меню, которое вы хотите удалить, укажите меню, которые вы хотите сохранить :)
Таким образом, вам не нужно искать имена плагинов и изменять код при добавлении новых плагинов.
источник
Вам нужно найти правильный $ menu_slug. Следующий код работал для меня:
источник
Конечно, вы можете указать только те элементы, которые хотите удалить. Посмотрите на код ниже:
Это просто негатив метода numediaweb. Спасибо @numediaweb. Работает нормально.
PS: 'menu_item_1 / n' -> наведите курсор мыши на элемент меню и получите точную страницу этого элемента меню, показанную в ссылке.
источник
используйте этот фрагмент кода
источник