Удалите Метаполе из экрана Menus

Рытье в файлы 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);

Любая справка действительно ценилась бы.Спасибо!

1
30.03.2012, 19:12
4 ответа

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

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

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

3
19.02.2020, 22:42
  • 1
    +1 Это работает также. Администраторский заголовок включен после того, как метаполя настраиваются с p_nav_menu_setup() –  Stephen Harris 30.03.2012, 20:09
  • 2
    Очень прохладный! Спасибо все для их справки с этим! –  Zach 30.03.2012, 20:58

Я не думаю, что это - рычаг. На самом деле, кажется, нет соответствующего вообще. Но внутри 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;
}
2
19.02.2020, 22:42
  • 1
    Добавленным я не имею в виду добавленный к странице, но когда add_meta_box назван. –  Stephen Harris 30.03.2012, 19:31

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

2
19.02.2020, 22:42

Вместо того, чтобы удалить метаполе, Вы могли скрыть его с CSS, например:

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

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

1
19.02.2020, 22:42
  • 1
    Эй @Tom - я знаю, что я - сторонник, но нашел бы, что функция делает это - я фигурировал 9999 приоритет заботился бы об упорядочивании (удостоверяющийся, что это звонило в последний раз). Я уверен, что это, "как" я называю его... –  Zach 30.03.2012, 19:15
  • 2
    Нет я имел в виду упорядочивание действий, например, wp_nav_menu_setup действие, в которое Вы сцепляетесь, можно назвать слишком поздним или ранним в процессе. –  Tom J Nowell♦ 30.03.2012, 19:16
  • 3
    Вот еще - мое плохое. K я буду продолжать рыть, чтобы видеть, могу ли я узнать. –  Zach 30.03.2012, 19:17

Теги

Похожие вопросы