Advanced custom fields


Advanced custom fieldsПроизвольные поля в WordPress (Custom Fields) или как их еще называют пользовательские поля — очень полезная фишка. С их помощью вы сможете добавить на страницу/пост сайта любой контент, который будет выводится в определенном месте шаблона.

Advanced custom fieldsПо умолчанию в системе пользователю доступно задание лишь нескольких базовых форматов данных для записи: заголовок, текст, МЕТА (если установлены плагины) и т.п. Используя функцию произвольный полей, получится внедрить дополнительные нужные вам информационные блоки.

Например: иконку для страницы, оригинально оформленные контакты в одноименном разделе, блок категорий товаров, карту Google Maps + слайдер картинок.

Сегодня рассмотрим два полезных плагина по теме — это Custom Field Suite и Advanced Custom Fields.

Можно, конечно, работать с произвольными WordPress полями вручную, о чем я когда-то рассказывал в другом блоге. Однако, во-первых, информация там слегка устарела, а во-вторых, модули значительно упрощают задачу и ускоряют процесс разработки. Грех ими не воспользоваться. Более детально познакомимся с Custom Field Suite, с которым работал уже несколько раз, а также обратим внимание на популярный и продвинутый плагин Advanced Custom Fields.


Custom Field Suite

Advanced custom fieldsCustom Field Suite

Найдете модуль в официальном репозитории на этой странице. Текущая версия на момент написания статьи (2.5.6.1) требует вордпресс от 4.0, имеет более 30 тысяч установок и оценивается в 4.9 баллов из 5-ти возможных. Основная функция — внедрение удобного интерфейса для работы с произвольными полями WordPress, который бы позволял их легко создавать и управлять ими. Плагин Custom Field Suite (CFS) поддерживает 12 типов элементов:

  • Text — текстовая строка;
  • Textarea — поле для текста из нескольких строк;
  • WYSIWYG — графический редактор;
  • True / False — чекбокс (блок с галочкой);
  • Color — выбор цвета;
  • Date — выбор даты;
  • Select — несколько чекбоксов или выпадающий список;
  • File Upload — загрузка файла;
  • User — выбор пользователя;
  • Relationship — виджет для похожих постов;
  • Loop — контейнер повторяющихся полей;
  • Hyperlink — URL ссылки;
  • Tab — объединение группы полей в табы.

Плюс модуля Custom Field Suite в том, что кроме ввода определенных данных (текстов, дат, цветов) здесь есть элементы организации полей: табы и контейнеры. Последний, например, позволяет реализовать галерею на слайдере Owl Carousel 2 за счет создания нескольких повторяющихся объектов «текст + картинка». Табы мне также пригодились в работе. Решение абсолютно бесплатное, функциональное и очень простое.

Вывод произвольных полей в WordPress с помощью CFS

Давайте разберем на реальном примере как вывести произвольные WordPress поля с помощью модуля Custom Field Suite. Алгоритм приблизительно следующий:

1. В самом начале, разумеется, устанавливаем и активируем Custom Field Suite.

2. Далее заходим в админку вордпресс в раздел «Field Groups» (Группа полей). Там содержится список всех созданных вами элементов и кнопка «Add New» (Добавить новую) . С ее помощью можно создать новый набор нужных элементов. Кликаем и видим на открывшейся странице 3 блока для ввода информации:

  • Fields — список всех элементов/полей;
  • Placement Rules — правила размещения;
  • Extras — дополнительные настройки.

Первым делом нужно добавить произвольные поля в WordPress с помощью соответствующей кнопки.

Advanced custom fieldsВывод произвольных полей в WordPress с помощью CFS

Для полей требуется определить некоторые настройки, например:

  • тип;
  • название (отображается в админке);
  • имя (используется в коде шаблона, поэтому должно быть на английском);
  • значение по умолчанию;
  • обязательное поле или нет;
  • примечание для редактора.

Большую часть этих характеристик вы встретите и в других типах произвольных полей, однако в каждом из них есть и свои особенности. На картинке выше можете видеть 6 элементов, 3 из которых являются табами (tabs), а 3 текстовой областью. В результате в админке пользователь увидит следующую картинку:

Advanced custom fieldsВывод произвольных полей

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

3. Как я говорил выше, на этой же странице есть блоки настроек Placement Rules и Extras. Полезнее всего первый, т.к. там создаются условия для вывода произвольных полей в WordPress админке.


Advanced custom fieldsпроизвольные поля в WordPress с помощью CFS

Ограничения показа могут касаться:

  • Post Types — типов записей (посты, страницы, товары);
  • Post Formats — форматов постов (обычный, видео, цитата, ссылка);
  • User Roles — пользовательских ролей (админ, автор, редактор);
  • Posts — конкретных записей;
  • Taxonomy Terms — терминов таксономии;
  • Page Templates — шаблонов страниц.

В примере выше я использовал последний вариант, поскольку нужно было добавить произвольные поля в WordPress только для страницы контактов (она имела специальный шаблон). Теоретически можно было бы воспользоваться опцией Posts.

4. Финальная и самая основная стадия интеграции Custom Fields — вывод значений произвольных полей в WordPress файле шаблона. Для этого используется специальная функция get. Например:

Отображение значения поля contacts_email

echo CFS()->get( 'contacts_email' );  

Считывание всех значений для текущей записи

$fields = CFS()->get();

Вывод произвольного поля contacts_email для поста с ID=71

echo CFS()->get( 'first_name', 71 );

Вариант с циклом для галереи:

