Вывод кастомных полей пользователя


Содержание материала:

Вывод кастомных полей

Добрый день.
Возникла необходимость сделать вывод кастомных полей из случайных записей (не все записи имеют кастомные поля).
Хочу сделать, чтобы они отображались в сайдбаре 2 штуки, при этом со ссылкой на запись.
Сам вывод я уже сделал, остался вопрос выборки полей из 2-х случайных записей (в которых они есть).
Подскажите как это сделать?
Спасибо.

Меню пользователя @ Dr_i-glu4IT
26.05.2015, 15:48

Url в кастомных post
1. есть стандартный post, если при редактировании выбрать его размещение в рубрике, то его адрес.

Получение кастомных постов кастомной категории
Здравствуйте. Создал тип поста с помощью ф-ции register_post_type, создал для него категории с.

Не отображается список кастомных постов по встроенной Категории
День добрый! Добавил (с помощью Pods) кастомные типы Записей. Подключил к этим кастомным Записям.

Кастомные поля для кастомных типов постов
Всем доброго времени суток. Мне необходимо добавить свой тип записей на wordpress. Т.е. вот есть.

404 в запросах пагинации при кастомных типах записей
Создаю кастомный тип и подключаю шаблон add_action( ‘init’, ‘create_video’ ); function.

WordPress.org

Русский

Поддержка → Проблемы и решения → Пролема вывода кастомных полей ACF через цикл (Повторитель -> Объект записи)

Пролема вывода кастомных полей ACF через цикл (Повторитель -> Объект записи)

Всем привет. Вопрос по выводу кастомного типа записей с полями созданными через ACF плагин для WP.
У меня есть 2 типа записей (назовём «A» и «B») между которыми должна быть связь.
Записи типа A выводятся через циклы на разных страницах через get_posts() в виде таблицы и некоторые столбцы заполнены данными записей типа «B».
(например, вывод количества привязанных постов типа «B» к посту типа «A»)

Поля и зависимости создаю с помощью ACF плагина. (Повторитель -> Объект записи)

Проблема: Нехватка знаний в реализации данного цикла, не судите строго, сам занимаюсь фронтом.

Прошу помощи с реализацией или наводке на решение.

  • Тема изменена 9 мес., 2 нед. назад пользователем wotkad.
  • Тема изменена 9 мес., 2 нед. назад пользователем wotkad.
  • Тема изменена 9 мес., 2 нед. назад пользователем wotkad.
  • Тема изменена 9 мес., 2 нед. назад пользователем wotkad.

Зачем такие сложности для связи разных типов постов, да еще и через ACF — это будет со временем очень подтормаживать.

Лучше использовать качественные решения от проверенные временем программистов. Например, плагин Posts 2 Posts от scribu. Не смотрите на дату обвновления. Плагин отлично справляется со своей задачей. Хранит связи в отдельной таблице с индексами (это положительно сказывается на быстродействии), имеет метатаблицу для связей (можно хранить доп. информацию о связи).

Полная документация с примерами есть в официальном репозитории на Github.

Блок произвольных полей в админке WordPress своими руками

Чтобы не создавать произвольные поля полностью в ручную, используйте мой PHP класс для удобно создания метаполей записи.

Чтобы вывести подобный блок для элементов таксономий, смотрите описание события: (taxonomy)_edit_form_fields. Также смотрите ответ на вопрос: Метаполя для рубрик (таксономий) в WordPress

В в одная часть

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

Каждый, кто достаточно близко знаком с WordPress неоднократно встречался с понятием «произвольные поля» и с их помощью решал некоторые нетривиальные задачи.

Произвольные поля в WordPress — очень удобный инструмент, когда нужно «прикрепить» к конкретному посту какие-либо дополнительные данные. Такими данными может быть что угодно, начиная от логических true/false (1/0), заканчивая объемными текстами, массивами и прочим. К примеру, мы можем создать новое произвольное поле Title и в его значение написать текст (альтернативный заголовок поста), затем в коде шаблона использовать следующий код, чтобы вывести этот текст:

Следует отметить, что функцию get_post_meta() можно использовать за пределами Цикла WordPress, т.е. где угодно в шаблоне. В данном примере мы используем её в части документа, чтобы дать html странице заголовок отличный от заголовка самой статьи (иногда полезно для SEO).

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

Произвольные поля используются в WordPress сплошь и рядом, различными плагинами оценки постов (WP-PostRatings), SEO плагинами (Platinum SEO Pack), позволяющими указать Title, Description, Keywords поста, моим плагином для создания миниатюр (Kama Thumbnail) и многими другими плагинами. Образно говоря, каждая четвертая нестандартная задача решается посредством произвольных полей, поэтому если вы еще не знаете как их использовать, то ознакомьтесь с этим мануалом. А ниже мы поговорим о том, как создать отдельный блок с нужными нам произвольными полями и как сделать это без плагинов.

