Intereting Posts
изменить значение пользовательского поля WordPress – полоса символов, если существует Как я могу автоматически переводить названия с любого языка на английский? Почему я получаю `вызов функции-члена has_posts () для не-объекта`? Как подсчитать количество функций, связанных с действием? Загрузка изображений на удаленный сервер Экспорт базы данных WP для импорта с использованием WP-CLI в Vagrant Box Почему WordPress автоматически обрезает все мои изображения? Поддержка конвертера валюты WooCommerce Какие действия влияют на файлы, DB или оба? Кнопка Stripe не работает на странице шаблона Как вставить некоторые строки файла журнала в пользовательскую страницу администратора Почему свойство count get_the_tags всегда возвращает 0? wp_enqueue_scripts не работает внутри короткого кода Как я могу переконфигурировать живую сеть MultiSite? ajax для фильтрации сообщений по категориям в циклах wordpress

Удаление экрана Metabox из меню

Некоторое время врывался в файлы WP и думал, что я просто что-то пропустил. Конечная цель состоит в том, чтобы удалить метаконтакты Theme Locations из экрана Menus, если у кого-то нет определенных возможностей manage_options . Я знаю, немного странно для удобства использования, но есть только одно меню, и мы пытаемся сделать это труднее испортить;)

Глядя на /wp-admin/nav-menu.php вокруг строки 383 я вижу wp_nav_menu_setup() поэтому я попытался добавить следующее в качестве фильтра, но пока не повезло:

 function roots_remove_nav_menu_metaboxes() { // Remove Theme Locations from users without the 'manage_options' capability if (current_user_can('manage_options') == false) { remove_meta_box('wp_nav_menu_locations_meta_box', 'nav-menus', 'side'); // theme locations } } add_action('wp_nav_menu_setup', 'roots_remove_nav_menu_metaboxes',9999); 

Любая помощь могла бы быть полезна. Благодаря!

Solutions Collecting From Web of "Удаление экрана Metabox из меню"

Коробка добавляется в wp_nav_menu_setup (), поэтому вам придется удалить ее когда-то после этого и до того, как она будет выведена позже в nav-menus.php. Там, кажется, нет каких-либо действий, которые вы можете использовать там, но у admin-header.php есть несколько. Вы можете попробовать следующее:

 add_action( 'admin_head-nav-menus.php', 'roots_remove_nav_menu_metaboxes' ); 

Тем не менее, я никогда не пытался удалять обменные ящики с экрана меню, и он не тестировался, поэтому не знаю, работает ли он.

Я не думаю, что это крючок. На самом деле, похоже, совсем не подходит. Но внутри wp_nav_menu_setup() команды manage_nav-menus_columns вызываются вскоре после добавления обменных ящиков. Вы можете подключиться к нему и удалить его:

 add_action( 'manage_nav-menus_columns', 'my_remove_meta_locations_box' ); function my_remove_meta_locations_box($columns) { if ( ! current_user_can('manage_options') ) remove_meta_box('nav-menu-theme-locations', 'nav-menus', 'side'); return $columns; } 

Быстрый простой вариант – использовать плагин Adminimize , это поддерживает это как вариант для разных ролей.

Вместо удаления метабокса вы можете скрыть его с помощью CSS, например:

 #nav-menu-theme-locations { display: none; } 

Ваша проблема с удалением самого окна, скорее всего, является проблемой при заказе, либо пытается удалить ящик перед его добавлением, либо удалить его после того, как он уже был отправлен пользователю