$loop = CFS()->get( 'gallery' ); foreach ( $loop as $row ) { echo $row['gallery_title']; echo $row['gallery_image']; }

Детальное ее рассмотрение и примеры найдете на странице описания API плагина Custom Field Suite. Кроме нее есть еще функции поиска полей, отображения их свойств, создание форм и т.п.

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

<div class="contacts"> <?php $contacts_item1 = CFS()->get( 'contacts_email' ); if( ! empty($contacts_item1) ): ?> <div class="contacts-item contacts__email"> <?php echo __( $contacts_item1 ,'newsite'); ?> </div><!-- .contacts-item --> <?php endif; ?>  <?php $contacts_item3 = CFS()->get( 'contacts_phone' ); if( ! empty($contacts_item3) ): ?> <div class="contacts-item contacts__phone"> <?php echo __( $contacts_item3 , 'newsite'); ?> </div><!-- .contacts-item --> <?php endif; ?> </div>  

Здесь, во-первых, используется условный оператор «IF !empty» для проверки не пустое ли у нас поле, во-вторых,  с помощью __() я вывожу значение произвольного поля с учетом выбранного языка сайта.  Для локализации используется плагин qTranslate-X.

5. После завершения манипуляций по добавлению и выводу произвольных полей в WordPress вам нужно лишь зайти в админку на нужную страницу и заполнить соответствующие тексты/данные. После этого перейдите на сам сайт и проверьте все ли корректно отображается. Если нет, весь алгоритм по работе с плагином Custom Field Suite нужно будет тщательно проверить и повторить.

Advanced Custom Fields

Advanced custom fieldsAdvanced Custom Fields

По WordPress плагину произвольных полей Advanced Custom Fields вообще создан отдельный сайт с описанием, документацией и подсказками. Сразу замечу, что в нем есть 2 версии — обычная бесплатная и PRO. Первую совершенно спокойно можно скачать отсюда с официального репозитория вордпресс. Оценка 4.9, минимальная версия WP — 3.5 и более миллиона загрузок!


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

Advanced Custom Fields имеет чуть больше типов пользовательских полей, которые разделены на 6 групп:

  • Базовые: текстовая строка и область.
  • Выборка: чекбоксы, True / False, выпадающий список, Radio Button.
  • Контент: файлы, галерея, картинка, текстовый редактор, встраиваемый объект oEmbed.
  • Элементы jQuery: цветовая палитра, выбор даты/времени, Google карта.
  • Для разметки: отображение (клонирование) определенных полей, гибкий элемент контента (Flexible Content), табы, повторяющиеся элементы.
  • Связи: URL линк, таксономия, объект поста, ссылка на объект.

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


Advanced custom fieldsПлагин произвольных полей Advanced Custom Fields

Разобраться с интеграцией 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. Выбирайте тот, что больше нравится. Если же требуются повторяющиеся поля (цикл), то бесплатно эта функция есть только в первом модуле.

x-inside.ru

Зачем нужен Advanced Custom Fields?


Advanced Custom Fields (ACF) – это бесплатный плагин для добавления произвольных полей к записи, с удобным интерфейсом (в отличии от стандартных полей WP), широким выбором настроек, а также возможностью серьезного изменения с помощью плагинов.

Скачать плагин с репозитория WordPress

Зачем нужны произвольные поля?

Стандартные настройки записи сильно ограничены. Вы можете использовать: заголовок, текст, миниатюру поста, вывести рубрики и остальное по мелочи. Но, к примеру, вам может понадобиться создать подобие социальной сети, где у каждого человека были бы свои параметры, такие как: рост, цвет глаз, цвет волос и т.д.

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

Хотелось бы понятные кнопочки загрузки и возможность выбрать рубрику. В итоге нам нужны дополнительные поля к стандартной записи и желательно чтобы были понятные людям. Как раз эту проблему и решает ACF.

Что умеет Advanced Custom Fields?

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

Список всех его возможностей довольно велик, но в нем есть все самое необходимое, а именно:


  • текст
  • текстовая область
  • номер
  • email
  • пароль
  • визуальный редактор WP
  • загрузка изображений и файлов
  • различные манипуляторы выбора
  • различные взаимоотношения между объектами wp (рубрики, страницы, записи, пользователи)
  • вставка Google карт
  • выбор цвета и даты

Поля на любой вкус и цвет. А вот так это выглядит при редактировании самой записи.

 

Выбрать куда вставить поле

Вы можете вставить поля не только в запись, но и в другие виды таксономии, а именно:

  • запись
  • страница
  • пользователь
  • рубрики
  • поля для определенного формата записи (что это?)
  • прикрепление к определенному шаблону страницы
  • и много другое

Настройка области редактирования записи

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

Также есть прочие настройки по-мелочи, вроде стиля самих настроек и приоритет полей по отношению к другим элементам.

Как использовать?

1. Для начала установите плагин стандартным способом (как установить плагин?).
2. Далее в правой колонке найдите вкладку «Произвольные поля» и нажмите на нее.
3. После установки у вас еще нет полей. Давайте создадим новою группу полей нажав на «Добавить новую»

4. Назовите группу полей. Это имя будет в шапке настроек в записи.
5. Для добавления поля нажмите «Добавить поле», как ни странно 🙂

6. Назовите поле, задайте описание. И обязательно укажите «Имя поля» на английском. Оно нам пригодиться в будущем.
7. Поиграйтесь с настройками плагина, выберите нужные поля или их сочетания. Вы можете менять поля местами, и удалять их. Все наглядно и понятно.

8. Затем зайдите в таксономию, которую вы выбрали. В моем случае это запись. И наслаждайтесь результатом.

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

Итак, далее работаем с темой. В нужное место вставим такой код.

<?php echo get_post_meta($post->ID, ' Имя поля ', true); ?>

Где «Имя поля» мы задали в пункте 6. О функции get_post_meta можно узнать тут:

О функции get_post_meta

Код выше подходит для простых полей типа текстовых. Для более вывода более сложных полей есть смысл обратиться к документации.  Она, к сожалению, на английском. Так, что если у вас туго с этим языком будут проблемы.

Если вы хотите чтобы я более подробно разобрал тему именно установки и вывода настроек пишите об этом в комментариях!

Документация по ACF доступна на сайте разработчика. Ссылка ниже.

Документация по Advanced Custom Fields

Плюсы и минусы бесплатной версии ACF

Так как плагин распространяется бесплатно, в этой части обзора мы будем рассматривать  только базовую версию, без модификаций.

Плюсы

  • удобный интерфейс
  • русский перевод
  • много настроек
  • бесплатно
  • возможности расширения
  • можно создавать свои поля (более подробно в документации)
  • постоянные обновления

Минусы

  • нельзя клонировать поля непосредственно в записи (количество полей строго ограничено и слайдер в бесплатной версии не добавить)
  • местоположение полей в теме строго фиксировано (нельзя вставить поле, куда нам захочется)
  • техподдержка и документация на английском
  • нужны базовые навыки программирования, чтобы плагин заработал

Выводы по бесплатной версии:  даже бесплатного функционала вполне хватит для стандартных задач. Тем более у плагина на данный момент нет серьезных конкурентов (если вы нашли достойного конкурента обязательно пишите в комментариях).

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

Стоит ли покупать платные дополнения для Advanced Custom Fields? (часть 2)

wp-book.ru

Как работать с advanced custom fields

Полная документация по функциям ACF wordpress находится на официальном сайте: Получить ссылку на (ACF)

Я же постараюсь описать только основные функции работы с произвольными полями, созданными этим плагином.

Любое поле можно получить используя функцию get_field($field_name, $post_id, $format_value):

$field_name — имя поля;

$post_id — идентификатор поста, страницы (по умолчанию это идентификатор поста / страницы, но можно указывать ID таксономии, пользователя, категории и так далее);

$format_value — (true / false) форматировать или нет полученные данные с базы.

Работать с функцией можно вот так:

Перед этим конечно нужно создать поле с именем «my_field» и заполнить его через админку. Надо сразу уточнить, что никто не отменял работу функции для wordpress custom fields — get_post_meta, она описанная в указанной ссылке.

Единственный момент: если вы будете использовать get_post_meta вместо get_field для получения изображения, файла, даты, чекбокса — то у вас ничего не получится. Проблема в том что функция вордпреса не знает такого форматирования данных от сюда и проблемы. Для таких типов данных нужно использовать именно get_field.

В принципе, описанной выше функции достаточно для работы с любым полем advanced custom fields. Ей можно получать обычный отформатированный текст, координаты объектов, цвет, дату, взаимоотношение и много другое.

Примеры работы с функцией get_field в advanced custom fields

Получаем и выводим данные с произвольно поля  «Редактор WYSIWYG» он же tinyMCE (если подключен), конечно перед этим нужно не забыть добавить такое произвольное поле:

 

Получаем произвольное изображение из advanced custom fields wordpress:

При условии что у нас в базе хранится именно изображение как ссылка:

Изображение в advanced custom fields wordpress

 

Получаем координаты объекта из поля jQuery google maps:

тут важный момент, координаты будут в массиве, вот такое представление:

 

Получаем текстовое поле для категории:

переменная $cat у вашем макете должна быть автоматически заполненная, по этому вам достаточно создать текстовое поле для категории с именем «CAT_TXT», ну и не забыть заполнить его.

 

На этом пока что все, постараюсь в ближайшее время выложить еще несколько постов по работе с плагином advanced custom fields wordpress для создания произвольных полей у вордпресе. Следите за выходом новый записей и жмите лайк если эта статья была вам полезная:

 

P.S.: Плагин advanced custom fields полнофункциональное расширение для wordpress, которое позволяет создавать произвольные поля разной сложности, такие как:

  • текстовое поле;
  • редактор WYSIWYG или tinyMCE;
  • гугл карты / google maps;
  • взаимоотношения между постами, страницами, пользователями, категориями, таксономиями.

help-wp.ru

ACF Theme Code

ACF Theme Code solves a very common issue when adding custom fields – you need to add code to your theme in order to render that data (although Shortcodes are also available for more simple implementations). This can get rather complicated even for seasoned developers.

Using this plugin, a code snippet for each field is displayed at the bottom of an ACF page that you can copy and paste into your theme. A pro version adds more features, including compatibility with several third party add-ons (some of which are in this roundup).

ACF Theme Code

Advanced Custom Fields: Font Awesome Field

This plugin combines my passions for both ACF and Font Awesome icons. It adds a field that lets users choose an icon to go along with their content.

For example, I recently used this to add icons to text headings within a page. It makes for a nice way to separate content and provide context to visitors. Plus, people really like to pick out their own icons.

Advanced Custom Fields: Font Awesome Field

Advanced Custom Fields: Table Field

Here’s an easy way to add custom field data to HTML tables. What’s nice is that the non-technical user can enter data without having to worry about breaking anything. Simply drag rows or columns to reposition them. Tables can also have an optional header.

Advanced Custom Fields: Table Field

Advanced Custom Fields: Gravityforms Add-on

Both ACF and Gravity Forms are among the most flexible WordPress plugins. So it makes sense that there’s now a way to tie them together. This add-on creates a new “Forms” field type that will allow the user to select the form of their choice from a drop-down list.

Advanced Custom Fields: Gravityforms Add-on

Advanced Custom Fields: Image Crop Add-on

When building a UI that includes an image field, you often have specific image dimensions in mind. Users, however, don’t always pay attention. WordPress can try to automatically crop large images but the results may not be pretty. Here we have a plugin that will allow the user to crop an image to the exact dimensions you specify.

Advanced Custom Fields: Image Crop Add-on

Advanced Custom Fields Repeater & Flexible Content Fields Collapser

The ACF repeater field is very handy for managing content. But its display within the WordPress backend can get messy.

That’s where the Repeater & Flexible Content Fields Collapser comes in to save the day. It collapses each row of fields in a repeater (except for the first) to tidy up your screen. It does the same for the flexible content field as well.

Advanced Custom Fields Repeater & Flexible Content Fields Collapser

Ajax Load More for Advanced Custom Fields

The Ajax Load More plugin adds infinite scrolling to various aspects of your WordPress Website. This add-on brings that same lazy loading functionality to ACF repeater, flexible content, gallery and relationship fields.

Ajax Load More for Advanced Custom Fields

ACF Code Field

As the plugins’ name indicates, a “Code” field is added to ACF. Based on the Codemirror JS plugin, you can now easily add code examples through a custom field. This could be a great solution for those who run a tutorial-based or code repository website.

ACF Code Field

ACF to REST API

If you’re taking advantage of the WordPress REST API to build custom applications, you’ll also want the ability to pass along custom field endpoints. ACF to REST API allows you to choose fields to both share with and be editable through the API.

ACF Code Field

ACF qTranslate

Meant to be paired with qTranslate X, this ACF add-on will add dynamic multilingual capabilities to a variety of custom field types (text, text area, WYSIWYG, image and file). This is a very handy tool when managing a multilingual website.

ACF qTranslate

Build It Your Way

If you’re serious about developing with WordPress, then custom fields are a must-have tool. With Advanced Custom Fields, you have the ability to customize just about any type of content scenario imaginable. It’s one of the tools that help make WordPress a truly powerful platform.

But combining ACF with the add-ons above will bring even more convenience and flexibility to the party. It will allow you to transform a standard website into something much more dynamic.

speckyboy.com

Зачем нужен Advanced Custom Fields?
Advanced Custom Fields (ACF) – это плагин для добавления произвольных полей к записи, с удобным интерфейсом (в отличии от стандартных полей WP), широким выбором настроек, а также возможностью серьезного изменения с помощью плагинов.

Зачем нужны произвольные поля?
Стандартные настройки записи сильно ограничены. Вы можете использовать: заголовок, текст, миниатюру поста, вывести рубрики и остальное по мелочи. Но, к примеру, вам может понадобиться создать подобие социальной сети, где у каждого человека были бы свои параметры, такие как: рост, цвет глаз, цвет волос и т.д.

Advanced custom fields

Пример социальной сети на движке WP

Стандартными средствами WP этого можно добиться, но это крайне неудобно. Обычному человеку сложно понять, как пользоваться этой штукой. Хотелось бы понятные кнопочки загрузки и возможность выбрать рубрику. В итоге нам нужны дополнительные поля к стандартной записи и желательно чтобы были понятные людям. Как раз эту проблему и решает ACF.

Что умеет Advanced Custom Fields?
Вставка произвольных полей

Список всех его возможностей довольно велик, но в нем есть все самое необходимое, а именно:

  • текст
  • текстовая область
  • номер
  • email
  • пароль
  • визуальный редактор WP
  • загрузка изображений и файлов
  • различные манипуляторы выбора
  • различные взаимоотношения между объектами wp (рубрики, страницы, записи, пользователи)
  • вставка Google карт
  • выбор цвета и даты

Поля на любой вкус и цвет. А вот так это выглядит при редактировании самой записи.

Advanced custom fields

Advanced Custom Fields в записи

Выбрать куда вставить поле
Вы можете вставить поля не только в запись, но и в другие виды таксономии, а именно:

  • запись
  • страница
  • пользователь
  • рубрики
  • поля для определенного формата записи
  • прикрепление к определенному шаблону страницы
  • и много другое

Можно создать форму добавление постов любой сложности, ограничение только ваша фантазия. Особенная ценность повторяющиеся поля, такого нет ни в одном плагине!!!

Плагин отлично добавляет произвольные поля в любые другие плагины, которые создают свои типы контента.

clubwp.ru

Changelog

5.7.9

Release Date – 17 December 2018

  • Fix – Added custom metabox location (acf_after_title) compatibility with Gutenberg.
  • Fix – Added dynamic metabox check compatibility with Gutenberg.
  • Fix – Fixed bug causing required date picker fields to prevent form submit.
  • Fix – Fixed bug preventing multi-input values from saving correctly within media modals.
  • Fix – Fixed bug where acf_form() redirects to an incorrect URL for sub-sites.
  • Fix – Fixed bug where breaking out of a sub have_rows() loop could produce undesired results.
  • Dev – Added filter ‘acf/connect_attachment_to_post’ to prevent connecting attachments to posts.
  • Dev – Added JS filter ‘google_map_autocomplete_args’ to customize Google Maps autocomplete settings.

