Лучшее решение, которое я нашел, на самом деле довольно простое и требует небольшой проверки источника и хорошего понимания того, что искать.
В этом примере woocommerce регистрирует пользовательский тип записи 'productс подменю, которое отображается как «Параметры продукта».Мы хотим скрыть это для пользователей без прав администратора.
При проверке пунктов меню мы находим, что гиперссылка для родительского меню имеет вид «edit.php? Post_type = event_ticket» - посмотрим немного дальше, и мы увидимчто гиперссылка для подменю имеет вид 'https://websitename.com/wp-admin/edit.php?post_type=product&page=product_attributes'
. Мы будем использовать ловушку add_action, как показано ниже.Обратите внимание, что мы используем URL для родительского меню, однако мы используем ТОЛЬКО параметр страницы для дочернего элемента.
add_action ('admin_menu', 'remove_menu_pages', 999);
function remove_menu_pages()
{
if (current_user_can('manage_options') == false)
{
//1st parameter is parent URL | second is the 'page' parameter from the child url
remove_submenu_page('edit.php?post_type=product', 'product_attributes');
}
}
Добавьте это в файл functions.php, а затем войдите в систему как пользователь без прав администратора, и теперь подменю должно быть скрыто.