Мало кто знает, что если создать произвольное поле ключ которого (название) начинается на _ (нижнее подчеркивание), например _my_special_key , то такое поле не будет выводиться в выпадающем списке произвольных полей при редактировании постов и будет считаться «внутренним» произвольным полем, которое используется системой. Создать такое поле можно только запросом к БД, например, используя функции add_post_meta() или update_post_meta().

Прежде чем начать создание

Забегая вперед, скажу что нижеследующие описание будет полезно, только тем кто хоть немного разбирается в HTML, т.е. если вы совсем не в зуб ногой в HTML и PHP, то читать все что ниже — пустая трата времени.

Предположим, что мы делаем сайт на заказ, и при этом на сайте используются произвольные поля. Объяснять заказчику, какое поле выбирать из списка, чтобы добавить ту или иную информацию к посту, проблематично, к тому же это быстро забывается. Именно поэтому уже давно написаны плагины, благодаря которым можно легко создать блок произвольных полей, где не нужно выбирать поле (ключ), и только потом вписывать значение. В таких блоках нужно сразу вписывать значение и есть возможность описать каждое поле, при одном взгляде на которые становится понятно его назначение. Блок, который мы сейчас создадим будет выглядеть так:

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

Что мы видим? — Ненужные для посторонних глаз ключи произвольных полей (о них я говорил выше), которые к тому же нужно еще и выбирать из выпадающего списка (а их там может быть совсем не 4, а куда больше. ): description , robotmeta , select и title . Разумеется, создать мета блок произвольных полей — отличная идея.

Топ-пост этого месяца:  Создание собственного класса ресайза изображений

Создаем мета блок произвольных полей

Для создания метаблока нам понадобятся всего 2 хука: add_meta_boxes и save_post, функция add_meta_box() и некоторые знания html и php . Добавляем следующий код в файл темы functions.php :

#1. Создадим новый мета блок для постов

Назовем его «Дополнительные поля»:

#2. Заполним этот блок полями html формы

Делается это через, указанную в add_meta_box() функцию extra_fields_box_func() . Именно она отвечает за содержание мета блока:

Все названия полей я оформил в массив extra[] , чтобы потом проще было обработать эти данные.

Спрятанное поле name=»extra_fields_nonce» , нужно для проверки при сохранении данных.

#3. Сохраняем данные

На этом этапе, мы уже создали блок произвольных полей, теперь нужно обработать данные полей при сохранении поста. Обработать, значит записать их в в базу данных или удалить от туда. Для этого используем хук save_post, который срабатывает в момент сохранения поста. В этот момент мы получим данные из массива extra[] и обработаем них:

Вот и все, блок произвольных полей готов!

Теперь, изменяя html код, мы можем редактировать содержимое мета блока. Но не забываем, что названия полей имеют вид массива со значением ключа произвольно поля: name=»extra[meta_key]» .

Блок произвольных полей для произвольного типа записей

Если нужно создать блок для другого типа записей, допустим page (для страниц), то регистрируем еще один мета блок и описываем его html код в новой функции, которую так же нужно указать при регистрации блока ( extra_fields_box_page_func ). Функцию обработки полей при сохранении поста создавать уже не надо, главное указать названия полей в виде массивов extra[] :

Сложности с типом checkbox

Недостатком такого метода является то, что массив extra[] , обязательно должен быть определен, пусть даже он передает пустое значение иначе поле не будет обработано при сохранении данных. В связи с этим, возникает проблема при использовании типа checkbox : , потому что checkbox передает данные только, если галочка выставлена и вообще ничего не передает, если галки нет. А нам нужно чтобы он передавал пустое значение, чтобы код удалял значение, если оно было сохранено до этого.

Чтобы обойти этот «недуг» я сделал так: перед полем чекбокса создаем hidden поле с name как у чекбокса и пустым значением. И получается, если галочка стоит, то значение hidden поля перебивается, если галки нет, то берется пустое значение hidden поля.

Т.е. checkbox нужно вызывать так:

Такой же трюк иногда может пригодится и для поля с типом radio.

Пример реального кода с типами checkbox:

Еще один пример создания метабокса (ООП)

Этот пример показывает как создать одно поле, в котором будет храниться массив данных. Массив можно расширять или уменьшать через нажатие на + или удалить (работает на скрипте).

Это пример создание поля «повторитель», как у плагина ACF (поле repeater в платной версии).

В результате получим такой метабокс:

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

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

Advanced Custom Fields (ACF) — пожалуй, самый популярный и гибкий плагин для создания произвольных полей. С хорошей документацией.