5.7.8

Release Date – 7 December 2018

  • Fix – Fixed vulnerability allowing author role to save unfiltered HTML values.
  • Fix – Fixed all metaboxes appearing when editing a post in WP 5.0.
  • i18n – Updated Polish translation thanks to Dariusz Zielonka.
  • i18n – Updated Czech translation thanks to Veronika Hanzlíková.
  • i18n – Update Turkish translation thanks to Emre Erkan.
  • i18n – Updated Portuguese language thanks to Pedro Mendonça.

5.7.7

Release Date – 1 October 2018

  • Fix – Fixed various plugin update issues.
  • Tweak – Added ‘language’ to Google Maps API url.
  • Dev – Major improvements to the acf.models.Postbox model.
  • Dev – Added JS filter ‘check_screen_args’.
  • Dev – Added JS action ‘check_screen_complete’.
  • Dev – Added action ‘acf/options_page/submitbox_before_major_actions’.
  • Dev – Added action ‘acf/options_page/submitbox_major_actions’.
  • i18n – Updated Portuguese language thanks to Pedro Mendonça

5.7.6

Release Date – 12 September 2018

  • Fix – Fixed unload prompt not working.
  • Dev – Reduced number of queries needed to populate the relationship field taxonomy filter.
  • Dev – Added ‘nav_menu_item_id’ and ‘nav_menu_item_depth’ to get_field_groups() query.
  • Dev – Reordered various actions and filters for more usefulness.
  • i18n – Updated Polish language thanks to Dariusz Zielonka

5.7.5

Release Date – 6 September 2018

  • Fix – Fixed bug causing multisite login redirect issues.
  • Fix – Fixed bug causing validation issues in older versions of Firefox.
  • Fix – Fixed bug causing duplicate Select2 instances when adding a widget via drag/drop.
  • Dev – Improved WPML compatibility by using $sitepress->get_current_language() instead of ICL_LANGUAGE_CODE.
  • Dev – Improved validation JS with new Validator model and logic.

5.7.4

Release Date – 30 August 2018

  • Fix – Fixed bug causing field groups to disappear when selecting a taxonomy term with WPML active.
  • Tweak – Added more Dark Mode styles.
  • Tweak – Improved DB upgrade prompt, functions and AJAX logic.
  • Tweak – Improved the “What’s New” admin page seen after DB Upgrade.
  • Dev – Added new location rules filters.

5.7.3

Release Date – 20 August 2018

  • New – Added Dark Mode styles for the Dark Mode Plugin.
  • New – Added “Value Contains” condition to the Select field type.
  • New – Added support for the WooCommerce product type dropdown to trigger “update metaboxes”.
  • Tweak – Improved acf.screen model responsible for “updating metaboxes” when changing post data.
  • Tweak – Removed user fields from the multisite “Add New User” page.
  • Fix – Fixed bug preventing some tinymce customizations from working.
  • Fix – Fixed JS bug throwing “preference” error in console.
  • Dev – Added action ‘acf/enqueue_uploader’ triggered after the hidden “ACF Content” editor is rendered.

5.7.2

Release Date – 6 August 2018

  • Fix – Fixed bug preventing the Google Maps Field address from being customized.
  • Fix – Improved logic to request and cache plugin update information.
  • Fix – Fixed bug preventing JS initialization when editing widgets in accessibility mode.
  • Fix – Added missing $parent argument to term_exists() function when adding a new term via taxonomy field popup.
  • Fix – Fixed bug where nested Group Fields did not delete their values.
  • Fix – Fixed JS error thrown by localStorage if cookies are not enabled.
  • Dev – Bumped minimum WP version requirement to 4.4.
  • Dev – Added action ‘wp_nav_menu_item_custom_fields’ for compatibility with other plugins modifying the menu walker class.
  • Dev – Added ‘multiple’ to the allowed attributes for an email field.
  • Dev – Added new ACF_Ajax class for upcoming features.

5.7.1

  • Core: Minor fixes and improvements

5.7.0

  • Core: Major JavaScript updates
  • Core: Improved conditional logic with new types and more supported fields
  • Core: Improved localization and internationalization
  • Repeater field: Improved logic that remembers collapsed row states
  • Repeater field: Added support to collapse multiple rows (hold shift)
  • API: Improved lookup to find fields without a reference value
  • Language: Added Croatian translation – Thanks to Vlado Bosnjak
  • Language: Updated Italian translation – thanks to Davide Pantè
  • Language: Updated Romanian translation – thanks to Ionut Staicu
  • Language: Updated German translation – thanks to Ralf Koller
  • Language: Updated Arabic translation – thanks to Karim Ramadan
  • Language: Updated Portuguese translation – thanks to Pedro Mendonça

5.6.10

  • Core: Minor fixes and improvements

5.6.9

  • User field: Added new ‘Return Format’ setting (Array, Object, ID)
  • Core: Added basic compatibility with Gutenberg – values now save
  • Core: Fixed bug affecting the loading of fields on new Menu Items
  • Core: Removed private (‘show_ui’ => false) post types from the ‘Post Type’ location rule choices
  • Core: Minor fixes and improvements
  • Language: Updated French translation – thanks to Maxime Bernard-Jacquet

