Get field wordpress


Возвращает значение поля.

Интуитивная и мощная, эта функция используется для загрузки значения любого поля в любом месте. Обратите внимание, что каждый тип поля возвращает разный тип данных (string, int, array и др.)

$field = get_field($selector, [$post_id], [$format_value]);
  • $selector (string) — обязательный параметр. Имя поля или ключ поля
  • $post_id (mixed) — необязательное поле. ID поста, поле которого нужно получить. По-умолчанию текущий пост.
  • $format_value (bool) — необязательное поле. Форматирование полученного значения. По-умолчанию — true.

Примены использования:

Получить значение текущего поста

Получает значение поля text_field текущего поста

$value = get_field( "text_field" );

Получить значение определенного поста

Получает значение поля text_field для поста с ID=123

$value = get_field( "text_field", 123 );  

Проверить, существует ли поле

$value = get_field( "text_field" );     if( $value ) {      echo $value;     } else {     echo 'empty';      }

Значения, которые можно передавать в параметр $post_id

$post_id = false; // current post   $post_id = 1; // post ID = 1   $post_id = "user_2"; // user ID = 2   $post_id = "category_3"; // category term ID = 3   $post_id = "event_4"; // event (custom taxonomy) term ID = 4   $post_id = "option"; // options page   $post_id = "options"; // same as above     $value = get_field( 'my_field', $post_id );

Получение данных без форматирования

Например, поле image обычно возвращает массив. Однако, передвая false третьим параметром, мы можем получить запись из базы данных как есть.

$image = get_field('image', false, false);

mad-dog.ru

Как получить реальные размеры изображения или обходит&.


x430;блон URL-адреса для плагина для обработки Как использовать «глубину»? Разбивка страниц не работает на одной из моих страниц Сделайте размер и имена WordPress для Retina.js Можете ли в.

430;ть пользовательскую роль с административной страницей Лучший подход к созданию разделов «Горячие» и «Тенденции» Просмотр профиля с защитой паролем Результат к&#.

ий meta_key в каждом ли меню Несколько устройств wordpress website Извлечь изображение src из сообщения и отправить его во внешнюю форму Как логин возможен, если я запрещаю страницу входа через .htaccess с разрешением ip

www.wordpressask.com

Custom Field Suite


Get field wordpressCustom 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 с помощью соответствующей кнопки.

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

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


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

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

Get field wordpressВывод произвольных полей

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

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


Get field wordpressпроизвольные поля в 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

Get field wordpressAdvanced 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 плагина произвольных полей. Вообще очень нравится этот сайт, поскольку там можно найти все, что нужно — примеры кода, скриншоты, видео, настройки элемента и т.п.

Get field wordpressПлагин произвольных полей 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

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

Установка и активация плагина Advanced Custom Fields

Сначала рассмотрим пример настройки полей для рубрики записей в wordpress.

Настройка группы полей для рубрики записи

Кликаем на пункт меню «Произвольные поля», на открывшейся странице кликаем на кнопку «Добавить новую».

Добавление группы произвольных полей для рубрики

Настройки для отображения произвольного поля для рубрики:

Для того чтобы наши прозвольные поля отображались для рублик необходимо в блоке «Местоположение» указать условие. В данном случае это: «Термин таксономии равно рубрики».

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

Добавление произвольного поля в Advanced Custom Fields:

Добавление произвольного поля в Advanced Custom Fields

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

Настройка произвольного поля

Здесь:

  1. Символьный код произвольного поля;
  2. После заполнения всех полей и настроек поля нажимаем кнопку «Опубликовать».

Теперь будем делать вывод произвольного поля. Для того чтобы сделать вывод поля для рубрики через advanced custom fields необходимо сначала заполнить его на странице редактирования рубрики, после перейти в нужный php файл темы и разместить там следующий код:

Здесь:

  • get queried object — полная информация о записи, метке, рубрике;
  • the_field — функция, которая выводит значение произвольного поля для определенной рубрики.