Custom Field Suite — похож на ACF, только менее навороченный.

Carbon Fields — похож на ACF только без визуальной настройки, все делается в коде. Хорошо подойдет для разработчиков. Бесплатный.

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

Custom Field Template — настоящий комбайн. С ним можно создать любую форму, для любых типов постов, указать формы для отдельных постов и рубрик. Думаю в большинстве случаев, можно обойтись без такого комбайна.

  • kc-settings — ураган а не плагин, хоть и не сторонник плагинов, но рекомендую.
  • меню

    Простота в настройке блока произвольных полей при создании его таким способом теряется! Я ни в коем случае не хочу сказать, что создавать блоки таким способом лучше чем использовать плагины. Однако, такой подход более гибок, потому что мы можем создать абсолютно любые поля и расположить/стилизовать их как нам вздумается.

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

    Это скорее обучающая статья и для многих плагины реализующие эту задачу будут лучшим решением.

    Как вывести в WP кастомные поля или записи не в цикле?

    Хочу сделать для одного блока кастомную запись и вывести заголовок и описание. Но если создать в этой кастомной записи еще один пост то будет уже 2 поста, если поставить лимит на вывод posts_per_page то будет показана последняя запись. Дело в том что это не новость, когда при добавлении новой она крутится в цикле, это просто текст на сайте который нужно менять через админку и его не нужно зацикливать. Без цикла код не работает. Как поступить?

    Вывод как кастомную запись с заголовком и описанием.

    Вывод как кастомные поля

    • Вопрос задан более двух лет назад
    • 873 просмотра

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

    Хочу сделать для одного блока кастомную запись и вывести заголовок и описание. Но если создать в этой кастомной записи еще один пост то будет уже 2 поста

    Да вы верно поняли. Есть главная страница и на ней 5 экранов. И в одном экране есть заголовок и описание. Вот я и решил создать кастомный тип поста для этого блока. Но если создать еще один пост этого типа то их будет 2.

    «Или если это главная страница, то создайте пару полей на главной странице и выводите их.» т.е. создать кастомный тип поста «Главная» и там уже кастомные поля? Но получается то же самое. Стоит мне создать в этом кастомном посте «Главная» еще один пост этого типа.

    Virtuemart: Вывод значения кастомного поля

    Понадобилось вывести значение кастомного поля на странице каталога товаров (у меня эти файлы лежат в папке с шаблоном основным, правил тут /com_virtuemart/category/default.php). Все данные кастомных полей хранятся в $product->customfields

    делаем поиск по массиву с учетом нужного нам >

    а если кастомное поле нужно вывести на странице товара (например добавить значение в тайтл), то выборка делаем вот так (правится тут /com_virtuemart/productdetails/default.php):

    если кто-то не знает, то тайтл может вытянуть текущий и сохранить новый вот так:

    Вывод произвольных полей ACF

    Рассмотрим вывод произвольных полей, созданных в Advanced Custom Fields для WordPress. А также, как вывести произвольные поля для терминов таксономии, например, «Рубрики» в шаблоне category.php

    Тип поля — текст , область текста , число

    Тип поля — Изображение (вывод URL)

    Тип поля — файл (вывод URL)

    Тип поля — медиа

    Вывод полей ACF из терминов таксономии

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

    Оно (поле) у нас благополучно появится в рубриках

    10 Урок. Вывод кастомного контента CPT и пользовательских полей ACF на главную страницу.

    Выводим пользовательский тип контента на главную страницу WordPress. Выводим пользовательские типы полей из плагина ACF на сайт на главную страницу. Выводим свой размер миниатюры (превью для поста) в тему WordPress.

    Топ-пост этого месяца:  Раздел посвященный установке и настройке Wordpress

    СКАЧАТЬ МАКЕТ: #!DosD0S4Q!fyI7rDOal851MbDACNHHQKl4oumDbzFsfCiRkzdtaq8

    • • •
    Данное видео входит в серию из 11 уроков:
    Урок 1:
    Урок 2:
    Урок 3:
    Урок 4:
    Урок 5. Делаем 2 слайдера на OwlCarouse:
    Урок 6. Мобильная верстка:
    Урок 7. Установка CMS WordPress на хостинг:
    Урок 8. Перенос верстки на WordPress:
    Урок 9. Кастомные типы записей и полей:
    Урок 10. Вывод контента и полей на главную страницу:
    Урок 11. Перенос сайта на хостинг:


    Плейлист серии уроков:

    Бесплатный виджет обратной связи на сайт Spikmi:

    Надежный хостинг для ваших сайтов HandyHost. Ссылка с промокодом на 2 бесплатных месяца хостинга:

    �� Бесплатный курс по верстке сайтов:
    �� Курс для начинающих «Профессия: Верстальщик»:
    �� Продвинутый курс «Веб-разработчик. Frontend и Backend»:

    �� Сайт школы:
    �� Телеграм-чат для верстальщиков:

    Плагины произвольных полей — Custom Field Suite и Advanced Custom Fields

    Произвольные поля в WordPress (Custom Fields) или как их еще называют пользовательские поля — очень полезная фишка. С их помощью вы сможете добавить на страницу/пост сайта любой контент, который будет выводится в определенном месте шаблона. По умолчанию в системе пользователю доступно задание лишь нескольких базовых форматов данных для записи: заголовок, текст, МЕТА (если установлены плагины) и т.п. Используя функцию произвольный полей, получится внедрить дополнительные нужные вам информационные блоки. Например, недавно на одном проекте я реализовал несколько объектов: иконку для страницы, оригинально оформленные контакты в одноименном разделе, блок категорий товаров, карту Google Maps + слайдер картинок. Сегодня рассмотрим два полезных плагина по теме — это Custom Field Suite и Advanced Custom Fields.

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

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

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

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

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

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

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

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

    • 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’ );

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

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

    echo CFS()->get( ‘first_name’, 71 );

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

    $loop = CFS()->get( ‘gallery’ ); foreach ( $loop as $row )

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

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

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

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

    Advanced 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 линк, таксономия, объект поста, ссылка на объект.
    Топ-пост этого месяца:  Как сделать покупку в 1 клик для вариативных товаров

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

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

    Кстати, если знаете еще какие-то плагины произвольных полей для WordPress напишите о них в комментариях.

    Все о WEB программировании

    WEB программирование от А до Я

    Заказать сайт:

    Социальные сети:

    Партнеры:

    Пользовательские поля WordPress

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

    Первое, что нужно понять: Что же такое пользовательские поля в WordPress.

    Что такое пользовательские поля WordPress?

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

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

    Вторая часть — это информация об этом конкретном контенте. Например, название, автор, дата, время и т. д. Эта информация и называется метаданными.

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

    А затем включить опцию настраиваемых полей.

    Теперь мы увидим область «Произвольные поля» под редактором:

    Добавление пользовательских полей в WordPress

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

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

    После необходимо нажать «Добавить произвольное поле» и обновить или опубликовать наше сообщение.

    Мы с вами добавили кастомное поле. Теперь при добавлении нового сообщения (страница, запись в блог) мы уже из списка можем выбрать данное поле.

    Но наше поле не отображается.

    Отображение пользовательских полей в WordPress

    Чтобы отобразить пользовательское поле на сайте, нам нужно отредактировать файлы темы WordPress.

    Если Вы не знаете, как выводятся посты в WordPress, то прочтите статью на этом блоге «Создание темы для WordPress. Часть 3. Вывод постов»
    Теперь внутрь цикла:

    Нужно вставить следующий код:

    Где key – это имя нашего поля. В моем случае:

    Давайте посмотрим, что получилось

    Наше поле отображается.

    Теперь давайте рассмотрим несколько хитростей работы с пользовательскими полями.

    Скрыть пустые пользовательские поля

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

    Помните, ключ phone заменяем на название поля.

    Добавление нескольких значений в пользовательское поле

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

    Однако код, в приведенных выше примерах, сможет отображать только одно значение.

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

    Ключ phone меняем на название поля.
    В этом примере мы изменили последний параметр функции get_post_meta на false. Этот параметр определяет, должна ли функция возвращать одно значение или нет. Установка его в значение false позволяет вернуть данные в виде массива, который затем отображается в цикле foreach.

    Отображать пользовательские поля за пределами цикла в WordPress

    Чтобы отобразить пользовательские поля вне цикла WordPress, добавьте следующий код:

    Заключение.

    Мы с вами рассмотрели:

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

    Выводим дополнительные столбцы для кастомных публикаций в админке WordPress

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

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

    Я покажу как добавить столбцы в список записей и вывести их значения.

    Легче показывать на каком то примере. Для начала нам нужен кастомный тип публикации. Как их регистрировать в wordpress читайте тут.

    Я создам тип материала — филиалы (filials) с описанием представительств компании в разных городах России.

    У филиала будет собственный словарь терминов — тип филиала (fil_type). Я буду указывать, прикрепляя термины данного словаря, что это за филиал. К примеру, это может быть «склад», «офис», «розничная точка» или «производство».

    Добавленные custom_fields, я буду использовать для указания города, соответствующего филиалу. В редакторе создам произвольное поле — City.

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

    Нам помогут две зацепки:

    • Фильтр (filter) manage__posts_columns — передаёт список столбцов для таблицы;
    • Действие (action) manage_posts_custom_column — позволяет задавать значения в этих столбцах.
    Добавить комментарий