5.6.8

  • API: Fixed bug causing have_rows() to fail with PHP 7.2
  • Core: Fixed bug causing “Add new term” form to hide after submit
  • Core: Minor fixes and improvements
  • Language: Updated German translation – thanks to Ralf Koller
  • Language: Updated Portuguese translation – thanks to Pedro Mendonça
  • Language: Updated Arabic translation – thanks to Karim Ramadan
  • Language: Updated Spanish translation – thanks to Luis Rull Muñoz
  • Language: Updated Persian translation – thanks to Majix

5.6.7

  • Fixed an assortment of bugs found in 5.6.6

5.6.6

  • Accordion field: Added new field type
  • Tab field: Added logic to remember active tabs
  • WYSIWYG field: Fixed JS error in quicktags initialization
  • Core: Fixed issue preventing conditional logic for menu item fields
  • Core: Fixed issue preventing JS initialization for newly added menu items.
  • Core: Allow whitespace in input value (previously trimmed)
  • Core: Minor fixes and improvements
  • Language: Updated Italian translation – thanks to Davide Pantè
  • Language: Updated Brazilian Portuguese translation – thanks to Rafael Ribeiro
  • Language: Updated Dutch translation – thanks to Derk Oosterveld
  • Language: Updated Portuguese translation – thanks to Pedro Mendonça
  • Language: Updated Persian translation – thanks to Kamel Kimiaei
  • Language: Updated Swiss German translation – thanks to Raphael Hüni
  • Language: Updated Arabic translation – thanks to Karim Ramadan

5.6.5

  • API: Added new ‘kses’ setting to the acf_form() function
  • Core: Added new ‘Admin Tools’ framework (includes design refresh)
  • Core: Minor fixes and improvements
  • Language: Update Ukrainian translation – thanks to Jurko Chervony
  • Language: Update Russian translation – thanks to Andriy Toniyevych
  • Language: Update Hebrew translation – thanks to Itamar Megged

5.6.4

  • Google Map field: Fixed bug causing invalid url to JavaScript library
  • WYSIWYG field: Fixed minor z-index and drag/drop bugs
  • Group field: Fixed bug causing incorrect export settings
  • Core: Fixed bug in ‘Post Taxonomy’ location rule ignoring selected terms during AJAX callback
  • Core: Fixed bug preventing a draft to validate with required fields
  • Language: Updated Italian translation – thanks to Davide Pantè
  • Language: Update Turkish translation – thanks to Emre Erkan
  • Language: Updated Chinese translation – thanks to Wang Hao
  • Language: Update Hebrew translation – thanks to Itamar Megged

5.6.3

  • Button Group field: Added new field type
  • Range field: Added missing ‘step’ attribute to number input
  • Range field: Added width to number input based on max setting
  • Basic fields: Added missing ‘required’ attribute to inputs
  • Basic fields: Removed empty attributes from inputs
  • API: Fixed get_fields() bug ignoring fields starting with an underscore
  • Core: Minor fixes and improvements
  • Language: Updated Portuguese translation – thanks to Pedro Mendonça
  • Language: Updated French translation – thanks to Maxime Bernard-Jacquet
  • Language: Updated Finnish translation – thanks to Sauli Rajala
  • Language: Updated German translation – thanks to Ralf Koller

5.6.2

  • Range field: Added new field type
  • Clone field: Fixed bug causing value update issues for ‘seamless’ + widgets / nave menu items
  • Location: Added parent theme’s post templates to ‘post template’ location rule
  • Location: Fixed bug causing ‘nav menu’ location rule to fail during AJAX (add new item)
  • Core: Fixed PHP errors in customizer when editing non ACF panels
  • Core: Fixed bug casing backslash character to break fields / field groups
  • Core: Many minor bug fixes
  • Language: Updated Romanian translation – thanks to Ionut Staicu
  • Language: Updated Italian translation – thanks to Davide Pantè
  • Language: Update Turkish translation – thanks to Emre Erkan
  • Language: Updated Russian translation – Thanks to Алекс Яровиков
  • Language: Updated French translation – Thanks to Julie Arrigoni

5.6.1

  • Fixed an assortment of bugs found in 5.6.0

5.6.0

  • Link field: Added new field type
  • Group field: Added new field type
  • API: Improved have_rows() function to work with clone and group field values
  • Core: Added new location for Menus
  • Core: Added new location for Menu Items
  • Core: Added types to Attachment location rule – thanks to Jan Thomas
  • Core: Added “Confirm Remove” tooltips
  • Core: Updated Select2 JS library to v4
  • Core: Minor fixes and improvements

5.5.14

  • Core: Minor bug fixes

5.5.13

  • Clone field: Improved ‘Fields’ setting to show all fields within a matching field group search
  • Flexible Content field: Fixed bug causing ‘layout_title’ filter to fail when field is cloned
  • Flexible Content field: Added missing ‘translate_field’ function
  • WYSIWYG field: Fixed JS error when using CKEditor plugin
  • Date Picker field: Improved ‘Display Format’ and ‘Return Format’ settings UI
  • Time Picker field: Same as above
  • Datetime Picker field: Same as above
  • Core: Added new ‘remove_wp_meta_box’ setting
  • Core: Added constants ACF, ACF_PRO, ACF_VERSION and ACF_PATH
  • Core: Improved compatibility with Select2 v4 including sortable functionality
  • Language: Updated Portuguese translation – thanks to Pedro Mendonça

5.5.12

  • Tab field: Allowed HTML within field label to show in tab
  • Core: Improved plugin update class
  • Language: Updated Portuguese translation – thanks to Pedro Mendonça
  • Language: Updated Brazilian Portuguese translation – thanks to Rafael Ribeiro

