n-wp.ru — блог о WordPress
Как создать свой блок произвольных полей в редакторе | n-wp.ru

Как создать свой блок произвольных полей в редакторе

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

Я уже рассказывал об одном из вариантов плагина Custom Field GUI, позволяющем вставить в редактор поста блок нужных вам произвольных полей.

Однако можно создать свой блок произвольных полей и снабдить их удобными формами ввода и выбора значений без использования плагинов. Такой блок можно применять там, где нужно упростить работу авторов с произвольными полями, сократив и ограничив варианты ввода их значений. Давайте рассмотрим создание такого блока на примере пользовательского блока произвольных полей, который я использую в одном из своих блогов — блока полей, отвечающих за вывод и расположение рекламной ссылки (постового).

Как создать свой блок произвольных полей в редакторе

Как видите, для создания постового используются четыре произвольных поля, значения которых его формируют: текст до ссылки + анкор + ссылка + текст после ссылки. Значения этих произвольных полей являются текстом, который вводит пользователь, и они каждый раз бывают разными, либо вообще отсутствуют, а это значит, что для ввода нужно использовать текстовые формы. В дополнение к ним есть еще два произвольных поля, с помощью которых задается расположение постового в статье, причем они имеют заранее заданные значения, которые пользователю нужно только лишь выбрать. Значит значения этих произвольных полей выбираются пользователем с помощью специальных форм — радио-кнопок или выпадающего меню.

Чтобы создать такой блок произвольных полей, нужно вставить код в файл functions.php.

Создание блока

Чтобы создать блок, вставьте в файл functions.php:

Добавление полей

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

Сохранение значений произвольных полей при автосохранении поста

Если у вас работает автосохранение поста (сохранение текущего состояния редактируемого поста с определенным интервалом), то неплохо бы задействовать его и для сохранения значений произвольных полей из этой формы. Для этого добавьте к коду:

Сохранение значений произвольных полей при сохранении поста

При сохранении поста важно, чтобы значения произвольных полей тоже сохранялись и имели актуальное значение. Для этого добавьте в код:

Эта часть кода проверяет, имеет ли право текущий пользователь редактировать пост, заполнено ли произвольное поле, и если оно заполнено, то сохраняет его значение. Если значение произвольного поля помечено приставкой extra, то такое произвольное поле будет создано в любом случае, даже если оно будет пустым, остальные же произвольные поля будут созданы и сохранены только если они будут заполнены. Эта проверка позволит удалять пустые и не нужные произвольные поля, оставляя только те, которые относятся к выводу рекламной ссылки и заполнены данными.

Код полностью

Таким образом можно создавать пользовательские блоки с произвольными полями, с помощью которых удобно вводить значения полей или выбирать их из уже установленных. Можно создавать столько блоков, сколько вам нужно, и каждый из них может иметь собственную структуру. Видимость этих блоков можно устанавливать стандартно в настройках экрана.

Как создать свой блок произвольных полей в редакторе

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

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

tiaurus

Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

3 комментария

  • А как можно вызвать стандартный блок произвольных полей для определенной страницы по её ID?

    • Произвольное поле — это дополнительные данные, которые вы можете ввести, создавая или редактируя пост. Потом эти данные вы можете использовать, например, выводить их на странице поста.

      Произвольное поле можно создать, и добавить в него данные, в редакторе постов в админке. Для этого в редакторе нужно открыть панель Настройки экрана, и отметить чекбокс Произвольные поля.

      Чтобы получить значение произвольного поля, зная ID поста, можно использовать функцию get_post_meta или get_post_custom_values.

      • Я имел ввиду можно ли как то вызвать стандартный блок редактирования произвольных полей для определенной страницы по её ID, см.скрыншот.

/* ]]> */