- Вывод произвольных полей ACF
- Типы полей — текст, число, область текста, файл, медиа
- Тип поля — «Изображение»
- Ссылка на изображение (URL)
- ID изображения
- Массив изображения
- Тип поля — «Галерея»
- Тип поля — «Повторитель»
- Тип поля — «Объект записи»
- Тип поля — «Группа»
- Вывод поля ACF только при условии, что оно заполнено
- Вывод полей ACF с другой страницы
- Вывод полей ACF из терминов таксономии
- Вывод полей ACF для профиля пользователя
- Страница опций ACF
- Вывод полей «Страницы опций»
- Вложенные страницы с опциями
- Дополнительные плюшки
- Дополнительные поля. Создание, редактирование и удаление.
- Работа с дополнительными полями через API.
- Создание нового дополнительного поля через JSON API
- Создание нового дополнительного поля типа Справочник через JSON API
- Массовое создание(обновление) дополнительных полей через АПИ
- Вывод дополнительных полей через АПИ
- Редактирование дополнительных полей через АПИ
- Удаление дополнительного поля через АПИ
- Массовое удаление дополнительных полей через АПИ
- MODX. Дополнительные поля (TV)
- Вкладка «Параметры ввода»
- Значения полей
- Варианты по умолчанию
- Варианты привязок для полей (@binding)
- Примеры вывода дополнительных полей
- Дополнительные поля в БД
- Работа с доп. полями при помощи xPDO
Вывод произвольных полей ACF
Рассмотрим вывод произвольных полей, созданных в Advanced Custom Fields для WordPress. А так же, как вывести произвольные поля для терминов таксономии, например, «Рубрики» в шаблоне category.php
Типы полей — текст, число, область текста, файл, медиа
Чтобы вывести текст , область текста , число , файл или медиа , воспользуйтесь кодом ниже.
Тип поля — «Изображение»
Ссылка на изображение (URL)
Данный способ вывода изображения не позволяет вывести дополнительные данные об изображении. Только URL. Используйте следующий код.
ID изображения
При выборе формата вывода — ID изображения , используется функция wp_get_attachment_image() .
Массив изображения
- — вывод URL изображения (полный размер);
- — вывод URL изображения (thumbnail, medium, large или кастомный);
- — вывод alt изображения;
- — вывод заголовка изображения;
- — вывод подписи изображения.
Тип поля — «Галерея»
Рассмотрим возвращаемый формат — массив изображения.
Использование очень похоже на вывод изображений, за исключением использования цикла foreach() .
Тип поля — «Повторитель»
Для вывода повторителя, используйте код ниже.
Тип поля — «Объект записи»
Для вывода нескольких значений «Объекта записи» используйте следующий код.
Тип поля — «Группа»
Пусть вложенное поле будет изображением. Чтобы вывести вложенные поля с типом «Группа», воспользуйтесь следующим кодом.
Вывод поля ACF только при условии, что оно заполнено
Для выполнения проверки заполнено ли поле, используйте get_field() .
Вывод полей ACF с другой страницы
Для вывода полей с другой страницы нужно просто добавить id необходимой страницы/записи.
Вывод поля для родительской страницы.
Вывод полей ACF из терминов таксономии
Если мы создадим произвольное поле для элемента таксономии рубрики.
Оно (поле) у нас благополучно появится в рубриках
Но когда мы захотим его вывести в шаблоне рубрики category.php , то у нас ничего не получится.
Необходимо использовать следующий код.
Вывод полей ACF для профиля пользователя
Выведем ACF поля, созданные для вкладки профиль пользователя страницы «Пользователи».
Получение поля для текущего пользователя.
Вывод поля для пользователя с id = 8 .
Страница опций ACF
Для создания страницы опций ACF добавьте следующий код в functions.php :
Теперь необходимо создать нужные поля. Переходим в «Группы полей». Выбираем «Отображать группу полей, если» — Формы — Страница с опциями равно Настройки темы . И добавляеете поля как обычно.
Вывод полей «Страницы опций»
Для вывода полей, заполненных на странице опций, используйте код:
Вложенные страницы с опциями
Более сложный пример с вложенными страницами:
Дополнительные плюшки
- Шпаргалка по работе с WordPress.
- Шпаргалка по работе с WooCommerce.
- Как скрыть пункты меню в админке WordPress, изменить их порядок — статья.
- Как установить свой логотип при входе в админку WordPress вместо стандартного.
- Подборка лучших плагинов для WordPress на 2021 год.
Надеюсь, вам понравилась данная информация. Если вам интересна тема web-разработки, то можете следить за выходом новых статей в Telegram.
Источник
Дополнительные поля. Создание, редактирование и удаление.
Работа с дополнительными полями через API.
Для задания дополнительных свойств объекта в сервисе МойСклад есть возможность работы с дополнительными полями (атрибутами). Они представляют собой свойства сущности (объекта или документа), которые формируются пользователем и могут быть использованы для более подробного описания объекта или фильтрации по значениям этих полей. Подробнее о типах и свойствах дополнительных полей можно прочитать в документации.
В данной статье рассмотрим на примере магазина ноутбуков просмотр, создание, редактирование и удаление дополнительных полей средствами JSON API.
Значения дополнительных полей можно менять, обращаясь к конкретному объекту (документу). Это подробно описано в статье Дополнительные поля.
Предположим, что нам необходимо выбирать и сортировать ноутбуки по некоторым характеристикам, которых нет в свойствах товара по умолчанию. Например, материал корпуса, наличие CD/DVD-Rom, наличие разъема Type-C и т.д. Нужна возможность создавать, редактировать и удалять свойства товаров. Присваивать конкретным товарам значения этих свойств, а также осуществлять фильтрацию по ним. Фильтрация по значениям дополнительных полей в JSON API описана в статье Дополнительные поля. Для создания указанных характеристик будем использовать дополнительные поля (атрибуты) товара.
В web-приложении атрибуты объектов назначаются на странице списка объектов при нажатии на кнопку с шестеренкой справа. Открывается окно редактирования свойств объектов, где последним пунктом идет “Дополнительные поля”. Здесь доступен просмотр, создание, редактирование и удаление атрибутов объекта. Весь этот функционал доступен и через JSON API.
Процесс создания атрибута товара через UI
Создание нового дополнительного поля через JSON API
Рассмотрим задачу добавления новых атрибутов к сущности (товару). Предположим, что хотим для имеющихся и закупаемых в будущем ноутбуков указывать материал корпуса. Для его указания будем пользоваться дополнительным полем типа строка. Этот пример рассмотрен в скриншотах web-приложения выше. Теперь попробуем сделать то же через JSON API.
Выполним POST-запрос, в теле которого укажем название и тип дополнительного поля (атрибута). Для этого достаточно в теле запроса указать обязательные поля “name” и “type”. В данном случае добавим строковое поле, описывающее материал корпуса ноутбука.
Кроме имени и типа у создаваемого атрибута есть следующие поля:
- meta — набор метаданных, заполняется автоматически при создании,
- id — id атрибута, заполняется автоматически при создании,
- required — флаг обязательности атрибута, если равен true — значение атрибута должно быть заполнено при создании или изменении сущности. (По умолчанию false. Для атрибутов типа Флажок не может быть изменен)
Создание двух дополнительных полей с одинаковыми именами запрещено.
Создано дополнительное поле (атрибут), ему автоматически присвоен id. Значение свойства required по умолчанию устанавливается в false, что делает созданный атрибут не обязательным для заполнения при создании товара.
Создание нового дополнительного поля типа Справочник через JSON API
Стоит обратить внимание на создание атрибута с типом Справочник. Этот тип позволяет атрибуту принимать в качестве значения другие объекты, в том числе и пользовательские.
Описание атрибутов типа Справочник в документации
Предположим, что в нашем магазине есть также чехлы для ноутбуков. Создадим атрибут Справочник типа Товар. Теперь Появилась возможность для каждого ноутбука указать подходящий ему чехол как одно из свойств ноутбука.
Для создания атрибута Справочник типа товар нужно указать в поле “type” значение “product”. В поле “name” укажем “Чехол”.
Создан атрибут, в значение которого для каждого товара можно записать другой товар. Теперь можно, например, предлагать сразу приобрести чехол для выбранного покупателем ноутбука.
Массовое создание(обновление) дополнительных полей через АПИ
С приходом в магазин новых моделей ноутбуков может появиться необходимость в создании новых атрибутов. Например, тип разъемов на ноутбуках некоторых производителей меняется с такой частотой, что предугадать зарание их тип и наличие невозможно. В таком случае может понадобиться добавление новых и редактирование существующих атрибутов.
В JSON API доступно массовое создание дополнительных полей. Для этого надо передать в теле POST-запроса массив со свойствами каждого из создаваемых атрибутов. Массив должен содержать данные по каждому создаваемому полю, перечисленные через запятую и заключенные в фигурные скобки. Обязательные к передаче свойтва — это имя и тип поля. Если добавить к ним id существующего дополнительного поля, то оно будет изменено. Сформируем тело запроса из 3 элементов. Для поля “Материал корпуса” укажем его id, свойство “name” изменим на “Материал корпуса (дополнение)”. Новое значение свойства name не должно совпадать с существующими. Свойство “type” не может быть изменено. Два других элемента массива будут созданы, им автоматически присвоятся id.
После выполнения данного запроса поле “Материал корпуса” обновится на “Материал корпуса (дополнение)”. Добавятся новые поля “Наличие CD-Rom” и “Наличие type-C разъема” с типом флажок.
Вывод дополнительных полей через АПИ
Для отображения списка атрибутов сущности (в данном случае товара) нужно выполнить GET-запрос
В ответ получим список созданных атрибутов
Если указать в запросе id конкретного атрибута, то получим только его.
Редактирование дополнительных полей через АПИ
Если нужно изменить одно дополнительное поле без затрагивания существующих, удобно пользоваться следующим запросом. Например, нужно изменить название атрибута, чтоб сделать его блоее полным. Изменим название атрибута “Наличие CD-Rom” на “Наличие CD/DVD-Rom”.
Для изменения свойств существующего дополнительного поля необходимо выполнить PUT-запрос, содержащий его id, а в теле запроса передать изменяемые свойства. Следует учесть, что свойство “type” не может быть изменено. Изменим название атрибута “Наличие CD-Rom”:
Поле “Наличие CD-Rom” изменено на “Наличие CD/DVD-Rom”. Неуказанные свойства останутся без изменений.
Удаление дополнительного поля через АПИ
Некоторые атрибуты могут стать неактуальными. Например такую полезную вещь как DVD-привод найти становится всё труднее. Такие дополнительные поля можно удалить, даже если они были назначены обязательными и были заполнены. Для удаления дополнительного поля через АПИ необходимо выполнить DELETE-запрос, содержащий id поля.
Получим пустой ответ со статусом 200. Атрибут с указанным id будет удален.
Массовое удаление дополнительных полей через АПИ
Для удаления сразу нескольких атрибутов нужно выполнить следующий POST-запрос, указав в теле meta-данные удаляемых полей:
Также получим пустой ответ со статусом 200. В результате удалены указанные атрибуты. Если в теле такого запроса указать meta несуществующего атрибута, то весь запрос не выполнится, даже если в нем присутствуют существующие meta.
Источник
MODX. Дополнительные поля (TV)
Отредактировано: 15 Ноября 2019
Дополнительные поля (Template Variables) — элементы для расширения стандартных полей ресурса.
Вкладка «Параметры ввода»
Параметры ввода — тот вид поля, который будет отображаться в админ панели, при редактировании ресурса. Есть несколько заранее предустановленных параметров, но если их не хватает, можно добавить разнообразия с помощью дополнительных компонентов, вроде MIGX.
Стандартные варианты параметров ввода:
- Авто-метка (auto-tag)(список элементов подобных тегам)
- Дата (date)
- Изображение (image)
- Переключатели (radio)
- Скрытый(hidden)(не отображается в админ. панели и на сайте)
- Список (одиночный выбор) / listbox (single-select)
- Список (множественный выбор) / listbox (multi-select)
- Список ресурсов (resource list)(из структуры сайта)
- Тег (tag)
- Текст(text)(обычная текстовая строка)
- Текстовая область (textares)(обычная текстовая область)
- Текстовый редактор (richtext)(текстовая область с визуальным редактором)
- Устаревший список множественного выбора (legasy multiple list)
- Файл(область для вставки файла)
- Флажки (checkbox) — если флаг не отмечен, не отправляется никакого значения. Стоит учитывать это при продумывании архитектуры, иногда, это становится проблемой.
- Число (number)
- Электронная почта (email)
Значения полей
Чтобы добавить в дополнительное поле значение, надо указать его в поле “Input Option Values”.
Если значений несколько, варианты записываются с разделителем: Значение1||Значение2||Значение3
Возможна запись формата ключ => значение: Значение1==cod1||Значение2==cod2||Значение3==cod3
Проще говоря, формат записи таков DISPLAY VALUE==VALUE
- DISPLAY VALUE — значение отображаемое на странице ресурса в админке;
- VALUE — значение которое будет записано в базе.
Варианты по умолчанию
Запись параметров по умолчанию делается с помощью поля “Default Value”, а формат записи зависит от типа поля.
- checkbox: наличие галки — cod1(символьный код поля), отсутствие галки — ничего. Если значений несколько, варианты записываются через запятую — cod1, cod3;
- date: можно использовать текстовое обозначение, или привязку для полей, а можно указать слово:
- today — тогда будет отображаться сегодняшняя дата.
- now — текущая дата и время.
- yesterday — вчера.
- tomorrow — завтра.
- + / — (любое число)h — почему-то в перепутанном порядке, + 24h высчитывается как (сегодня — 24 часа), и наоборот со знаком минус.
Варианты привязок для полей (@binding)
При использовании дополнительных полей можно использовать привязки, т.е. если перевести на человеческий — можно указывать значения не только руками, но и брать их из базы, из файлов, чанков и т.п. Для этого в поле «варианты значений», или «значение по умолчанию» надо вставить конструкции следующего типа:
@CHUNK chunkName | список из чанка с указанным именем |
@RESOURCE id | список из ресурса с указанным id |
@DIRECTORY ./ | список файлов из указанной директории |
@FILE ../assets/test.txt | список из файла |
@SELECT pagetitle, id FROM [[+PREFIX]]site_content WHERE isfolder==0 | получение значений из базы данных |
@EVAL return $modx->runSnippet(‘snippetName’) | получение списка посредством выполнения PHP кода (ходит слух что этой привязки в MODX 3 не будет). |
Примеры вывода дополнительных полей
С помощью тегов MODX и phx
Если у поля одно значение:
Если у поля множество значений:
Или напимер так:
Дополнительные поля в БД
- _site_tmplvars — параметры того или иного поля.
- _site_tmplvar_access — политика доступа того или иного поля.
- _site_tmplvar_contentvalues — контентное содержание доп полей.
- _site_tmplvar_templates — шаблоны для которых доступно то или иное доп поле.
Работа с доп. полями при помощи xPDO
Создание текстового доп. поля:
У каждого типа поля свой набор настроек, соответственно, код местами будет отличаться:
TV с изображением
TV списка одиночного выбора
TV чекбокса множественного выбора
TV для компонента FastUploadTV
TV для компонента MIGX
TV для компонента YandexMaps
Назначение шаблонов доп полям (если создается несколько доп полей, данный блок кода должен идти последним):
Заполнение дополнительного поля через xPDO:
Получение значения дополнительного поля через xPDO:
Источник