Дополнительные поля 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('https://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="https://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;
}

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

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

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

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



Теги:


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



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

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

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

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

  4. cryptus

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

  5. cryptus

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

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

  7. TuTbaker

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

  8. cryptus

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

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

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

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

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

  13. Андрей

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


© Copyright. . I-Novice. All Rights Reserved. Terms | Site Map