Использование произвольных полей (custom fields) в WordPress
Wednesday, 16 Dec 09 в 1:55Сначала расскажу о том, что такое произвольные поля (custom fields) для WordPress и как их использовать, а затем приведу парочку примеров для применения. Дело в том, что в некоторых своих блогах я весьма успешно использую эту конструкцию, поэтому решил поделиться с вашим хорошим советом. Итак, произвольные поля вы можете найти в админке WordPress в одном из блоков под текстовым редактором для создания новых записей или страниц. Выглядит он примерно следующим образом:

Здесь слева располагается имя поля, а справа его значение. В качестве имени вы можете выбрать несколько вариантов по умолчанию, у меня там было title, description, keywords. Кстати после заполнения значений плагина All in One Seo Pack для увеличение трафика с поисковиков все значения (заголовок, описание и ключевые слова) копируются в эти произвольные поля. То ли они просто дублируются, то ли можно обходиться без вышеупомянутого плагина, хотя, конечно, тот выполняет еще ряд полезных функций.
Так вот, в WordPress custom fields можно также добавлять свои поля. Для этого кликаем по ссылке «Добавить новое», вводим имя (ключ) – используем для этого только английские символы, а справа указываем значение поля, после чего нажимаем на кнопку «Добавить произвольное поле». Например, введем в поле значения некоторый текст по типу «hello world» и зададим ему имя mytext.

Следующим шагом является вывод произвольного поля custom fields в нашем WordPress шаблоне. Для этого используем функцию get_post_meta($post_id, $key, $single). Переменные здесь обозначают:
- post_id – ID поста, из которого берутся произвольные поля. Чаще всего использует значение текущей статьи, поэтому параметр равен $post->ID.
- key – имя произвольного поля.
- single – установлен в true, если требуется вывести единичный результат в виде строки. Значение false используется для отображения всего массива данных с произвольными полями. Чаще всего (в том числе и у нас в примере) используется true.
То есть заходим в шаблон WordPress блога, например, в файл единичного отображения поста single.php. Там после отображения текста статьи функцией the_content добавляем нужную строку для вывода только что созданного custom fields.
<div class="post"> <h1><?php the_title(); ?></h1> <?php the_content('') ?> <?php echo (get_post_meta($post->ID, 'mytext', true)); ?> </div>
Функция echo выводит текст в php. После этого сохраняем шаблон и проверяем как работает наше произвольное поле – заходите на страницу и пост, где вы это поле добавили, ведь оно будет отображаться только там. Точно также для других статей потом придется заходить в текстовый редактор, но теперь уже не добавлять новое поле, а выбирать его из списка по имени.
Для чего же можно использовать произвольные поля (custom fields) в WordPress. Я могу назвать, по крайней мере, три разных варианта:
1. Вывод различного рода текстов для статей – автор, источник статьи, редакторы, используемая литература ну и любой другой текст, что теоретически может быть указан для поста. Зачем выводить текст, если можно добавить его в саму статью? – спросите вы. Все очень просто, с помощью произвольного поля вы сможете вывести его в любом месте шаблона, задав для него другое оформление. Иногда такие ситуации возникают.
2. Спонсорские ссылки и постовые. В последнее время все, кто заказывают постовые, хотят чтобы они транслировались на главную страницу блога, а у меня есть проекты, где там выводится только часть поста со ссылкой «Читать далее». В таком случае вы добавляете html код ссылки в custom fields.
После чего выводите его не только на странице с отдельным отображением поста, а еще и на главной. Для этого используется та же самая функция get_post_meta.
3. Последний вариант – это вывод картинки для поста. Иногда бывают ситуации, когда хочется сделать в шаблоне все красиво и аккуратно, чтобы для каждой статьи выводились картинки одинаковой ширины и высоты. Либо отображать рисунок, которого нет в тексте записи. Для этого также подойдут произвольные поля (custom fields) в WordPress. Для этого создаем поле с названием, например, mythumb, где в качестве значение указываем название изображения (его предварительно заливаем на фтп), а в шаблон добавляем код по типу:
<div class="entry"> <?php $mythumb = get_post_meta($post->ID,'mythumb', true); ?> <img src="http://mysite.com/wp-content/uploads/ <? echo strtolower($mythumb); ?>.jpg" width="100" alt="" /> <?php the_excerpt(); ?> </div>
Здесь, кстати, используется немного другой принцип, когда значение произвольного поля считывается сначала в переменную $mythumb, а затем уже подставляется в нужное место – можно делать и так, и так, разницы нет никакой.
Вот, в принципе, и все. На последок могу подсказать одну полезную статью http://www.sonika.ru/blog/wordpress/custom-fields-wordpress.htm о произвольных полях (custom fields) в WordPress, где приведены еще примеры использования этой функции. Если будут какие-то вопросы, пишите в комментариях.
P.S. Постовой. Читаем посты категории Обзор заведений в персональном блоге Сергея Брусенцова.
Учите английский? Только наши курсы английского помогут Вам в обучении. Учите английский просто.
Мечтаете наблюдать за звездами? Купите телескоп и наслаждайтесь. Звезды станут ближе к Вам.

