Только что прочитал в wordpressinside о новой функции the_post_thumbnail
в вордпресс 2.9 (которого здесь пока нет, кстати), её можно использовать для простого вывода превьюшек одного из присоединенных к посту изображений.
А я как раз вчера думал об использовании этой возможности для сайта одного из клиентов. Про the_post_thumbnail
ещё не знал, знал о wp_get_attachment_image
. Но решил таки отказаться от этого способа вывода превьюшек постов из-за того, что он потребует дополнительный запрос к базе данных на каждый пост. Например, если у вас выводится по 10 постов на ленте (которые извлекаются за один запрос к базе MySQL), значит, для извлечения данных каждой превьюшки потребуется 10 дополнительных запросов — это уже может быть как бы много, а с некоторых особо экономных хостингов вас могут и попросить за «неоптимизированные скрипты». Возможно, именно поэтому по умолчанию эта возможность отключена.
Также думал и про custom fields — это, видимо, лучшее решение в смысле оптимизации, потому что записи и их дополнительные поля, скорее всего, извлекаются из базы одним запросом (надо бы уточнить, кстати). Но такой способ может быть не слишком удобен для заказчика: вписывать вручную адрес превьюшки, который надо откуда-то копировать — как бы лишняя работа.
В итоге придумал третий вариант: за один запрос извлекаю из базы все записи типа attachment, затем пробегаюсь по нему — создаю массив, содержащий только первый attachment для каждого поста, а в цикле wordpress использую элементы этого массива.
А пока писал всё это, придумался и четвёртый — автоматизация второго: ведь можно создавать дополнительные поля к записи в момент её сохранения: если есть аттачменты, берём превьюшку первого из них и прописываем её как дополнительное поле. Думаю, что это получится реализовать через плагин, и править файлы движка не придётся.