5.5.11

  • Google Map field: Added new ‘google_map_init’ JS action
  • Core: Minor fixes and improvements
  • Language: Updated Swiss German translation – thanks to Raphael Hüni
  • Language: Updated French translation – thanks to Maxime Bernard-Jacquet

5.5.10

  • API: Added new functionality to the acf_form() function:
    • added new ‘html_updated_message’ setting
    • added new ‘html_submit_button’ setting
    • added new ‘html_submit_spinner’ setting
    • added new ‘acf/pre_submit_form’ filter run when form is successfully submit (before saving $_POST)
    • added new ‘acf/submit_form’ action run when form is successfully submit (after saving $_POST)
    • added new ‘%post_id%’ replace string to the ‘return’ setting
    • added new encryption logic to prevent $_POST exploits
    • added new acf_register_form() function
  • Core: Fixed bug preventing values being loaded on a new post/page preview
  • Core: Fixed missing ‘Bulk Actions’ dropdown on sync screen when no field groups exist
  • Core: Fixed bug ignoring PHP field groups if exists in JSON
  • Core: Minor fixes and improvements

5.5.9

  • Core: Fixed bug causing ACF4 PHP field groups to be ignored if missing ‘key’ setting

5.5.8

  • Flexible Content: Added logic to better ‘clean up’ data when re-ordering layouts
  • oEmbed field: Fixed bug causing incorrect width and height settings in embed HTML
  • Core: Fixed bug causing incorrect Select2 CSS version loading for WooCommerce 2.7
  • Core: Fixed bug preventing ‘min-height’ style being applied to floating width fields
  • Core: Added new JS ‘init’ actions for wysiwyg, date, datetime, time and select2 fields
  • Core: Minor fixes and improvements

5.5.7

  • Core: Fixed bug causing get_field() to return incorrect data for sub fields registered via PHP code.

5.5.6

  • Core: Fixed bug causing license key to be ignored after changing url from http to https
  • Core: Fixed Select2 (v4) bug where ‘allow null’ setting would not correctly save empty value
  • Core: Added new ‘acf/validate_field’ filter
  • Core: Added new ‘acf/validate_field_group’ filter
  • Core: Added new ‘acf/validate_post_id’ filter
  • Core: Added new ‘row_index_offset’ setting
  • Core: Fixed bug causing value loading issues for a taxonomy term in WP < 4.4
  • Core: Minor fixes and improvements

5.5.5

  • File field: Fixed bug creating draft post when saving an empty value
  • Image field: Fixed bug mentioned above

5.5.4

  • File field: Added logic to ‘connect’ selected attachment to post (only if attachment is not ‘connected’)
  • File field: Removed filesize() call causing performance issues with externally hosted attachments
  • File field: Added AJAX validation to ‘basic’ uploader
  • Image field: Added ‘connect’ logic mentioned above
  • Image field: Added AJAX validation mentioned above
  • True false field: Improved usability by allowing ‘tab’ key to focus element (use space or arrow keys to toggle)
  • Gallery field: Fixed bug causing unsaved changes in sidebar to be lost when selecting another attachment
  • API: Fixed add_row() and add_sub_row() return values (from true to new row index)
  • Core: Improved get_posts() query speeds by setting ‘update_cache’ settings to false
  • Core: Allowed ‘instruction_placement’ setting on ‘widget’ forms (previously set always to ‘below fields’)
  • Core: Removed ‘ACF PRO invalid license nag’ and will include fix for ‘protocol change’ in next release
  • Language: Updated French translation – thanks to Martial Parfait

5.5.3

  • Options page: Fixed bug when using WPML in multiple tabs causing incorrect ‘lang’ to be used during save.
  • Core: Added support with new get_user_locale() setting in WP 4.7
  • Core: Improved efficiency of termmeta DB upgrade logic
  • Core: Minor fixes and improvements

5.5.2

  • Tab field: Fixed bug causing value loading issues for field’s with the same name
  • Repeater field: Fixed bug in ‘collapsed’ setting where field key was shown instead of field label

5.5.1

  • Select field: Fixed bug preventing some field settings from being selected
  • Date picker field: Improved compatibility with customized values
  • Core: Added new ‘enqueue_datepicker’ setting which can be used to prevent the library from being enqueued
  • Core: Added new ‘enqueue_datetimepicker’ setting which can be used to prevent the library from being enqueued
  • Core: Minor fixes and improvements

5.5.0

  • True False field: Added new ‘ui’ setting which renders as a toggle switch
  • WYSIWYG field: Added new ‘delay’ setting which delays tinymce initialization until the field is clicked
  • WYSIWYG field: Added compatibility for WP 4.7 toolbar buttons order
  • Checkbox field: Added new ‘allow_custom’ and ‘save_custom’ settings allowing you to add custom choices
  • Select field: Fixed bug where Select2 fields did not correctly use the ‘allow null’ setting
  • Clone field: Fixed bug causing save/load issues found when 2 sub fields clone in the same field/group.
  • Flexible Content field: Improved popup style and validation messages
  • Google Map field: Prevent scroll zoom
  • Date picker field: Added better compatibility logic for custom ‘date_format’ setting found in version < 5.0.0
  • API: acf_form() ‘id’ setting is now used as ‘id’ attribute in

<