Очень странно, что нет варианта “делаем файлообменник на WP”. Ведь реально дополнительное поле позволит без проблем добовлять ссылку вида “скачать…”.
Отличная организация вывода дополнительной информации
richkeeper, спасибо за дополнение. Вот она сила комментирования – читатели помогают развить и расширить тему поста. Теперь вспоминаю, как на некоторых сайтах шаблонов вордпресс видел красивую ссылку скачать с иконками – видимо, через custom fields и сделана.
Нужно ещё учесть, что данные этих полей по умолчанию не транслируются в поток рсс. Нужно править файл, отвечающий за отдачу записей в рсс. Правда не проверял, сработает ли…
d9d9_Sun, хм, интересное замечание! Я как-то даже не обратил на это внимание, с одной стороны читатели rss ридера уж точно останутся без рекламы (постовых), но с другой не будет работать идея с полезным текстом (ссылкой на скачивание файла или именем автора). Придется действительно править файл.
До этой статьи не знал о существовании произвольных полей в Wordpress. Насколько понял, их нельзя использовать вместо стандартных полей какой либо части CMS как, например в drupal. Весьма жаль. Штука весьма удобная, или может, есть какие либо модули для подобного функционала?
Полезная фишка. Раньше просто добавлял то что нужно в посто но теперь буду использовать поля. Спасибо!
Наверное дополнительными полями многие популярные блоги пользуются для вставки постовых… Это очень удобно таки…
Спасибо за подсказку как можно их использовать :)
А вот такой вопрос, для каждого поста при вставки тех же постовых придётся задавать разные “key – имя произвольного поля” или один раз можно для вставки постовых создать произвольное поле adv (например), а уж значение (где будут указываться рекламные ссылки) каждый раз задавать новое?
Andrew S, ключ создается один раз, после чего при публикации следующей статьи, выбираешь его из списка и вводишь уже другое значение.
Спасибо за ответ , Tod =)
Здравствуйте!
Я недавно начал осваивать ВордПресс.
Подскажите как сделать превью миниатюру видео с ютюба как здесь judovision.org?
Насколько я понимаю это сделано с помощью произвольных полей
Буду благодарен за ответ!
Виктор, об этом я рассказывал в статье вставка Youtube видео в wordpress шаблон – рекомендую почитать, найдете ответы на свои вопросы:) Хотя на указанном вами сайтов, насколько я понимаю превью делаются вручную, т.к. это картинки.
Всем добрый день. Подскажите пожалуйста как вывести в верхней части поста, там где автор, дата и т.д ссылку на определенные сайты. Пример – Источник – Вести.ру а под ним можно было бы ставить ссылку на источник статьи. Автор – Имя автора. Хотелось бы добавлять ссылки и имя автора с админ панели. Я так понимаю что тут связано с custom fields, тот код который у вас приведен выше у меня в шаблоне есть, но как его правильно использовать я не знаю. Не могли бы Вы мне помочь разобраться с этой не легкой но очень нужной для меня задачей. Если нужен код single.php могу выложить или отправить, только скажите куда.
Аркадий, информации в статье должно хватить для работы, можно еще немного поискать примеров использования custom fields. У меня, к сожалению, нет свободного времени на подробное изучения шаблона вашего сайта single.php и добавление туда нужного кода. Поспрашивайте на форумах по вордпресс, возможно, там подскажут конкретное решение.
Уважаемый Tod. Информации в вашей статье очень мало для того что бы сделать то что мне нужно, у вас в основном идет описание а не примеры создания определенного атрибута. За ответ спасибо.