wordpress добавить произвольное поле
Добавляем произвольные поля в WordPress
Продолжаем наше знакомство с админкой WordPress, и ее модификацией под свои нужды. Бывают ситуации, когда готовый шаблон под wordpress не имеет нужных возможностей. К примеру, на игровом сайте нужно в отдельном окне вывести вес файла с игрой, или в онлайн-кинотеатре поставить дату создания фильма.В этом случае необходимо добавлять произвольные поля в админку, которые заполняются во время создания записи и последующей публикации статьи.
Конечно, существуют плагины для решения подобных задач, но они нагружают и без того громоздкий движок, поэтому лучше добавить дополнительные поля в WordPress без плагина.
WordPress добавление поля
Откроем файл functions.php и вставим строки:
Эта функция выводит Ваши произвольные поля в админ панель wordpress, вставляем и это
Ну и наконец вставляем функцию сохранения значений полей:
Значения между тегами Поле 1 будет отображаться в админке, поэтому их следует назвать по своему усмотрению, согласно его назначению.
Значения pole_1, pole_2, … и тд также можно поставить свои, только нужно незабыть их изменить и в других участках кода name=»extra[pole_1]», name=»extra[pole_2]», … и тд.
Получать и выводить сохраненне значения нужного поля, например в файле single.php, можно при помощи этой функции:
Ниже приведен скрин работающего примера, как располагаются произвольные поля в админке одного из моих сайтов.
Ну вот впринципе и все.
В заключение хочу добавить, поле «Имя поля» нужно заполнять латиницей без пробелов, и без использования специальных символов, только буквы, цифры и подчеркивание.
Автор статьи: Alec Morty
Смотрите также
Карта сайта на wordpress без плагина
Карта сайта один из главных элементов продвижения сайта, без нее поисковики будут в разы медленнее индексирова …
WordPress для развертывания игрового сайта
Одно время я искал в Рунете информацию о том, как сделать игровой сайт. Соответственно, нашел мало чего полезн …
5 Комментариев — Развернуть
Произвольные поля. Добавление счётчика просмотров
Содержание
Сейчас в WordPress вы можете спокойно задавать дополнительные параметры к различным сущностям сайта:
Эти дополнительные параметры и называются мета-поля, дополнительные поля, кастомные поля (custom fields), сейчас они чаще называются именно мета-поля.
«Произвольные поля» – это название метабокса для постов, где можно было как раз эти мета-поля устанавливать.
Что в видеоуроке?
В этом видеоуроке мы при помощи произвольных полей создадим счётчик просмотров для постов.
Мы рассмотрим такие моменты:
Чтобы скачать тему WordPress, которая получилась у нас в процессе этого урока, необходимо приобрести курс.
Как создать значения произвольных полей?
Итак, задавать значения произвольных полей в WordPress можно тремя способами:
Используя метабокс «Произвольные поля»
С приходом редактора Gutenberg этот метабокс с настройками полей считается устаревшим и мы обычно используем сайдбары Gutenberg для этих целей.
При помощи функций
Например мы хотим установить значение количества просмотров поста на 10000, тогда мы можем использовать этот код:
При помощи метабоксов
Метабоксы кстати могут быть сами разными, например на недавнем проекте у нас был такой метабокс:
Метабокс с повторяющимися полями (репитер).
Если вы хотите кодить эти метабоксы сами, то рекомендую это руководство, если при помощи плагина, то мне очень нравится Carbon Fields. В любом случае, в видеоуроке мы рассмотрели оба варианта.
Вывод произвольных полей на сайте
В основном вывод осуществляется при помощи одних и тех же функций, если только вы не используете для этого какой-то плагин для создания метабоксов, например Carbon Fields.
Принцип действия всех этих функций примерно одинаков, для того, чтобы его понять, вам нужно понять, что любое мета-поле состоит из трёх частей:
Скриншот из базы данных WordPress:
И тогда в коде это будет выглядеть примерно так:
Плагины произвольных полей — Custom Field Suite и Advanced Custom Fields
Произвольные поля в WordPress (Custom Fields) или как их еще называют пользовательские поля — очень полезная фишка. С их помощью вы сможете добавить на страницу/пост сайта любой контент, который будет выводится в определенном месте шаблона. По умолчанию в системе пользователю доступно задание лишь нескольких базовых форматов данных для записи: заголовок, текст, МЕТА (если установлены плагины) и т.п. Используя функцию произвольный полей, получится внедрить дополнительные нужные вам информационные блоки. Например, недавно на одном проекте я реализовал несколько объектов: иконку для страницы, оригинально оформленные контакты в одноименном разделе, блок категорий товаров, карту Google Maps + слайдер картинок. Сегодня рассмотрим два полезных плагина по теме — это Custom Field Suite и Advanced Custom Fields.
Можно, конечно, работать с произвольными WordPress полями вручную, о чем я когда-то рассказывал в другом блоге. Однако, во-первых, информация там слегка устарела, а во-вторых, модули значительно упрощают задачу и ускоряют процесс разработки. Грех ими не воспользоваться. Более детально познакомимся с Custom Field Suite, с которым работал уже несколько раз, а также обратим внимание на популярный и продвинутый плагин Advanced Custom Fields.
Custom Field Suite
Найдете модуль в официальном репозитории на этой странице. Текущая версия на момент написания статьи (2.5.6.1) требует вордпресс от 4.0, имеет более 30 тысяч установок и оценивается в 4.9 баллов из 5-ти возможных. Основная функция — внедрение удобного интерфейса для работы с произвольными полями WordPress, который бы позволял их легко создавать и управлять ими. Плагин Custom Field Suite (CFS) поддерживает 12 типов элементов:
Плюс модуля Custom Field Suite в том, что кроме ввода определенных данных (текстов, дат, цветов) здесь есть элементы организации полей: табы и контейнеры. Последний, например, позволяет реализовать галерею на слайдере Owl Carousel 2 за счет создания нескольких повторяющихся объектов «текст + картинка». Табы мне также пригодились в работе. Решение абсолютно бесплатное, функциональное и очень простое.
Вывод произвольных полей в WordPress с помощью CFS
Давайте разберем на реальном примере как вывести произвольные WordPress поля с помощью модуля Custom Field Suite. Алгоритм приблизительно следующий:
1. В самом начале, разумеется, устанавливаем и активируем Custom Field Suite.
Первым делом нужно добавить произвольные поля в WordPress с помощью соответствующей кнопки.
Для полей требуется определить некоторые настройки, например:
Большую часть этих характеристик вы встретите и в других типах произвольных полей, однако в каждом из них есть и свои особенности. На картинке выше можете видеть 6 элементов, 3 из которых являются табами (tabs), а 3 текстовой областью. В результате в админке пользователь увидит следующую картинку:
Вместо одиночной строки использовались текстовые области дабы пользовать мог вводить не один телефон или email, плюс для адреса нужно несколько строк.
3. Как я говорил выше, на этой же странице есть блоки настроек Placement Rules и Extras. Полезнее всего первый, т.к. там создаются условия для вывода произвольных полей в WordPress админке.
Ограничения показа могут касаться:
В примере выше я использовал последний вариант, поскольку нужно было добавить произвольные поля в WordPress только для страницы контактов (она имела специальный шаблон). Теоретически можно было бы воспользоваться опцией Posts.
4. Финальная и самая основная стадия интеграции Custom Fields — вывод значений произвольных полей в WordPress файле шаблона. Для этого используется специальная функция get. Например:
Отображение значения поля contacts_email
echo CFS()->get( ‘contacts_email’ );
Считывание всех значений для текущей записи
Вывод произвольного поля contacts_email для поста с >
echo CFS()->get( ‘first_name’, 71 );
Вариант с циклом для галереи:
Детальное ее рассмотрение и примеры найдете на странице описания API плагина Custom Field Suite. Кроме нее есть еще функции поиска полей, отображения их свойств, создание форм и т.п.
Кстати, в моем случае результирующий код вывода произвольных полей выглядел следующим образом:
5. После завершения манипуляций по добавлению и выводу произвольных полей в WordPress вам нужно лишь зайти в админку на нужную страницу и заполнить соответствующие тексты/данные. После этого перейдите на сам сайт и проверьте все ли корректно отображается. Если нет, весь алгоритм по работе с плагином Custom Field Suite нужно будет тщательно проверить и повторить.
Advanced Custom Fields
По WordPress плагину произвольных полей Advanced Custom Fields вообще создан отдельный сайт с описанием, документацией и подсказками. Сразу замечу, что в нем есть 2 версии — обычная бесплатная и PRO. Первую совершенно спокойно можно скачать отсюда с официального репозитория вордпресс. Оценка 4.9, минимальная версия WP — 3.5 и более миллиона загрузок!
Основная функция модуля, как и в предыдущем варианте — это упрощение работы с пользовательскими полями WordPress с помощью специальных интуитивно понятных инструментов интерфейса. Данное решение позволит легко создавать и редактировать поля, а также определять для них правила отображения. За счет использования базовых механизмов Custom Fields системы WordPress работа плагина достаточно быстрая. Для веб-разработчиков определены соответствующие хуки, фильтры и функции интеграции с шаблоном.
Advanced Custom Fields имеет чуть больше типов пользовательских полей, которые разделены на 6 групп:
Детальное описание полей и примеры найдете в документации данного WordPress плагина произвольных полей. Вообще очень нравится этот сайт, поскольку там можно найти все, что нужно — примеры кода, скриншоты, видео, настройки элемента и т.п.
Разобраться с интеграцией Advanced Custom Fields даже для начинающего разработчика не будет проблемой. Кроме того, в самой админке плагин имеет весьма приятный интерфейс. В разделе Add-ons на официальном сайте найдете несколько модулей для расширения функциональности — поддержка Font Awesome, дополнительные поля для таблиц и аккордеона, переводы через qTranslate.
В принципе, можно было сказать, что плагин является идеальным, если бы не одно «но». Дело в том, что добавить произвольные поля типа галереи, гибкого контента и повторяющегося элемента можно только в PRO версии. Поэтому мне пришлось создавать слайдер картинок через связку Custom Field Suite + Owl Carousel 2. С другой стороны, стоимость PRO для одного сайта ($25) может быть включена в общую смету сайта, а если вы часто разрабатываете проекты, то пожизненная лицензия ($100) окупится достаточно быстро. Там же есть Add-on для создания страницы настроек Options Page в WP через произвольные поля, что также может пригодиться (как альтернатива соответствуюших фреймворков).
Итого. Если вам нужно добавить произвольное поле в WordPress простого типа (текст, картинка, ссылка), то тут подойдет любой плагин — Custom Field Suite или Advanced Custom Fields. Выбирайте тот, что больше нравится. Если же требуются повторяющиеся поля (цикл), то бесплатно эта функция есть только в первом модуле.
Кстати, если знаете еще какие-то плагины произвольных полей для WordPress напишите о них в комментариях.
Произвольные поля в WordPress
Стандартного функционала WordPress не хватает для разработки сайтов уровнем выше блога, требуются дополнительные поля, галереи и другие возможности. Для их добавления прекрасно подходит плагин Advanced Custom Fields (ACF).
Он позволяет добавить и настроить дополнительные поля разных типов в админку записей, рубрик и меток. Есть поддержка вложенности групп полей что дает возможность добавлять редактируемые блоки таблиц, расписаний, списков – идеальное решение для лэндингов.
Установка
В разделе плагины – добавить новый, в поиске – «Advanced Custom Fields».
После установки и активации плагина появится новый пункт «Группы полей» в левом меню.
Настройка групп
Итак, сначала нужно создать группу и привязать её. Есть возможность задать любое условие привязки.
Поля для записей
Для категорий
Для страниц с определенными шаблонами
В каждую группу можно добавить неограниченное число полей разных типов, например для рубрик:
После сохранения, в форме рубрики добавляются заданные поля.
Блок произвольных полей в админке WordPress своими руками
Чтобы не создавать произвольные поля полностью в ручную, используйте мой PHP класс для удобно создания метаполей записи.
Чтобы вывести подобный блок для элементов таксономий, смотрите описание события: (taxonomy)_edit_form_fields. Также смотрите ответ на вопрос: Метаполя для рубрик (таксономий) в WordPress
В в одная часть
Прежде чем начать рассказывать о том как создать произвольный блок данных в админ-панели на странице редактирования постов, который будет управлять указанными произвольными полями, следует отметить, что WordPress — платформа которая, пожалуй, как никакая другая поддается расширению с наименьшими усилиями. В частности, именно поэтому под WordPress написано так много плагинов — все очень просто, нужно лишь знать азы PHP и понимать принцип работы системы.
Каждый, кто достаточно близко знаком с WordPress неоднократно встречался с понятием «произвольные поля» и с их помощью решал некоторые нетривиальные задачи.
Произвольные поля в WordPress — очень удобный инструмент, когда нужно «прикрепить» к конкретному посту какие-либо дополнительные данные. Такими данными может быть что угодно, начиная от логических true/false (1/0), заканчивая объемными текстами, массивами и прочим. К примеру, мы можем создать новое произвольное поле Title и в его значение написать текст (альтернативный заголовок поста), затем в коде шаблона использовать следующий код, чтобы вывести этот текст:
Следует отметить, что функцию get_post_meta() можно использовать за пределами Цикла WordPress, т.е. где угодно в шаблоне. В данном примере мы используем её в части документа, чтобы дать html странице заголовок отличный от заголовка самой статьи (иногда полезно для SEO).
Другой пример: используя произвольные поля мы можем выполнять или не выполнять действия, в зависимости от того, какие данные у нас находится в значении произвольного поля. Например, размещая в произвольное поле логические цифры 1 или 0 мы можем выводить или не выводить какую-либо информацию для текущего поста.
Произвольные поля используются в WordPress сплошь и рядом, различными плагинами оценки постов (WP-PostRatings), SEO плагинами (Platinum SEO Pack), позволяющими указать Title, Description, Keywords поста, моим плагином для создания миниатюр (Kama Thumbnail) и многими другими плагинами. Образно говоря, каждая четвертая нестандартная задача решается посредством произвольных полей, поэтому если вы еще не знаете как их использовать, то ознакомьтесь с этим мануалом. А ниже мы поговорим о том, как создать отдельный блок с нужными нам произвольными полями и как сделать это без плагинов.
Прежде чем начать создание
Забегая вперед, скажу что нижеследующие описание будет полезно, только тем кто хоть немного разбирается в HTML, т.е. если вы совсем не в зуб ногой в HTML и PHP, то читать все что ниже — пустая трата времени.
Предположим, что мы делаем сайт на заказ, и при этом на сайте используются произвольные поля. Объяснять заказчику, какое поле выбирать из списка, чтобы добавить ту или иную информацию к посту, проблематично, к тому же это быстро забывается. Именно поэтому уже давно написаны плагины, благодаря которым можно легко создать блок произвольных полей, где не нужно выбирать поле (ключ), и только потом вписывать значение. В таких блоках нужно сразу вписывать значение и есть возможность описать каждое поле, при одном взгляде на которые становится понятно его назначение. Блок, который мы сейчас создадим будет выглядеть так:
А данные такого блока в самих произвольных полях, после сохранения поста, будут записаны так:
Создаем мета блок произвольных полей
#1. Создадим новый мета блок для постов
Назовем его «Дополнительные поля»:
#2. Заполним этот блок полями html формы
#3. Сохраняем данные
На этом этапе, мы уже создали блок произвольных полей, теперь нужно обработать данные полей при сохранении поста. Обработать, значит записать их в в базу данных или удалить от туда. Для этого используем хук save_post, который срабатывает в момент сохранения поста. В этот момент мы получим данные из массива extra[] и обработаем них:
Вот и все, блок произвольных полей готов!
Блок произвольных полей для произвольного типа записей
Если нужно создать блок для другого типа записей, допустим page (для страниц), то регистрируем еще один мета блок и описываем его html код в новой функции, которую так же нужно указать при регистрации блока ( extra_fields_box_page_func ). Функцию обработки полей при сохранении поста создавать уже не надо, главное указать названия полей в виде массивов extra[] :
Сложности с типом checkbox
Чтобы обойти этот «недуг» я сделал так: перед полем чекбокса создаем hidden поле с name как у чекбокса и пустым значением. И получается, если галочка стоит, то значение hidden поля перебивается, если галки нет, то берется пустое значение hidden поля.
Т.е. checkbox нужно вызывать так:
Такой же трюк иногда может пригодится и для поля с типом radio.
Пример реального кода с типами checkbox:
Еще один пример создания метабокса (ООП)
Этот пример показывает как создать одно поле, в котором будет храниться массив данных. Массив можно расширять или уменьшать через нажатие на + или удалить (работает на скрипте).
Это пример создание поля «повторитель», как у плагина ACF (поле repeater в платной версии).
В результате получим такой метабокс:
Плагины для создания блоков произвольных полей
В статье я говорил о плагинах, которые создают мета блоки заменяющие произвольные поля, но ни разу не упомянул ни один. Исправляюсь:
Advanced Custom Fields (ACF) — пожалуй, самый популярный и гибкий плагин для создания произвольных полей. С хорошей документацией.
Custom Field Suite — похож на ACF, только менее навороченный.
Carbon Fields — похож на ACF только без визуальной настройки, все делается в коде. Хорошо подойдет для разработчиков. Бесплатный.
CMB2 — CMB2 инструмент для разработчиков для создания: метабоксов, метаполей. Позволяет легко управлять записями, элементами таксономий, пользователями, комментариями или создавать произвольные страницы настроек.
Custom Field Template — настоящий комбайн. С ним можно создать любую форму, для любых типов постов, указать формы для отдельных постов и рубрик. Думаю в большинстве случаев, можно обойтись без такого комбайна.
Заключение
Простота в настройке блока произвольных полей при создании его таким способом теряется! Я ни в коем случае не хочу сказать, что создавать блоки таким способом лучше чем использовать плагины. Однако, такой подход более гибок, потому что мы можем создать абсолютно любые поля и расположить/стилизовать их как нам вздумается.
К тому же, обычно нет нужды создавать по несколько таких блоков и часто их редактировать, как это можно делать используя плагины. К примеру, на этом блоге я использую такой подход и совсем небольшой код в functions.php избавляет меня от необходимости использовать очередной плагин.
Это скорее обучающая статья и для многих плагины реализующие эту задачу будут лучшим решением.