form> element
* Options page: Fixed incorrect redirect URL from a sub options page
* Field group: Added new ‘post_template’ location rule (requires WP 4.7)
* Core: Added support for the wp_termmeta table (includes DB upgrade)
* Core: Added new ‘select_2_version’ setting which can be changed between 3 and 4
* Core: Added new ‘enqueue_select2’ setting which can be used to prevent the library from being enqueued
* Core: Added new ‘enqueue_google_maps’ setting which can be used to prevent the library from being enqueued
* Core: Minor fixes and improvements
* Language: Updated Portuguese translation – thanks to Pedro Mendonça
* Language: Updated Norwegian translation – thanks to Havard Grimelid
* Language: Updated Swedish translation – thanks to Jonathan de Jong
* Language: Updated German translation – thanks to Ralf Koller
* Language: Updated Italian translation – thanks to Davide Pantè
* Language: Updated Swiss German translation – thanks to Raphael Hüni

5.4.8

  • Flexible Content field: Fixed bug in ‘layout_title’ filter preventing values being loaded correctly

5.4.7

  • Time Picker field: Fixed bug preventing default time from being selected
  • Date Picker field: Improved compatibility with unix timestamp values
  • File field: Fixed validation bugs when used as a sub field (multiple selection)
  • Select field: Fixed bug incorrectly allowing a disabled field (hidden by conditional logic) to save values
  • API: Added new add_sub_row() function
  • API: Added new update_sub_row() function
  • API: Added new delete_sub_row() function
  • Core: Fixed bug causing ‘sync’ issues with sub clone fields
  • Core: Minor fixes and improvements

5.4.6

  • Gallery field: Fixed bug where open sidebar fields were saved to post
  • Flexible Content field: Fixed bug causing Google map render issue within collapsed layout
  • Flexible Content field: Fixed bug during ‘duplicate layout’ where radio input values were lost
  • API: Fixed bug causing get_row(true) to return incorrect values
  • Core: Fixed bug where preview values did not load for a draft post
  • Core: Added notice when PRO license fails to validate URL
  • Core: Fixed bug where conditional logic would incorrectly enable select elements
  • Core: Minor fixes and improvements

5.4.5

  • API: Fixed bug in acf_form() where AJAX validation ignored ‘post_title’
  • API: Improved update_field() when saving a new value (when reference value does not yet exist)
  • Core: Added search input & toggle to admin field groups list
  • Core: Fixed bug where preview values did not load for a draft post

5.4.4

  • WYSIWYG field: Fixed JS error when ‘Disable the visual editor when writing’ is checked

5.4.3

  • WYSIWYG field: Fixed JS bug (since WP 4.6) causing conflicts with editor plugins
  • Google Maps field: Fixed JS error conflict with Divi theme
  • Radio field: Fixed bug (Chrome only) ignoring default values in cloned sub fields
  • Core: Fixed wp_get_sites() deprecated error (since WP 4.6) shown in network admin

5.4.2

  • API: Fixed bug preventing post_title and post_content values saving in acf_form()

5.4.1

  • API: Fixed bug causing get_fields('options') to return false
  • Core: Fixed bug causing get_current_screen() to throw PHP error
  • Core: Fixed bug causing ‘Preview Post’ to load empty field values

5.4.0

  • Clone field: Added new field type (https://www.advancedcustomfields.com/resources/clone/)
  • Gallery field: Removed ‘Preview Size’ setting and improved UI
  • Taxonomy field: Added compatibility to save/load terms to user object
  • Select field: Added new ‘Return Format’ setting
  • Radio field: Added new ‘Return Format’ setting
  • Checkbox field: Added new ‘Return Format’ setting
  • Page link field: Added new ‘Allow Archives URLs’ setting
  • Core: Fixed plugin update bug delaying updates
  • Core: Fixed bug when editing field settings in Chrome causing required setting to self toggle
  • Core: Improved speed and fixed bugs when creating and restoring revisions
  • Core: Minor fixes and improvements
  • Language: Updated Portuguese translation – thanks to Pedro Mendonça
  • Language: Updated Brazilian Portuguese translation – thanks to Augusto Simão
  • Language: Updated Dutch translation – thanks to Derk Oosterveld
  • Language: Updated Persian translation – thanks to Kamel
  • Language: Updated German translation – thanks to Ralf Koller
  • Language: Updated Swiss German translation – thanks to Raphael Hüni

View full changelog: https://www.advancedcustomfields.com/changelog/

wordpress.org

В 90% случаев при разработке на WordPress  спасает компонент Advanced Custom Fields. Это компонент динамического добавления полей для разных компонентов WordPress — постов, страниц, настройки темы (только в PRO) и многое другое. 

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

Благо, у компонента ACF есть отличное API, построенное на хуках, чем мы и воспользуемся.

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

shot_161014_100433

В данном случае нам необходимо добавить два хука, первый из которых добавляет новый пункт «Post Parent Category» в группу «Post». Второй хук добавляет значения фильтра, а именно список категорий. Код вывода списка категорий подсмотрен в исходниках ACF плагина, там есть замечательная функция acf_get_taxonomy_terms($taxonomy), которая используется для схожих фильтров. 

Вторым и более сложным шагом является обработка данного фильтра. Т.к. в WordPress нет возможности получить иерархию рубрик (категорий) или я просто не нашел данного функционала, то делаем рекурсивное получение всех рубрик по цепочке. Если вложенность большая, то будет достаточно много запросов, но это сравнение происходит только на стороне администратора, поэтому не страшно.

В данном коде две функции, где одна обрабатывает — выводить ли группу полей на текущей странице, а вторая рекурсивно проходит по цепочке рубрик. 

Ссылки по теме:

Custom location rules


ittricks.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.