Intereting Posts
Панель администратора WP исчезла Фильтр WP_NAV_MENU предназначен для всех меню Каков правильный синтаксис добавления URL-адреса с помощью короткого кода для iframe? цикл внутри цикла: поиск сообщений в той же категории WordPress 4.4 Обновление визуального редактора bullets для не выбранных элементов Как сортировать сообщения по пользовательской таксономии? Как перенаправить на страницу настроек после активации плагина? почему выводится текущий заголовок страницы? Коды купонов и словосочетания; Плагин членства, третичный плагин или корзина для покупок? Как интегрировать форму (форму Ninja или контактную форму 7) с пользовательскими типами сообщений? Listbox возвращает неправильное значение в WordPress 3.9 Предложение WP_Query OR для tax_query и ключевых слов Как отображать результаты из файла excel? Заменить слово словом в строке URL Как локализовать что-то, исходящее из настройки темы

Скрыть мета-боксы для не-админов

У меня есть сайт, основанный на обзоре, где у меня есть страница для каждой другой компании, где пользователи могут их просматривать. Тема, которую я использую, добавляет пользовательский тип сообщения, называемый «обзор», и я использовал разрешение на печать для создания ограниченных учетных записей пользователей, которые могут изменять некоторые части этих обзорных страниц.

Я хотел скрыть некоторые из Мета-боксов, чтобы у них не было доступа к таким, как Yoast SEO, GD Star Ratings и т. Д. Я следил за инструкциями из других сообщений на этом веб-сайте, однако он не скрывает мета-боксы, как следует ,

Я добавил следующий код в конце «functions.php» в каталоге My Theme в соответствии с инструкциями в WordPress SEO от Yoast: Hide Meta boxes в сообщениях для не-админов

add_action('add_meta_boxes', 'hide_yoastseo_metabox', 99); function hide_yoastseo_metabox() { if (!current_user_can('activate_plugins')) { remove_meta_box('wpseo_meta', 'review', 'normal'); } } 

Снижает ли приоритет вашего вызова add_action() здесь? Это было упомянуто Kid Slimmer и Piet в том сообщении, которое вы связали с вами, в этом комментарии → https://wordpress.stackexchange.com/a/91184/33604

В их примере кода используется приоритет 10000 вместо 99 , например, вы используете – попробуйте обновить свой приоритет до 500 или 1000 или начать что-то, и посмотреть, что-нибудь изменится.

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

Так, например, что-то вроде этого может работать немного лучше:

 if( ! current_user_can('activate_plugins') ) { add_action('add_meta_boxes', 'hide_yoastseo_metabox', 1000); } function hide_yoastseo_metabox() { remove_meta_box('wpseo_meta', 'review', 'normal'); } 

Помимо этих рекомендаций, единственное, что я мог подумать, – это дважды проверить все ваши значения для remove_meta_box() – убедитесь, что 'wpseo_meta' является надлежащим идентификатором метабокса для метаболического кода Yoast, который вы пытаетесь удалить, 'review' – это правильный тип сообщения, в котором вы хотите скрыть метабокс, а 'normal' – это правильный приоритет для метабокса, на который вы нацеливаетесь. Вы можете узнать больше об remove_meta_box() здесь .

Кроме того , чтобы не оскорблять ваш интеллект здесь, но мне любопытно: получаете ли вы доступ к экранам редактирования типа «обзор» на разных уровнях возможностей? Если вы только просматриваете вещи в своем админе из своей учетной записи суперадмина полной возможности, тогда код, который применяется только к учетным записям с ограниченными возможностями, не будет работать для вас. Убедитесь, что у вас есть тестовая учетная запись с ограниченными возможностями, которую вы тестируете, и попробуйте просмотреть информацию из этой учетной записи.

 function your_function() { global $current_user; if($current_user->roles[0] == 'administrator') { add_meta_box(your parameters); // fill in your parameters } } add_action('admin_init','your_function');