Плагин ACF: advanced custom fields wordpress

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

advanced custom fields wordpress

Плагин Advanced Custom Fields на сегодня (20.08.15) имеет более 1 миллиона активных инсталов и это число продолжает упорно расти. Он предназначен для работы с произвольными полями у ВП, но в отличии от остальных плагинов умеет создавать не только custom field для постов / страниц, а и для других частей сайта.

 acf-type

ACF может создавать произвольные поля для:

  • постов / страниц;
  • категорий;
  • меток;
  • таксономий;
  • пользовательских типов;
  • пользователей;
  • всего сайта, в отдельную вкладку, с помощью дополнения.

Прикладываю скриншот справа для всех типов полей на тот случай если я что то пропустил.

Теперь вдумайтесь, для всех этих блоков произвольных полей Advanced Custom Fields WordPress может создавать данные такого типа:

 Тип данных произвольного поля  Описание / скин

текст / input

 

Обычное типичное текстовое поле

acf-type-1 acf-type-1-2

Область текста / textarea

 

Область текста с конвертацией хтмл тегов и новых линий без редактора.

acf-type-2

текстовые поля: телефон, email, пароль

 

Не чем не отличающие поля от аналогов хтмл.

 

Редактор WYSIWYG

 

Вставляет редактор в поле для ввода произвольного поля текст. Выглядит это вот как то так:

acf-type-3 и редактор имеет множество своих настроек. можно отключить не нужные кнопки.

 

Изображение

 

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

acf-type-4

Файл Поле для сохранения файлов. Работает по аналогии с типом "Изображение", может хранить 3 варианта данных.

Выбрать / он же select

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

Чекбокс

Это так сказать 2 в 1, поле которое может выступать как радио кнопка или как обычный чекбокс с множественным выбором

Блок отношения: ссылка / объект / таксономия / взаимоотношения / пользователь

Нет смысла описывать этот тип данных по отдельности. Все они могут сохранять данные о добавленных ссылках, объектах, таксономиях, пользователях.

acf-type-5

jQuery google карта

Тип данных что хранить информацию о координатах объектов, при этом в админке добавляется вот такая google maps:

произвольное поле google maps в ACF

Теперь добавить адрес и указать координаты на google maps из админки WordPress проще чем на большинстве CMS.

jQuery дата

Текстовый блок, который умеет форматировать даты + вот такая незаурядная выпадашка:

дата в advanced custom fields

Выбор цвета

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

произвольное поле цвет / color в advanced custom fields

Это конечно не полный список всех типов данных для advanced custom fields wordpress, но стоить наверное оговориться что тип данных массив значений, он же repeater, в этом плагине платный и стоить 25$ на официальном сайте. Но это дополнение незаменимо, тем более что купив его раз вы сможете использовать его очень и очень долго.

 

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

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

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

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

$field_name - имя поля;

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

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

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

<?php if($my_field=get_field("my_field")){echo $my_field;}?>

Перед этим конечно нужно создать поле с именем "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 (если подключен), конечно перед этим нужно не забыть добавить такое произвольное поле:

<?php if($my_txt_tiny=get_field("my_txt_tiny")){echo apply_filters("the_content", $my_txt_tiny);}?>

 

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

<?php if($my_img=get_field("my_img")){echo '<img src="'.$my_img.'"/>';}?>

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

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

 

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

<?php $map=get_field("my_map"); ?>

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

$map[lat]; // широта
$map[lng]; // долгота

 

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

<?php if($CAT_TXT=get_field("CAT_TXT",get_category($cat))){ echo apply_filters("the_content", $CAT_TXT);}?>

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

 

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

 

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

  • текстовое поле;
  • редактор WYSIWYG или tinyMCE;
  • гугл карты / google maps;
  • взаимоотношения между постами, страницами, пользователями, категориями, таксономиями.
