Использование произвольных полей (Custom Fields) в разработке темы WP

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

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

Именно для хранения этих параметров мы и будем использовать произвольные поля.

Итак, перейдем в панель администратора WordPress, на страницу добавления поста: «Записи» -> «Добавить новую».

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

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

Добавим нужные нам поля, дав им соответствующие имена и присвоив необходимые значения. Для добавления нового поля используем ссылку «Введите новое», в поле «Имя» вводим имя переменной, которое мы впоследствие будем использовать для обращению к данному полю (соблюдаем правила именования переменных — никакой кирилицы и спецсимволов), например, для нашего случая: firm, size, price.

В поле «Значение» вводим произвольные данные. После заполнения пары «Имя — Значение» для каждого поля нажимаем кнопку «Добавить произвольное поле» для добавления последующего.

Читайте также:  Концепция современного дизайна

Пример заполненной формы дополнительных полей — на скриншоте ниже.

Заполняем остальные необходимые поля для поста — название товара вводим как заголовок поста, описание и иллюстрации — в основное поле содержимого поста, а так же загружаем «Миниатюру записи» для использования в анонсах (о том, как реализовать поддержку миниатюр для WP темы — отдельная статья моем блоге). Жмем кнопку «Опубликовать» (или «Обновить», если запись уже была опубликована).

Таким образом, мы добавили к нашей записи три дополнительных поля: firm, size, price. Теперь разберемся, как использовать их значения для вывода на страницах сайта. Рассмотрим на примере «стандартного» цикла (WordPress loop), выводящего анонсы записей:

[sourcecode language=»php»]
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<div class="box">

<h2><?php the_title();?></h2>

<?php the_post_thumbnail(‘thumbnail’);?>

<?php the_excerpt();?><br />

<?php

$firm = get_post_custom_values(‘firm’);

$price = get_post_custom_values(‘price’);

$size = get_post_custom_values(‘size’);

?>

Производитель: <?php echo $firm[0];?><br />

Размер: <?php echo $size[0];?><br />

Цена: <?php echo $price[0];?> рублей.

</div>

<?php endwhile; else: ?>

<p>Товаров не найдено…</p>

<?php endif; ?>
[/sourcecode]

Читайте также:  Реализация поддержки миниатюр в темах Wordpress

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

get_post_custom_values($key, [$post_id])

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

Функция get_post_custom_values() возвращает массив значений (т.к. у каждого дополнительного поля может быть несколько значений). Записываем этот массив в переменную (например $price) и для выводим его первый элемент ($price[0])

Для примера использования нескольких значений дополнительного поля, вернемся в панель администратора, на страницу редактирования записи, и добавим еще одно дополнительное поле с именем «price» и значением, отличным от первого, например «10 200″ (пусть это будет некая акционная цена со скидкой). Тогда, мы сможем использовать следующий код для обращения к значениям поля и их вывода:

[sourcecode language=»php»]
<?php $price = get_post_custom_values(‘price’);?>

Цена обычная: <?php echo $price[0];?> рублей.

Цена со скидкой: <?php echo $price[1];?> рублей.

[/sourcecode]

Вам может быть интересно: