Дополнительные поля wordpress постов

Каждый, кто пишет посты в wordpress, наверняка ни раз видел на странице редактирования или добавления нового поста панель, которая называется “Дополнительные поля”.

В первую очередь они предназначены для заполнения meta-полей вроде Title, Keywords или Description. Но на самом деле, область их применения можно значительно расширить.
Например, у нас на блоге каждый пост начинается с небольшой картинки, которая дает понять, о чем будет идти речь в посте. Чтобы вставить эту картинку в пост, нам нужно каждый раз добавлять в начало статьи небольшую таблицу, в одной ячейке которой будет картинка, а в другой – небольшой кусок текста.

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

Итак, приступаем. Начнем с выбора имени дополнительного поля, которое будет содержать имя картинки. Пусть оно будет называться image, а все картинки будут храниться в папке images, в корневой директории вашего сайта.

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

<?php while (have_posts()) : the_post(); ?>

Есть кусок кода, который отвечает за вывод основного текста:

<div class="entry">
<?php the_content('Читать далее »'); ? >
</div>

Выведем туда нашу картинку:

<div class="entry">
	<?php if('' !== get_post_meta($post->ID, 'image',true) ) {
		$width = getimagesize('http://i-novice.net/images/'.get_post_meta($post->ID, 'image',true));
		$width = $width[0];
	?>
		<div class="HeaderImage" style="width:<?php echo $width?>px">
		<img src="http://i-novice.net/images/<?php echo get_post_meta($post->ID, 'image',true) ?>" />
		</div>
	<?php } ?>
	<?php the_content('Читать далее »'); ?>
</div>

Перед тем, как вывести изображение, вычисляется его размер (длина) – это нужно для корректного отображения картинки внутри блока.

А стиль HeaderImage очень простой:

div.HeaderImage {
	float:left;
	padding:5px;
}

Он нужен только для того, чтобы текст обтекал его по правому краю.

Преимущество такого метода вывода изображения в том, что для изменения отображения всех изображений, изменить код нужно будет только в одном месте. Результат работы этого кода можете увидеть на этом блоге. Так что пользуйтесь приемом icon wink Дополнительные поля wordpress постов

P.S.: Для того, чтобы картинки показывались на всех страницах блога, не забудьте прописать вывод в шаблонах archive.php и single.php (или еще какие-то).

Удачи и до встречи!
Novice.



Теги:


Читайте также:



13 Ответов на “Дополнительные поля wordpress постов”

  1. Alexpts
    Январь 3rd, 2009

    Очень полезный пост. Давно хотел разобраться с произвольными полями.

  2. Avdenago
    Январь 28th, 2009

    Странно, а у меня не отображаются дополнительные поля в RSS… Как поправить?

  3. Охотник на зелёных
    Январь 29th, 2009

    Всё это конечно хорошо, если ты пользуешься набором текста в админке блога, а если я например (как белый человек) пользуюсь оффлайн-редактором. В одном случае это Zoundry, в другом это WLW и всё. Все преимущества этих полей отпадают…

  4. cryptus
    Январь 30th, 2009

    2 Avdenago: По-умолчанию в rss-ленте выводятся только определенные поля (заголовок, линк, краткое описание и т.д.). Чтобы там появились дополнительные поля нужно дописывать это в файле, которые генерирует rss (wp-includes/feed-rss2.php). Выводить их там скорее всего так же как и в примере, который в этой статье рассматривается.

  5. cryptus
    Январь 30th, 2009

    2 Охотник на зелёных: Тут уж ничего не поделаешь. Как говориться – всегда приходится выбирать :)

  6. Avdenago
    Январь 30th, 2009

    Спасибо, попробую.

  7. TuTbaker
    Апрель 22nd, 2009

    Собственно возник такой вопрос, я запихал цикл while в сайдбар и там вставил get_post_meta, не работает… я так понимаю это связано с какими-то ограничениями, может быть вы сталкивались?

  8. cryptus
    Апрель 23rd, 2009

    Опиши точнее ошибку плз. Выведи через echo промежуточные результаты и т.д. возможно сам догадаешься где ошибка. Сам с такой ошибкой не сталкивался..

  9. Avdenago
    Апрель 23rd, 2009

    TuTbaker, надо смотреть. Мне так кажется, что данный вывод – он работает только в цикле (loop) вывода записи. Так как идет вывод дополнительного поля по айди записи…

  10. Алексей Кот
    Май 20th, 2009

    Способ очень интересный. Я хочу сейчас подумать, как сделать каждой статье уникальную картинку, которая будет высвечиваться вместо “Читать далее”. В принципе, много изменять тут не придется.
    Единственное, в чём способ не очень удобный, это загрузка картинок – постоянно же придется вручную загружать по FTP в папку images картинки.
    Вот бы как-то сделать, например загружаешь к посту обычным образом картинку с определенным именем, в пост её не вставляешь, но её подбирает скрипт :)

  11. Ivanko
    Март 25th, 2010

    Шаг 1. Для начала – обрежем лишнее. Выделяем необходимый нам фрагмент и выбираем пункт меню «Изображение» «Откадрировать в выделение»:

  12. Сергей
    Декабрь 3rd, 2010

    Спасибо автору. Хорошие статьи о wordpress. Вот если бы вы еще перевели хорошую статью о своем типе данных будет вообще отлично. На русском нет, не чего хорошего на эту тему.

  13. Андрей
    Февраль 4th, 2012

    Уважаемый автор, подскажите, есть ли плагин который будет находиться на дополнительном поле, и будет загружать картинки напрямую с компа без разных прописей, и при этом ресайзить до нужного размера?

Оставить комментарий


© 2008 - 2012 i-novice.net | Все права защищены.