Комментарии к записи «Плагин ACF: advanced custom fields wordpress»:
  1. Иван:

    У меня не выводится содерджание поля
    версия плагина 5.8.0
    wordpress 5.2.1
    Создал поле для конкретной страницы.
    Пробовал вывести поле разными способобами.

    php wp_reset_query();

    php if($adress_timashevsk=get_field("adress_timashevsk")){echo $adress_timashevsk;}

    php if($adress_timashevsk=get_field("adress_timashevsk")){echo apply_filters("the_content", $adress_timashevsk);}

    php the_field("adress_timashevsk")

    НЕ выводиться. Подскажите в чем может быть дело?

    • Иван:

      Пробовал на двух сайта. Создал поле с редактором для одной страницы и вывожу приведенными в предыдущем сообщении кодами. Результат 0(

    • admin:

      Добрый день.
      Вывод делаете на странице?? Поле заполненное? Файл нашли правильно, который за отображение отвечает. Например, забрасываете в page.php а у вас за вывод отвечает шаблон page-shab1.php как вариант.

    • admin:

      acf не хочет чтобы обновили базу??? сообщение с зеленой кнопкой??

    • Иван:

      Обновлять базу запросов нет. Установил сегодня новую версию плагина.
      Пробовал и на отдельном шаблоне и в общем и на странице.

    • Иван:

      И дело в том, что другое поле для вывода контента в категории - отлично выводиться

    • admin:

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

    • Иван:

      да я знаю. Вот так вывожу php if($desk_act=get_field("desk_act",get_category($cat))){ echo apply_filters("the_content", $desk_act);}

      Дак что может быт не так. Почему это поле не выводиться php if($adress_timashevsk=get_field("adress_timashevsk")){echo $adress_timashevsk;} ????

    • Иван:

      Еще заметил что кода нет в коде страницы. Пустой див только

    • Иван:

      А если добавляю в блок контента страницы то почему то вот так выводиться -Как коментарий

    • admin:

      Если есть возможност дать доступ, то завтра точно гляну и найду причину там 100% какая-то мелочевка. Если доступ нет тогда нужны скины файла пхп куда вставляете, скин где поле заполнено и скин как поле настроено. попробую помочь.
      Сегодня уже не успею

  2. Алексей:

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

    • admin:

      Добрый день.
      WordPress новый, 5 версия? Если да то нужно обновить плагин ACF зайти в настройки произвольных полей, и в каждом типе поля проверить чтоб было вот так отмечено https://help-wp.ru/wp-content/uploads/2019/01/trabl-001.jpg и сохранить если было не так.

    • Алексей:

      Всё-равно при просмотре кода страницы он отсутствует

    • admin:

      В верху страницы в правом углу есть настройки, возможно вы там отключили отображение пользовательских полей??

    • Алексей:

      В админке они есть.

    • admin:

      Проблема на фронте? во время отображения поля?
      как получаете? get_field("название поля"), там есть второй параметр get_field("название поля",$post->ID) где global $post - это текущий пост.
      Рекомендую перед получением поля сделать:
      var_dump($post->ID);
      var_dump(get_field("название поля",$post->ID));

      если получите значение false false значит нужно искать почему у вас потерялась переменная $post.
      Если получите "число" false проверте число совпадает ваш ид поста с этим числом или нет. если не совпадает значит где то затираете переменную, нужно перед получением вставить wp_reset_query();

    • Алексей:

      Не понял ничего. Я в PHP не очень.

    • Алексей:

      Я так указывал:

    • Алексей:

      php if($my_field=get_field("my_field")){echo $my_field;}

    • Алексей:

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

    • admin:

      попробуйте перед получением информации очистить query, вот таким кодом:
      <?php wp_reset_query();?>

    • Алексей:

      Спасибо. Наконец-то заработало.

  3. Дмитрий:

    Здравствуйте!
    Спасибо за интересную статью!
    Меня интересует вопрос: можно ли решить такую проблему с помощью ACF: Подбор программы обучения по трем параметрам: возраст, предмет и цель (во всех случаях выбор из списка). В Выдаче - определенный набор программ. В битриксе это выглядит здесь: (-url-)
    Или искать другой плагин для вордпресса?

    • admin:

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

  4. Алекс:

    Добрый день. Добавил текстовое поле в категории рубрик, сделал вывод:
    Всё работает,всё выводится.

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

    • admin:

      Добрый день.
      Советую посмотреть вот этот пост о описании рубрик и таксономий: https://help-wp.ru/vyvesti-opisanie-rubriki-wordpress/

      Так понимаю у вас на рубриках все получилось, а в таксономиях не получается, для таксономии код получения поля такого плана, как вариант:
      $desc_acf=get_field("desc_acf",get_term_by('slug',get_query_var('term'),get_query_var('taxonomy')));

    • Алекс:

      Да, вчера нашёл этот самый код и всё заработало. Спасибо большое

  5. Владимир:

    Интересно, по идее можно же менять таким образом контент в зависимости от входящего рефа? можете подсказать как?

  6. Алексей:

    Установил. В админке всё настроил. В файл single.php вставил код. Не отображается.

    • admin:

      Добрый день.
      Если нужна помощь опишите пожалуйста проблему более подробно.
      Код который вставляли, лучше скин как он вставлен.
      Имя поля правильно указали? Значение заполнили?

  7. Дима:

    Реально крутой плагин, пользуюсь им уже больше года и все никак не нарадуюсь.
    Плохо что дока на английском, на русском мало и приходится віискивать по частям.
    Благодаря плагину advanced custom fields, wordpress стал более привлекательной системой для создания сайтов.

  8. Александр:

    Установил плагин, создал поля, группы. Но они не отображаются на странице редактирования страницы и записи.

    Тема своя, может что-то дописать в functions нужно?

    Подскажите пожалуйста.

    • admin:

      Добрый день.
      Видимо доп поля у вас скрыты в настройках. Посмотрите справа в верху редактора поста есть вкладка "Настройка экрана"
      Думаю причина в этом.

  9. Alex:

    Нужно вывести значения из acf в теме newspaper. Пишите на почту плиз обсудим.

  10. Геннадий:

    Здравствуйте!Мне необходимо настроить плагин advancedcustomfields для кулинарных рецептов или установить его с настройкой.И еще сколько у Вас будет стоить установить разметку
    (-url-) для кулинарных рецептов.

    • admin:

      Добрый день. ответил вам на почту

  11. Сергеева Ирина:

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

Сделать заказ
Онлайн помощь по WordPress
На сайте используются файлы Сookies. Отключить Сookies можно в настройках браузера!