Чтобы вывести произвольное поле в записи нужно размещать этот код в цикле примерно вот так:

На этом все, после правильно проделанной работы цель вывода произвольных полей в wordpress с использованием плагина advanced custom fields достигнута. Всем удачи и успехов в работе!

rugeek.ru

Интернет-магазин «wp-book.ru», расположенный на доменном имени  wp-book.ru, именуемое в дальнейшем «Продавец», публикует Публичную оферту о продаже Товара дистанционным способом.

  1. ОПРЕДЕЛЕНИЕ ТЕРМИНОВ

1.1.    Публичная оферта (далее – «Оферта») — публичное предложение Продавца, адресованное неопределенному кругу лиц, заключить с Продавцом договор купли-продажи товара дистанционным способом (далее — «Договор») на условиях, содержащихся в настоящей Оферте, включая все Приложения.

1.2.    Заказ Товара на сайте Интернет-магазина – позиции, указанные Покупателем из ассортимента Товара, предложенного к продаже, при оформлении заявки на приобретение Товара на сайте Интернет-магазина или через Оператора.

  1. ОБЩИЕ ПОЛОЖЕНИЯ

2.1. Заказ Покупателем Товара, размещенного на сайте Интернет-магазина означает, что Покупатель согласен со всеми условиями настоящей Оферты.

2.2. Администрация сайта Интернет-магазина имеет право вносить изменения в Оферту без уведомления Покупателя.

2.3. Срок действия Оферты не ограничен, если иное не указано на сайте Интернет-магазина.

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

  1. ЦЕНА ТОВАРА

3.1. Цена на каждую позицию Товара указана на сайте Интернет-магазина.

3.2. Продавец имеет право в одностороннем порядке изменить цену на любую позицию Товара.

3.3. В случае изменения цены на заказанный Товар Продавец обязуется в течение 10 дней проинформировать Покупателя об изменении цены Товара.

3.4. Покупатель вправе подтвердить либо аннулировать Заказ на приобретение Товара, если цена изменена Продавцом после оформления Заказа.

3.5. Изменение Продавцом цены на оплаченный Покупателем Товар не допускается.

3.6. Продавец указывает стоимость доставки Товара на сайте Интернет-магазина либо сообщает Покупателю при оформлении заказа Оператором.

3.7. Обязательства Покупателя по оплате Товара считаются исполненными с момента поступления Продавцом денежных средств.

3.8. Расчеты между Продавцом и Покупателем за Товар производятся способами, указанными на сайте Интернет-магазина в разделе  Контакты

  1. ОФОРМЛЕНИЕ ЗАКАЗА

4.1. Заказ Товара осуществляется Покупателем сервис сайта Интернет-магазина acf.wp-book.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. Договор купли-продажи дистанционным способом между Продавцом и Покупателем считается заключенным с момента получения Продавцом сообщения о намерении Покупателя приобрести Товар.

  1. ДОСТАВКА И ПЕРЕДАЧА ТОВАРА ПОКУПАТЕЛЮ

5.1. Продавец оказывает Покупателю услуги по доставке Товара одним из способов указанных на сайте Интернет-магазина.

5.2. Если Договор купли-продажи товара дистанционным способом (далее – Договор) заключен с условием о доставке Товара Покупателю, Продавец обязан в установленный Договором срок доставить Товар в место, указанное Покупателем, а если место доставки Товара Покупателем не указано, то по месту его жительства или регистрации.

5.3. Место доставки Товара Покупатель указывает при оформлении Заказа на приобретение Товара.

5.4. Срок доставки Товара Покупателю состоит из срока обработки заказа и срока доставки.

5.5. Доставленный Товар передается Покупателю, а при отсутствии Покупателя — любому лицу, предъявившему квитанцию или иной документ, подтверждающий заключение Договора или оформление доставки Товара.

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

5.8. Сведения об обязательном подтверждении соответствия Товара представляются в порядке и способами, которые установлены законодательством Российской Федерации о техническом регулировании, и включают в себя сведения о номере документа, подтверждающего такое соответствие, о сроке его действия и об организации, его выдавшей.

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

 

