Использование произвольных полей (custom fields) в WordPress

Wednesday, 16 Dec 09 в 1:55

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

произвольные поля WordPres

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

Так вот, в WordPress custom fields можно также добавлять свои поля. Для этого кликаем по ссылке «Добавить новое», вводим имя (ключ) – используем для этого только английские символы, а справа указываем значение поля, после чего нажимаем на кнопку «Добавить произвольное поле». Например, введем в поле значения некоторый текст по типу «hello world» и зададим ему имя mytext.

custom fields WordPres

Следующим шагом является вывод произвольного поля 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. Постовой. Читаем посты категории Обзор заведений в персональном блоге Сергея Брусенцова.
Учите английский? Только наши курсы английского помогут Вам в обучении. Учите английский просто.
Мечтаете наблюдать за звездами? Купите телескоп и наслаждайтесь. Звезды станут ближе к Вам.

Понравился пост? Подпишись на обновления блога по RSS для блоггеров и вебмастеровRSS, RSS для блоггеров и вебмастеровEmail или twitter для блоггеров и вебмастеровtwitter!
Добавить комментарий

Комментариев - 16 для данного поста

  1. richkeeper Пишет:

    Очень странно, что нет варианта “делаем файлообменник на WP”. Ведь реально дополнительное поле позволит без проблем добовлять ссылку вида “скачать…”.

  2. Sosnovskij Пишет:

    Отличная организация вывода дополнительной информации

  3. Tod Пишет:

    richkeeper, спасибо за дополнение. Вот она сила комментирования – читатели помогают развить и расширить тему поста. Теперь вспоминаю, как на некоторых сайтах шаблонов вордпресс видел красивую ссылку скачать с иконками – видимо, через custom fields и сделана.

  4. @ d9d9_Sun Пишет:

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

  5. Tod Пишет:

    d9d9_Sun, хм, интересное замечание! Я как-то даже не обратил на это внимание, с одной стороны читатели rss ридера уж точно останутся без рекламы (постовых), но с другой не будет работать идея с полезным текстом (ссылкой на скачивание файла или именем автора). Придется действительно править файл.

  6. yarroha Пишет:

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

  7. upgoing Пишет:

    Полезная фишка. Раньше просто добавлял то что нужно в посто но теперь буду использовать поля. Спасибо!

  8. Twin Пишет:

    Наверное дополнительными полями многие популярные блоги пользуются для вставки постовых… Это очень удобно таки…
    Спасибо за подсказку как можно их использовать :)

  9. @ Andrew S. Пишет:

    А вот такой вопрос, для каждого поста при вставки тех же постовых придётся задавать разные “key – имя произвольного поля” или один раз можно для вставки постовых создать произвольное поле adv (например), а уж значение (где будут указываться рекламные ссылки) каждый раз задавать новое?

  10. Tod Пишет:

    Andrew S, ключ создается один раз, после чего при публикации следующей статьи, выбираешь его из списка и вводишь уже другое значение.

  11. @ Andrew S. Пишет:

    Спасибо за ответ , Tod =)

  12. @ Виктор Пишет:

    Здравствуйте!

    Я недавно начал осваивать ВордПресс.
    Подскажите как сделать превью миниатюру видео с ютюба как здесь judovision.org?
    Насколько я понимаю это сделано с помощью произвольных полей

    Буду благодарен за ответ!

  13. Tod Пишет:

    Виктор, об этом я рассказывал в статье вставка Youtube видео в wordpress шаблон – рекомендую почитать, найдете ответы на свои вопросы:) Хотя на указанном вами сайтов, насколько я понимаю превью делаются вручную, т.к. это картинки.

  14. Аркадий Пишет:

    Всем добрый день. Подскажите пожалуйста как вывести в верхней части поста, там где автор, дата и т.д ссылку на определенные сайты. Пример – Источник – Вести.ру а под ним можно было бы ставить ссылку на источник статьи. Автор – Имя автора. Хотелось бы добавлять ссылки и имя автора с админ панели. Я так понимаю что тут связано с custom fields, тот код который у вас приведен выше у меня в шаблоне есть, но как его правильно использовать я не знаю. Не могли бы Вы мне помочь разобраться с этой не легкой но очень нужной для меня задачей. Если нужен код single.php могу выложить или отправить, только скажите куда.

  15. Tod Пишет:

    Аркадий, информации в статье должно хватить для работы, можно еще немного поискать примеров использования custom fields. У меня, к сожалению, нет свободного времени на подробное изучения шаблона вашего сайта single.php и добавление туда нужного кода. Поспрашивайте на форумах по вордпресс, возможно, там подскажут конкретное решение.

  16. Аркадий Пишет:

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

Оставить комментарий (правила комментирования)