Скрываем custom fields для не админов, функция remove_meta_box()
Если у вас в блоге, есть несколько пользователей, то вы, наверное, сталкивались с ситуацией разграничения прав для пользователей, авторов и администраторов. Сегодня рассмотрю один частный случай, что приключился в процессе работы над молодежным интернет журналом где у посетителей есть возможность регистрироваться, сочинять и публиковать свои заметки. Часть функционала в блоге реализовано с помощью так называемых произвольных полей custom fields и суть в том, что пользователи проекта в отличии от администратора не должны иметь возможность их редактировать. То есть доступ к custom fields должен быть только у админа.
Тут следует также заметить, что в wordpress есть разные типы пользователе у каждого из которых свои ограниченные соответствующие возможности. В текущем проекте настроено все так, что Участником становится посетитель после регистрации и может отправлять в блоге свои публикации. Посты не отображаются на сайте сразу, а предоставляются на утверждение администратору, который уже решает быть новой записи или нет. Причем, что важно, как только админ утвердил и опубликовал заметку, Участник не сможет больше внести в нее изменения. У Автора в этом плане опции несколько иные – для постинга ему не требуется подтверждение админа, посты сразу появляются на сайте. Следовательно он целиком и полностью может управлять своими заметками когда захочет.
Не знаю на 100% то ли там на сайте используется какой-то модуль для подобного разграничения прав, то ли так устроено все всех версиях wordpress, но это, по сути, не важно. Вывод из данного лирического отступления заключается том, что если у вас в блоге имеются только Участники без Авторов, тогда, в принципе, можно ничего не придумывать особо – даже, если пользователь добавить какую-то информацию в custom fields (для начинающих и не знакомых с wordpress вероятность этого почти стремится к нулю), то в любом случае админ в процесс проверки статьи может ненужные ему элементы удалить. Причем, как отмечалось выше, пользователь Участник после публикации на это никак не сможет повлиять. Но как быть с Авторами… Здесь нам на помочь приходит очень полезная функция remove_meta_box() и условный оператор.
Функция remove_meta_box
Основное и единственное назначение этой функции заключается в том, что она удаляет (скрывает) тот или иной мета блок данных при создании постов, страниц и ссылок. В нашем случае нужно скрыть блок с custom fields только для пользователей не администраторов, поэтому применим небольшое условие. Весь код нужно поместить в файл functions.php:
if (is_admin()) { function my_remove_meta_boxes() { if(!current_user_can('administrator')) { remove_meta_box('postcustom','post','normal'); remove_meta_box('postcustom','page','normal'); } } add_action( 'admin_menu', 'my_remove_meta_boxes' ); }
Сохраняем и проверяем. Вообще изначально думал, что нужно указать в качестве первого параметра функции remove_meta_box название исключаемого custom fields, но как оказалось позже она убирает сразу целый мета блок. Собственно, поэтому функция может использоваться и для других блоков на странице.
Вообще любой пользователь может скрыть ненужные или отобразить мета блоки с помощью ссылки «Настройки экрана» в админке wordpress, которая располагается в верхнем правом углу страницы. При открытии найдете все возможные блоки, а также количество столбцов для их вывода (на маленьких экранах удобнее будет работать с одним).

Общий синтаксис функции remove_meta_box следующий:
<?php remove_meta_box( $id, $page, $context ); ?>
Здесь параметр $page задает на какой именно странице создания записи нужно убирать блог: ‘post’ -пост, ‘page’ – страница, ‘link’ – раздел со ссылками. Полезно, что функция также работает с созданными пользовательскими типами, например ‘product’. Переменная $context может принимать значения normal, advanced или side – тут, признаться без понятия что это значит. Больше всего вариантов у параметра $id – он задает какой именно мета блок убирается. В качестве ‘id’ могут использовать следующие обозначения:
- ‘commentstatusdiv’ – статус комментариев (обсуждение) – разрешить / запретить.
- ‘commentsdiv’ – мета блок всех комментариев к посту.
- ‘slugdiv’ – выбор Slug значения для ссылки.
- ‘revisionsdiv’ – блок ревизий.
- ‘authordiv’ – мета блок автора.
- ‘postcustom’ – произвольные поля Custom fields, который мы использовали выше.
- ‘postexcerpt’ – поле для Excerpt.
- ‘trackbacksdiv’ – блок с трекбэками (Trackbacks).
- ‘postimagediv’ – миниатюра для поста (Featured image).
- ‘formatdiv’ – мета блок Formats.
- ‘tagsdiv-post_tag’ – Теги для поста.
- ‘categorydiv’ – мета блок категорий.
- ‘pageparentdiv’ – атрибуты для записи.
В качестве примера можно рассмотреть код, который убирает комментарии, их настройки и блок автора со окна редактирования или создания страницы в блоге:
<?php function remove_page_fields() { remove_meta_box( 'commentstatusdiv' , 'page' , 'normal' ); //removes comments status remove_meta_box( 'commentsdiv' , 'page' , 'normal' ); //removes comments remove_meta_box( 'authordiv' , 'page' , 'normal' ); //removes author } add_action( 'admin_menu' , 'remove_page_fields' ); ?>
Как видите, нет ничего сложного в этом коде, добавить его нужно разумеется в functions.php. Не забудьте только кроме самой функции использовать еще и конструкцию add_action, как это показано в примере – тогда все обязательно получится.
P.S. Для онлайн-заработка есть ну очень много вариантов, в статье про заработок на платных опросах рассказывается об одном из них – возможно не столь прибыльном, но интересном.
Вы наверняка слышали о том, что каждое имя имеет определенный смысл, толкование имен поможет узнать о своих скрытых возможностях и придумать имя своему ребенку.
Остановившись в Киеве на пару дней не ищите номер в отеле, услуга посуточная аренда квартир в киеве намного дешевле и представлена большим выбором апартаментов.
1 комментарий к статье “Скрываем custom fields для не админов, функция remove_meta_box()”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Управление блогом с несколькими авторами в WordPress
- Плагин Lightbox Plus – улучшенный эффект для изображений
- Скрываем custom fields для не админов, функция remove_meta_box()
- Видеокурс WordPress Security по защите блога на WordPress
- Плагины смайликов в wordpress блоге
- Обновление WordPress подробно для начинающих
- Лишние ссылки с WordPress прочь
- Безопасность (3)
- Видео (5)
- Возможности (54)
- Начинающим (16)
- Новости (19)
- Оптимизация (12)
- Плагины (62)
- Сервисы (10)
- Хаки и секреты (39)
- Шаблоны (13)
- Записи и посты wordpress, оформление записи






(6,19 из 7, голосов - 21) - 17 полезных приемов и хаков для WordPress






(5,60 из 7, голосов - 10) - Что нового в WordPress 3.1






(5,38 из 7, голосов - 8) - Как добавить дополнительные кнопки в редактор WordPress






(5,25 из 7, голосов - 8) - Ссылка читать далее в wordpress – тег more






(5,00 из 7, голосов - 8) - Интернет магазин на wordpress – плагин UWCart






(4,63 из 7, голосов - 8) - Вывод категорий для поста через функцию get_the_category






(4,50 из 7, голосов - 8)
- Seleckis.lv — Журнал Никиты Селецкого
- Блогинг в стиле web 2.0
- Достопримечательности Львова
- Про блоги для блоггеров
- WordpressPlugins.ru

Оцените статью:
Категории:
Теги:
Спсибо. В так подробно и понятно пишете. Я не очень хорошо разбираюсь пока в html-кодах. Вы здорово помогли. Теперь буду почаще к Вам заглядывать.