Сформулируем задачу. Нужно вывести 3 (а в общем случае N) анонсов новостей, с картинкой, в шаблоне на главной странице сайта. Этот кусочек должен выглядеть примерно вот так:
Пример взят с моей любимой lenta.ru.
Пусть это будут три последних статьи из какой то определенной категории статей, из которой мы берем анонсы. Для определенности создадим дополнительную рубрику — Анонсы (с url — anonce). В эту рубрику мы будем помещать нужные нам статьи.
Пару слов о шаблоне
Нам потребуется дописать код в шаблон главной страницы — скорее всего это будет index.php в папке вашего шаблона. Анонсы я размещу в табличку, так что анонс каждой статьи будет занимать свою ячейку таблицы. В данном случае у нас получится таблица — [3 x 1] ячейки. Вы можете сделать свою таблицу (в несколько рядов или вертикально — как того требует ваша задача).
О картинках
Картинки в wordpress являются элементами той же таблицы в базе данных что и статьи, черновики, страницы. А те картинки, которые привязаны к конкретной публикации связаны с ней как дочерние элементы. Зная код (ID) публикации, можно запросто извлечь из базы связанные с ней картинки. Делает это функция get_children(…).
PHP код для вставки в шаблон
Далее смотрим пояснения в коде PHP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?php //отфильтруем набор публикаций из категории anonce, как и договаривались query_posts('category_name=anonce'); if (have_posts()) { //откроем HTML табличку echo "<table width=100% border=0 cellpadding=5><tr valign=top>"; //пусть N = 3, т.е. выведем только три анонса $nGoods = 3; while (have_posts()) { //извлекаем данные для очередного анонса the_post(); ?> <td> <div <?php post_class(); ?> id="post-<?php the_ID(); ?>"> <figure> <? //надо извлечь первую прикрепленную картинку $attachments = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID', 'numberposts' => 1) ); if (!empty($attachments)) { $image_post = array_pop($attachments); //используем стандартные средства WP для формирования HTML кода изображения echo wp_get_attachment_image( $image_post->ID, 'medium', false, 'style=width: 200px'); } ?> </figure> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('%s', 'kubrick'), the_title_attribute('echo=0')); ?>"> <?php the_title(); ?></a></h2> <small><?php the_time(__('F jS, Y', 'kubrick')) ?></small> <div> <?php the_content('Читать далее »'); ?> </div> </div> </td> <? //счетчик числа анонсов if (!--$nGoods) break; } //остаётся закрыть HTML таблицу - дело сделано echo "</tr></table>"; } ?> |
Стоит ли отдельно пояснять, что пример хоть и рабочий, но будет требовать шлифовки, переработки для вашего проекта. В примере продемонстрированы основные методы, которые вам могут понадобится (фильтр публикаций, извлечение связанных изображений, цикл по набору публикаций). Все это может оказаться вам полезным на ранних этапах знакомства с wordpress API.
Ну и как всегда задавайте вопросы, ставьте лайки, пока! :)