Согласен с договором

acf.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

Юрий спасибо , но не получается. Смотрите как выводятся из Рубрик-записи(делал не я)

function get_content_remont_kvartir( $tax_query ) { 	$args = array( 		'posts_per_page' => -1, 		'tax_query' => $tax_query , 	); 	query_posts($args); 	 	ob_start(); 	?> 	<?php if (have_posts()) : $c = 0; ?> 	<?php while (have_posts()) : the_post(); $c++; ?> 	<div class="flat flat-item cf<?php if ( $c == 1 || $c == 2 ) echo ' flat-item-vis" style="display:block;"'; else echo '"'; ?>> 		<div class="flat-slider-wrapper"> 			<div class="offer"><?php the_field('зеленое_поле') ?></div> 			<?php $spisokss=get_field('основные_фото'); ?> 			<ul class="slider-flat"> 			<? foreach($spisokss as $spisok_items){ ?> 				<li data-thumb="<?php echo $spisok_items['основное_фото'];?>"> 					<img src="<?php echo $spisok_items['основное_фото'];?>" alt=""> 				</li> 			<? } ?> 			</ul><!-- slider-flat --> 		</div><!-- flat-slider-wrapper --> 		<div class="flat-info"> 			<div class="address"><?php the_title(); ?></div> 			<ul> 				<li><strong>Категория:</strong> <?php the_field('категория_объекта') ?></li> 				<li><strong>Район:</strong> <?php the_field('район_объекта') ?></li> 				<li><strong>Метро:</strong> <?php the_field('метро_объекта') ?></li> 				<li><strong>Тип дома:</strong> <?php the_field('тип_дома') ?></li> 				<li><strong>Комнат:</strong> <?php the_field('количество_комнат') ?></li> 				<li><strong>Этаж:</strong> <?php the_field('этаж_объекта') ?></li> 				<li><strong>Площадь:</strong> <?php the_field('площадь_общая') ?> м<sup><small>2</small></sup> (<?php the_field('площадь_жилая') ?> м<sup><small>2</small></sup> жилая)</li> 			</ul> 			<div class="key-params"> 				<div class="ico ico-house"></div><div class="param"><?php the_field('количество_комнат') ?> комнаты</div> 				<div class="ico ico-size"></div><div class="param size"><?php the_field('площадь_общая') ?> м<sup><small>2</small></sup></div> 				<div class="ico ico-instruments"></div><div class="param"><?php the_field('тип_ремонта') ?></div> 			</div> 			<div class="price"><?php the_field('цена_ремонта') ?> р.</div> 			<div class="btn-wrap"><a href="#project<?php the_ID(); ?>" class="btn btn-link btn-watch open-modal">Посмотреть</a></div> 		</div> 		<div id="project<?php the_ID(); ?>" class="modal modal-project" style="display: none; top: 45%; opacity: 0;"> 			<span class="modal-close">X</span> 			<div class="b-1"> 				<div class="address"><?php the_title(); ?></div> 			</div> 			<div class="b-2"> 				<div class="label"> 					<div class="lab-wrap"> 						<div class="cont-for-img"><div class="key-img key-img-1"></div></div><div class="text"><div class="mid">комнаты <?php the_field('количество_комнат') ?></div></div> 					</div> 				</div> 				<div class="label"> 					<div class="lab-wrap"> 						<div class="cont-for-img"><div class="key-img key-img-2"></div></div><div class="text"><div class="mid"><?php the_field('площадь_общая') ?>м<sup><small>2</small></sup></div></div> 					</div> 				</div> 				<div class="label"> 					<div class="lab-wrap"> 						<div class="cont-for-img"><div class="key-img key-img-3"></div></div><div class="text"><div class="mid"><?php the_field('тип_ремонта') ?></div></div> 					</div> 				</div> 			</div> 			<div class="b-3"> 				<div class="wrap-sl wrap-sl-1"> 					<div class="sm-slider-wrap"> 					<ul class="pSlider"> 					 <?php $dorems=get_field('фотки_до_ремонта'); ?> 						<? foreach($dorems as $dorem){?> 							<li> 								<img src="<?php echo $dorem['фотка_до_ремонта'];?>" height="140" width="220" alt=""> 							</li> 						<? }?> 					</ul><!-- pSlider --> 					</div><!-- sm-slider-wrap --> 					<div class="sl-label">До ремонта</div> 				</div> 				<div class="wrap-sl wrap-sl-2"> 					<div class="sm-slider-wrap"> 						<ul class="pSlider"> 						<?php $vorems=get_field('фотки_во_время'); ?> 						<? foreach($vorems as $vorem){?> 							<li> 								<img src="<?php echo $vorem['фотка_во_время'];?>" height="140" width="220" alt=""> 							</li> 						<? }?> 					</ul><!-- pSlider --> 					</div><!-- sm-slider-wrap --> 					<div class="sl-label">Во время ремонта</div> 				</div> 				<div class="wrap-sl wrap-sl-3"> 					<div class="sm-slider-wrap"> 						<ul class="pSlider"> 						<?php $porems=get_field('фотки_после_ремонта'); ?> 						<? foreach($porems as $porem){?> 							<li> 								<img src="<?php echo $porem['фотка_после_ремонта'];?>" height="140" width="220" alt=""> 							</li> 						<? }?> 					</ul><!-- pSlider --> 					</div><!-- sm-slider-wrap --> 					<div class="sl-label">После ремонта</div> 				</div> 			</div> 			<div class="b-4"> 				<div class="photo"><img width="90" height="90" src="<?php the_field('фото_клиента') ?>" class="attachment-popup-photo"></div> 					<div class="cont"> 						<div class="f-name"><?php the_field('имя_клиента') ?></div> 						<div class="f-flat-sum"><?php the_field('площадь_общая') ?>м<sup><small>2</small></sup> = <?php the_field('цена_ремонта') ?> руб.</div> 						<div class="f-quote"> 							<p><?php the_field('отзыв_клиента') ?></p> 						</div> 					</div> 			</div> 			<div class="b-5"> 				<div class="b-5-text"> 					Закажите бесплатную<br>консультацию по ремонту<br>квартиры и в течение <span class="red">15 минут</span><br>с Вами свяжется специалист  				</div> 				<form class="bid-form" action=""> 					<input type="text" class="inputphone required" id="nomberk1" name="usertel" placeholder="+7(___)-___-__-__"> 					<div class="btn-wrap"><input class="btn btn-link btn-bid" type="submit" value="Отправить" onclick="yaCounter29778399.reachGoal('remont'); return true;"></div> 				</form> 			</div> 		</div> 	</div><!-- flat-item --> 	<?php endwhile; ?> 	<?php endif; ?>	 	<?php wp_reset_query() ?> 	 	<?php  	$html = ob_get_contents(); 	ob_end_clean();  		 	return $html; }

Это из записей, а мне бы со страницы различные опции , которые добавил через Advanced Custom Fields Plugin . Вот как напрямую в шаблон выводиться то что мне нужно

<div class="workers-slider-wrap"> 		<?php global $query_string; 			$remwork = query_posts($query_string.'&page=remont-kvartir'); ?> 			 			 			<?php $remworkers=get_field('ремонт_рабочие_питер'); ?> 			 			 			<ul class="workers-slider"> 			<? foreach($remworkers as $remworker){?> 				<li> 					<img src="<?php echo $remworker['фото_рабочего'];?>" height="188" width="188" alt=""> 					<p class="name"><?php echo $remworker['имя_рабочего'];?></p> 					<p class="dolj"><?php echo $remworker['должность_рабочего'];?></p> 					<div class="line"></div> 					<?php echo $remworker['опыт_рабочего'];?> 				</li> 			<? }?> 			</ul><!-- workers-slider --> 			<?php wp_reset_query();?> 		</div>

toster.ru

Часть первая. Теория

Если чувствуете себя уверенно, можно сразу перейти ко второй части.

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

Функция — get_field()

Возвращает значение заданного поля.

Это очень универсальная функция. Ее можно использовать чтобы получить значение, вывести значение (через echo), и взаимодействовать со значением. Обратите внимание, что тип возвращаемой переменной будет соответствовать типу поля (для текстового поля — это будет строка, для изображения — массив, в некоторых случаях — это может быть многомерный массив). Источник

Параметры

<?php $field = get_field($field_name, $post_id, $format_value); ?>

Функция — the_field()

Отображает значение заданного поля. Эта функция аналогична выражению “echo get_field($field_name)”. Источник

Параметры

<?php the_field($field_name, $post_id); ?>

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

Часть вторая. Практическая

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

Текстовое поле, текстовый блок

<?php the_field('text'); ?>  <?php the_field('textarea'); ?>

Изображение

Базовый способ. Отображение картинки.

<?php   $image = get_field('image');  if( !empty($image) ): ?>      <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />  <?php endif; ?>

Продвинутый способ. Разбор массива по переменным.

<?php   $image = get_field('image');  if( !empty($image) ):       // vars     $url = $image['url'];     $title = $image['title'];     $alt = $image['alt'];     $caption = $image['caption'];      // thumbnail     $size = 'thumbnail';     $thumb = $image['sizes'][ $size ];     $width = $image['sizes'][ $size . '-width' ];     $height = $image['sizes'][ $size . '-height' ];      if( $caption ): ?>          <div class="wp-caption">      <?php endif; ?>      <a href="<?php echo $url; ?>" title="<?php echo $title; ?>">          <img src="<?php echo $thumb; ?>" alt="<?php echo $alt; ?>" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />      </a>      <?php if( $caption ): ?>              <p class="wp-caption-text"><?php echo $caption; ?></p>          </div>      <?php endif; ?>  <?php endif; ?>

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

<?php   $image = get_field('image'); $size = 'full'; // (thumbnail, medium, large, full or custom size)  if( $image ) {      echo wp_get_attachment_image( $image, $size );  }  ?>

Файл

Простой способ. Вывод ссылки на файл.

<?php $myfile = get_field('file'); ?>  <a href="<?php echo $myfile['url']; ?>" >Download File</a>

Расширенный способ. Вывод ссылки, заголовка, подписи и описания файла.

<?php          $myfile = get_field('file');          if( !empty($myfile) ): ?>          <p>             <a href="<?php echo $myfile['url']; ?>" >                 Download File "<?php echo $myfile['title']; ?>"             </a><br>                          <?php echo $myfile['caption']; ?><br>              <?php echo $myfile['description']; ?>          </p>  <?php endif; ?>

Дебаг для поля с файлом

<?php   //Return value = Object, requires ACF 3.3.7+  $file = get_field('field_name');  // view array of data var_dump($file);  ?>

Календарь

Для вывода даты заданной через date picker, используем:

<?php /* *  Create PHP DateTime object from Date Piker Value *  this example expects the value to be saved in the format: yymmdd (JS) = Ymd (PHP) */  $date = DateTime::createFromFormat('Ymd', get_field('date_picker')); echo $date->format('d-m-Y');  ?>

Сортировка постов по дате заданной через поле выбора даты.

<?php  /* *  Order Posts based on Date Picker value *  this example expects the value to be saved in the format: yymmdd (JS) = Ymd (PHP) */  $posts = get_posts(array(     'meta_key' => 'custom_order', // name of custom field     'orderby' => 'meta_value_num',     'order' => 'ASC' ));  if( $posts ) {     foreach( $posts as $post )     {         setup_postdata( $post );          // ...      }      wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly }  /* *  Format examples */  $js = "yymmdd" $php = "Ymd"  $js = "dd/mm/yy" $php = "d/m/Y"  $js = "yy_mm_dd" $php = "Y_m_d"  ?>

Карта Google

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

Первый способ, с официального сайта по документации по ACF

Первая часть. Отвечает только за генерацию карты Google.

<style type="text/css">  .acf-map {     width: 100%;     height: 400px;     border: #ccc solid 1px;     margin: 20px 0; }  </style> <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script> <script type="text/javascript"> (function($) {  /* *  render_map * *  This function will render a Google Map onto the selected jQuery element * *  @type    function *  @date    8/11/2013 *  @since    4.3.0 * *  @param    $el (jQuery element) *  @return    n/a */  function render_map( $el ) {      // var     var $markers = $el.find('.marker');      // vars     var args = {         zoom        : 16,         center        : new google.maps.LatLng(0, 0),         mapTypeId    : google.maps.MapTypeId.ROADMAP     };      // create map                     var map = new google.maps.Map( $el[0], args);      // add a markers reference     map.markers = [];      // add markers     $markers.each(function(){          add_marker( $(this), map );      });      // center map     center_map( map );  }  /* *  add_marker * *  This function will add a marker to the selected Google Map * *  @type    function *  @date    8/11/2013 *  @since    4.3.0 * *  @param    $marker (jQuery element) *  @param    map (Google Map object) *  @return    n/a */  function add_marker( $marker, map ) {      // var     var latlng = new google.maps.LatLng( $marker.attr('data-lat'), $marker.attr('data-lng') );      // create marker     var marker = new google.maps.Marker({         position    : latlng,         map            : map     });      // add to array     map.markers.push( marker );      // if marker contains HTML, add it to an infoWindow     if( $marker.html() )     {         // create info window         var infowindow = new google.maps.InfoWindow({             content        : $marker.html()         });          // show info window when marker is clicked         google.maps.event.addListener(marker, 'click', function() {              infowindow.open( map, marker );          });     }  }  /* *  center_map * *  This function will center the map, showing all markers attached to this map * *  @type    function *  @date    8/11/2013 *  @since    4.3.0 * *  @param    map (Google Map object) *  @return    n/a */  function center_map( map ) {      // vars     var bounds = new google.maps.LatLngBounds();      // loop through all markers and create bounds     $.each( map.markers, function( i, marker ){          var latlng = new google.maps.LatLng( marker.position.lat(), marker.position.lng() );          bounds.extend( latlng );      });      // only 1 marker?     if( map.markers.length == 1 )     {         // set center of map         map.setCenter( bounds.getCenter() );         map.setZoom( 16 );     }     else     {         // fit to bounds         map.fitBounds( bounds );     }  }  /* *  document ready * *  This function will render each map when the document is ready (page has loaded) * *  @type    function *  @date    8/11/2013 *  @since    5.0.0 * *  @param    n/a *  @return    n/a */  $(document).ready(function(){      $('.acf-map').each(function(){          render_map( $(this) );      });  });  })(jQuery); </script>

Вторая часть. Выводит на карте единичный маркер.

<?php   $location = get_field('location');  if( !empty($location) ): ?> <div class="acf-map">     <div class="marker" data-lat="<?php echo $location['lat']; ?>" data-lng="<?php echo $location['lng']; ?>"></div> </div> <?php endif; ?>

Другой вариант второй части, для вывода нескольких маркеров на карте.

<?php if( have_rows('locations') ): ?>     <div class="acf-map">         <?php while ( have_rows('locations') ) : the_row();               $location = get_sub_field('location');              ?>             <div class="marker" data-lat="<?php echo $location['lat']; ?>" data-lng="<?php echo $location['lng']; ?>">                 <h4><?php the_sub_field('title'); ?></h4>                 <p class="address"><?php echo $location['address']; ?></p>                 <p><?php the_sub_field('description'); ?></p>             </div>     <?php endwhile; ?>     </div> <?php endif; ?>

Источник

rightblog.ru


You May Also Like

About the Author: admind

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

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

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