Примеры кода
Ниже представлены примеры реализации кода с использованием плагине Advanced Custom Fields: Вывести поле, Вернуть поле в переменную, Использование условных выражений, Работа с Массивами, Работа с Изображениями, Работа с Повторителем и т.д.
Вывести поле
Вернуть поле в переменную
Использование условных выражений
get_field вернет false, если (value == “” || value == null || value == false)
Работа с Массивами
для типов полей: чекбокс, выбор, взаимоотношение, повторитель
Работа с Изображениями – Ссылка
Работа с Изображениями – ID
При помощи ID вы можете получить нужный размер изображения и даже имя файла!
Работа с Повторителем
Повторитель может получить get_field или the_repeater_field / the_sub_field
Выбор случайных значений из Повторителя
Получение значения с другой страницы
Query posts со значениями ACF
Интернет-магазин «acfwp.ru», расположенный на доменном имени acfwp.ru, именуемое в дальнейшем «Продавец», публикует Публичную оферту о продаже Товара дистанционным способом.
1.1. Публичная оферта (далее – «Оферта») — публичное предложение Продавца, адресованное неопределенному кругу лиц, заключить с Продавцом договор купли-продажи товара дистанционным способом (далее — «Договор») на условиях, содержащихся в настоящей Оферте, включая все Приложения.
1.2. Заказ Товара на сайте Интернет-магазина – позиции, указанные Покупателем из ассортимента Товара, предложенного к продаже, при оформлении заявки на приобретение Товара на сайте Интернет-магазина или через Оператора.
2.1. Заказ Покупателем Товара, размещенного на сайте Интернет-магазина означает, что Покупатель согласен со всеми условиями настоящей Оферты.
2.2. Администрация сайта Интернет-магазина имеет право вносить изменения в Оферту без уведомления Покупателя.
2.3. Срок действия Оферты не ограничен, если иное не указано на сайте Интернет-магазина.
2.4. Продавец предоставляет Покупателю полную и достоверную информацию о Товаре, включая информацию об основных потребительских свойствах Товара, месте изготовления, а также информацию о гарантийном сроке и сроке годности Товара на сайте Интернет магазина, в разделе Контакты.
3.1. Цена на каждую позицию Товара указана на сайте Интернет-магазина.
3.2. Продавец имеет право в одностороннем порядке изменить цену на любую позицию Товара.
3.3. В случае изменения цены на заказанный Товар Продавец обязуется в течение 10 дней проинформировать Покупателя об изменении цены Товара.
3.4. Покупатель вправе подтвердить либо аннулировать Заказ на приобретение Товара, если цена изменена Продавцом после оформления Заказа.
3.5. Изменение Продавцом цены на оплаченный Покупателем Товар не допускается.
3.6. Продавец указывает стоимость доставки Товара на сайте Интернет-магазина либо сообщает Покупателю при оформлении заказа Оператором.
3.7. Обязательства Покупателя по оплате Товара считаются исполненными с момента поступления Продавцом денежных средств.
3.8. Расчеты между Продавцом и Покупателем за Товар производятся способами, указанными на сайте Интернет-магазина в разделе Контакты
4.1. Заказ Товара осуществляется Покупателем сервис сайта Интернет-магазина acf.acfwp.ru.
4.2. При регистрации на сайте Интернет-магазина Покупатель обязуется предоставить следующую регистрационную информацию:
4.2.1. фамилия, имя, отчество Покупателя или указанного им лица (получателя);
4.2.2. адрес, по которому следует доставить Товар (если доставка до адреса Покупателя);
4.2.3. адрес электронной почты;
4.2.4. контактный телефон.
4.3. Наименование, количество, ассортимент, артикул, цена выбранного Покупателем Товара указываются в корзине Покупателя на сайте Интернет-магазина.
4.4. Если Продавцу необходима дополнительная информация, он вправе запросить ее у Покупателя. В случае не предоставления необходимой информации Покупателем, Продавец не несет ответственности за выбранный Покупателем Товар.
4.6. Принятие Покупателем условий настоящей Оферты осуществляется посредством внесения Покупателем соответствующих данных в регистрационную форму на сайте Интернет-магазина или при оформлении Заказа через Оператора. После оформления Заказа через Оператора данные о Покупателе регистрируются в базе данных Продавца. Утвердив Заказ выбранного Товара, Покупатель предоставляет Оператору необходимую информацию в соответствии с порядком, указанном в п. 4.2. настоящей Оферты.
4.7. Продавец не несет ответственности за содержание и достоверность информации, предоставленной Покупателем при оформлении Заказа.
4.8. Покупатель несет ответственность за достоверность предоставленной информации при оформлении Заказа.
4.9. Договор купли-продажи дистанционным способом между Продавцом и Покупателем считается заключенным с момента получения Продавцом сообщения о намерении Покупателя приобрести Товар.
5.1. Продавец оказывает Покупателю услуги по доставке Товара одним из способов указанных на сайте Интернет-магазина.
5.2. Если Договор купли-продажи товара дистанционным способом (далее – Договор) заключен с условием о доставке Товара Покупателю, Продавец обязан в установленный Договором срок доставить Товар в место, указанное Покупателем, а если место доставки Товара Покупателем не указано, то по месту его жительства или регистрации.
5.3. Место доставки Товара Покупатель указывает при оформлении Заказа на приобретение Товара.
5.4. Срок доставки Товара Покупателю состоит из срока обработки заказа и срока доставки.
5.5. Доставленный Товар передается Покупателю, а при отсутствии Покупателя — любому лицу, предъявившему квитанцию или иной документ, подтверждающий заключение Договора или оформление доставки Товара.
5.7. Информация о Товаре доводится до сведения Покупателя в технической документации, прилагаемой к Товару, на этикетках, путем нанесения маркировки или иным способом, принятым для отдельных видов товаров.
5.8. Сведения об обязательном подтверждении соответствия Товара представляются в порядке и способами, которые установлены законодательством Российской Федерации о техническом регулировании, и включают в себя сведения о номере документа, подтверждающего такое соответствие, о сроке его действия и об организации, его выдавшей.
Внимательно ознакомьтесь с текстом публичной оферты, и если Вы не согласны с каким-либо пунктом оферты, Вы вправе отказаться от покупки Товаров, предоставляемых Продавцом, и не совершать действий, указанный в п. 2.1. настоящей Оферты.
Вывод значений на сайте
Обзор
API Advanced Custom Field позволяет легко вывести значения полей на в вашей теме. Есть множество функций для работы со значениями. Они описаны в документации.
Основы
После создания группы полей их можно вывести на сайте.
Все значения хранятся через встроенные post_meta (когда сохраняется пост) и конечно можно использовать встроенную WP функцию get_post_meta() для вывода данных, но будет лучше использовать ACF функцию get_field() для вывода. Почему? Потому, что ACF формирует значения в зависимости от типов полей и делает разработку проще!
Для присвоения значения поля переменной используйте функцию get_field(). Это очень гибкая функция, которая позволяет вернуть значение любого типа.
Если нужно сразу вывести значение, то используйте функцию the_field().
Это базовый пример использования. Больше информации можно найти в примерах кода.
Есть ли у ACF шорткоды?
Да, Вы, можете использовать шорткоды. Например, выведем the_field() с помощью шорткода:
Вы можете также передать $post_id для получения значения из определенной записи.
Интернет-магазин «acfwp.ru», расположенный на доменном имени acfwp.ru, именуемое в дальнейшем «Продавец», публикует Публичную оферту о продаже Товара дистанционным способом.
1.1. Публичная оферта (далее – «Оферта») — публичное предложение Продавца, адресованное неопределенному кругу лиц, заключить с Продавцом договор купли-продажи товара дистанционным способом (далее — «Договор») на условиях, содержащихся в настоящей Оферте, включая все Приложения.
1.2. Заказ Товара на сайте Интернет-магазина – позиции, указанные Покупателем из ассортимента Товара, предложенного к продаже, при оформлении заявки на приобретение Товара на сайте Интернет-магазина или через Оператора.
2.1. Заказ Покупателем Товара, размещенного на сайте Интернет-магазина означает, что Покупатель согласен со всеми условиями настоящей Оферты.
2.2. Администрация сайта Интернет-магазина имеет право вносить изменения в Оферту без уведомления Покупателя.
2.3. Срок действия Оферты не ограничен, если иное не указано на сайте Интернет-магазина.
2.4. Продавец предоставляет Покупателю полную и достоверную информацию о Товаре, включая информацию об основных потребительских свойствах Товара, месте изготовления, а также информацию о гарантийном сроке и сроке годности Товара на сайте Интернет магазина, в разделе Контакты.
3.1. Цена на каждую позицию Товара указана на сайте Интернет-магазина.
3.2. Продавец имеет право в одностороннем порядке изменить цену на любую позицию Товара.
3.3. В случае изменения цены на заказанный Товар Продавец обязуется в течение 10 дней проинформировать Покупателя об изменении цены Товара.
3.4. Покупатель вправе подтвердить либо аннулировать Заказ на приобретение Товара, если цена изменена Продавцом после оформления Заказа.
3.5. Изменение Продавцом цены на оплаченный Покупателем Товар не допускается.
3.6. Продавец указывает стоимость доставки Товара на сайте Интернет-магазина либо сообщает Покупателю при оформлении заказа Оператором.
3.7. Обязательства Покупателя по оплате Товара считаются исполненными с момента поступления Продавцом денежных средств.
3.8. Расчеты между Продавцом и Покупателем за Товар производятся способами, указанными на сайте Интернет-магазина в разделе Контакты
4.1. Заказ Товара осуществляется Покупателем сервис сайта Интернет-магазина acf.acfwp.ru.
4.2. При регистрации на сайте Интернет-магазина Покупатель обязуется предоставить следующую регистрационную информацию:
4.2.1. фамилия, имя, отчество Покупателя или указанного им лица (получателя);
4.2.2. адрес, по которому следует доставить Товар (если доставка до адреса Покупателя);
4.2.3. адрес электронной почты;
4.2.4. контактный телефон.
4.3. Наименование, количество, ассортимент, артикул, цена выбранного Покупателем Товара указываются в корзине Покупателя на сайте Интернет-магазина.
4.4. Если Продавцу необходима дополнительная информация, он вправе запросить ее у Покупателя. В случае не предоставления необходимой информации Покупателем, Продавец не несет ответственности за выбранный Покупателем Товар.
4.6. Принятие Покупателем условий настоящей Оферты осуществляется посредством внесения Покупателем соответствующих данных в регистрационную форму на сайте Интернет-магазина или при оформлении Заказа через Оператора. После оформления Заказа через Оператора данные о Покупателе регистрируются в базе данных Продавца. Утвердив Заказ выбранного Товара, Покупатель предоставляет Оператору необходимую информацию в соответствии с порядком, указанном в п. 4.2. настоящей Оферты.
4.7. Продавец не несет ответственности за содержание и достоверность информации, предоставленной Покупателем при оформлении Заказа.
4.8. Покупатель несет ответственность за достоверность предоставленной информации при оформлении Заказа.
4.9. Договор купли-продажи дистанционным способом между Продавцом и Покупателем считается заключенным с момента получения Продавцом сообщения о намерении Покупателя приобрести Товар.
5.1. Продавец оказывает Покупателю услуги по доставке Товара одним из способов указанных на сайте Интернет-магазина.
5.2. Если Договор купли-продажи товара дистанционным способом (далее – Договор) заключен с условием о доставке Товара Покупателю, Продавец обязан в установленный Договором срок доставить Товар в место, указанное Покупателем, а если место доставки Товара Покупателем не указано, то по месту его жительства или регистрации.
5.3. Место доставки Товара Покупатель указывает при оформлении Заказа на приобретение Товара.
5.4. Срок доставки Товара Покупателю состоит из срока обработки заказа и срока доставки.
5.5. Доставленный Товар передается Покупателю, а при отсутствии Покупателя — любому лицу, предъявившему квитанцию или иной документ, подтверждающий заключение Договора или оформление доставки Товара.
5.7. Информация о Товаре доводится до сведения Покупателя в технической документации, прилагаемой к Товару, на этикетках, путем нанесения маркировки или иным способом, принятым для отдельных видов товаров.
5.8. Сведения об обязательном подтверждении соответствия Товара представляются в порядке и способами, которые установлены законодательством Российской Федерации о техническом регулировании, и включают в себя сведения о номере документа, подтверждающего такое соответствие, о сроке его действия и об организации, его выдавшей.
Внимательно ознакомьтесь с текстом публичной оферты, и если Вы не согласны с каким-либо пунктом оферты, Вы вправе отказаться от покупки Товаров, предоставляемых Продавцом, и не совершать действий, указанный в п. 2.1. настоящей Оферты.
Вывод произвольных полей ACF
Рассмотрим вывод произвольных полей, созданных в Advanced Custom Fields для WordPress. А так же, как вывести произвольные поля для терминов таксономии, например, «Рубрики» в шаблоне category.php
Ссылка на изображение (URL)
Данный способ вывода изображения не позволяет вывести дополнительные данные об изображении. Только URL. Используйте следующий код.
ID изображения
Массив изображения
Для вывода повторителя, используйте код ниже.
Для вывода нескольких значений «Объекта записи» используйте следующий код.
Пусть вложенное поле будет изображением. Чтобы вывести вложенные поля с типом «Группа», воспользуйтесь следующим кодом.
Вывод поля ACF только при условии, что оно заполнено
Вывод полей ACF с другой страницы
Для вывода полей с другой страницы нужно просто добавить id необходимой страницы/записи.
Вывод поля для родительской страницы.
Вывод полей ACF из терминов таксономии
Если мы создадим произвольное поле для элемента таксономии рубрики.
Оно (поле) у нас благополучно появится в рубриках
Необходимо использовать следующий код.
Вывод полей ACF для профиля пользователя
Выведем ACF поля, созданные для вкладки профиль пользователя страницы «Пользователи».
Получение поля для текущего пользователя.
Страница опций ACF
Для создания страницы опций ACF добавьте следующий код в functions.php :
Вывод полей «Страницы опций»
Для вывода полей, заполненных на странице опций, используйте код:
Вложенные страницы с опциями
Более сложный пример с вложенными страницами:
Дополнительные плюшки
Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.
Как устроены Advanced Custom Fields в WordPress
Часть 1. Немного лирики
Чаще всего в сети публикуются материалы по начальному уровню работы с WordPress. В лучшем случае обсуждаются документированные возможности самого WordPress и его различных плагинов. Я стою на позиции, что работа с документацией и использованием документированных возможностей — инструментами, которые вам предоставил разработчик — является приоритетной в разработке. Однако иногда документированных возможностей не хватает и как ответ на этот случай появилась эта статья.
Advanced Custom Fields (ACF) – один из популярных плагинов WordPress. Основная задача — создание блоков дополнительной информации к Постам, Страницам и Товарам. Плагин настолько популярен, что вопросы по нему входят в список MustKnow на различных собеседованиях.
Ничего не имею против самого плагина — это очень удобный инструмент, с широкими возможностями. Имеет встроенную возможность выводить редактирование статей во фронтенд. Позволяет создавать поля по условию и связывает поля с нужными постами. Например, для новостного сайта вы решили в блоке спортивных новостей создать дополнительный тег с указанием вида спорта, чтобы не забывать это делать, вы создаете поле типа select, которое будет появляться при выборе категории «Спорт» и требуете его обязательного заполнения.
Конечно, чтобы описать стандартные возможности ACF мало приведенного примера. Используют ACF в самых различных случаях, документацию плагина вы сможете найти на официальном сайте. Для тех, кто ещё не освоил иностранные языки есть неплохой сайт с документацией на русском языке.
В моем случае не нашлось достаточных документированных инструментов и пришлось разбираться с устройством ACF.
Часть 2. Получаем ACF поля
Стандартный функционал ACF не предлагает возможности запроса по условиям. Вывод полей происходит в связке с ID поста. Это связано с особенностями сохранения в базе данных. Условие «Категория товара» не привязывается к сохраняемой информации. Поэтому начинаем искать поля и условия.
Самая востребованная таблица базы данных posts, что связано с широким набором инструментов разработанных для данной таблицы. Именно в ней и хранятся наши поля. Для полей ACF зарезервированы два типа записей — в колонке ’post_type’ мы находим поля типов ’acf-field-group’ и ’acf-field’. Первый тип записей, как следует из его названия, отвечает за группу полей, второй тип записей отвечает непосредственно за поле. Связка между ними происходит по полю ’post_parent’.
Теперь, когда мы знаем где находятся наши поля, необходимо разобраться с условиями. Мы же не планировали выдавать поля списком, тем более, что это и есть наша основная задача — выдавать поля по условию. Всю необходимую нам информацию содержит колонка ’post_content’.
В ней в формате сериализованного массива сохранены условия и значения. Причем условия выдачи привязаны к группе полей, поэтому для разбора условий вам необходимо получить данные по группе, которые выглядят примерно так:
Вы будете проверять по своим условиям, для понимания всей этой белиберды выделю пункты, которые важны по данному полю:
Здесь содержится вся нужная нам информация:
параметр условия «post_taxonomy»;
значение по условию должно быть «==»;
ну и само значение «product_cat:fruit»;
Теперь мы знаем какую группу полей нам необходимо использовать, можно переходить к самим полям. Выборку полей производим по колонке ’post_parent’. У нас есть названия и ID полей, но пока мы не знаем типы полей и связанные с ними условия. Вновь переходим к данным поля ’post_content’, теперь наши данные выглядят немного иначе:
Здесь для нас упакованы сведения связанные с выводимым полем:
обязательное для заполнения — «required»;
класс, длина, значение по-умолчанию, плейсхолдер и т. д.
Теперь получив эту информацию мы можем приступить к созданию своего запроса и передаче полей во фронтенд. То есть при выборе категории отправляем запрос в базу данных, находим группу полей по условиям, выбираем поля и подготавливаем форму.
Часть 3. Сохраняем информацию
Но остался ещё один вопрос — что делать с полученной информацией? Поэтому нам необходимо разобраться как сохраняется информация ACF.
Для дополнительной информации, возможных настроек постов в WordPress предусмотрена специальная таблица postmeta. В ней хранится самая различная информация и, конечно, разработчики ACF использовали эту возможность. Но следует учесть, что использовали они не прямой подход.
Обычная запись в таблице postmeta состоит из 4 полей — уникальный ключ в БД (порядковый номер записи), ID поста с которым связано поле, идентификатор (по которому разработчик получает поле функцией get_post_meta () ) и значение.
В основном этого достаточно, чтобы иметь связанную информацию. Но ACF разработчики разбили задачу на две составляющие:
при сохранении данных ACF вносятся запись с именем поля и со значением.
ключ _sort содержит ссылку на post_name поля ACF из таблицы posts, а запись с ключом sort (без подчеркивания) сохраняется значение поля.
Вот и всё. Надеюсь, что полученные знания помогут вам в разработке. Всем удачи!
the_field() ACF 1.0.3
Выводит на экран значение указанного поля (метаполя).
Эта мощная функция может использоваться для вывода значения любого поля в любом месте.
Это обёртка для функции get_field().
Возвращает
Использование
Примеры
#1 Вывод значения из текущего поста
Пример показывает как выести значение поля “text_field” из текущего поста.
#2 Вывод значения из определенного поста
Пример показывает как выести значение поля “text_field” из поста >
#3 Проверка значения на существование
Пример показывает предварительную проверку значения на существование (установку) до выведения значения.
#4 Получение значений из различных объектов
Список изменений
Код the_field() the field ACF 5.9.1
Cвязанные функции
Вопрос,как можно добавить функцию в html чтобы можно было потом в шаблоне изменить цвет блока или фона? Я ввожу в
, но ничего не происходи только сверху появляется формат цвета ##dd4f4f


