Главная » WordPress » Статьи Wordpress » Создание WordPress темы: циклы вывода записей. Index, Category, Archive.
Распечатать статью

Создание WordPress темы: циклы вывода записей. Index, Category, Archive.

Из известной нам по предыдущим статьям «набора» верстки Brainmix путём анализа html-файлов выявим очередные общие элементы.

Это будет код от <div> (см. header.php) до <div>. Вот его фрагмент:

Свернуть ▲

<div class="article">

  <h2><span>We'll Make Sure Template</span> Works For You</h2>
  <p class="infopost">Posted <span class="date">on 29 aug 2016</span> by <a href="#">Admin</a>   |   Filed under <a href="#">templates</a>, <a href="#">internet</a> <a href="#" class="com">Comments <span>(7)</span></a></p>
  <div class="clr"></div>
  <div class="img"><img src="images/img2.jpg" width="173" height="209" alt="" class="fl" /></div>
  <div class="post_content">
  <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec libero. Suspendisse bibendum. Cras id urna. <a href="#">Morbi tincidunt, orci ac convallis aliquam, lectus turpis varius lorem, eu posuere nunc justo tempus leo.</a> Donec mattis, purus nec placerat bibendum, dui pede condimentum odio, ac blandit ante orci ut diam. Cras fringilla magna. Phasellus suscipit, leo a pharetra condimentum, lorem tellus eleifend magna, eget fringilla velit magna id neque. Curabitur vel urna. In tristique orci porttitor ipsum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec libero. Suspendisse bibendum. Cras id urna. Morbi tincidunt, orci ac convallis aliquam.</p>
  <p><strong>Aenean consequat porttitor adipiscing. Nam pellentesque justo ut tortor congue lobortis. Donec venenatis sagittis fringilla.</strong> Etiam nec libero magna, et dictum velit. Proin mauris mauris, mattis eu elementum eget, commodo in nulla. Mauris posuere venenatis pretium. Maecenas a dui sed lorem aliquam dictum. Nunc urna leo, imperdiet eu bibendum ac, pretium ac massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla facilisi. Quisque condimentum luctus ullamcorper.</p>
  <p class="spec"><a href="#" class="rm">Read more »</a></p>
  </div>
  <div class="clr"></div>
</div>

Структура достаточно четкая. Нам остаётся лишь правильно её «зациклить», используя have_posts() (если есть записи возвращает TRUE) и while на the_post() (не возвращает значений, используется для итерации) . Создаём файл «loop.php»:

Свернуть ▲

<div>
  <?php if (have_posts()) :
    while (have_posts()) : the_post(); ?>
    <div id="post-<?php the_ID(); ?>">
      <h2><?php the_title(); ?><?php edit_post_link('[Правка]', ': ' , ''); ?></h2>
      <p>Опубликовал <?php the_author(); ?> от <span><?php the_time('Y/m/d'); ?></span>   |   Рубрики: <?php the_category(', '); ?> <?php comments_popup_link('<span>0</span> коммент. ', '<span>1</span> коммент.', '<span>%</span> коммент.', 'com', ''); ?></p>
     <div></div>
     <div>
     <p><?php the_excerpt();?></p>
     <p><a href="<?php the_permalink(); ?>">Далее »</a></p>
     </div>
     <div></div>
   </div>
   <?php
    endwhile;
endif; ?>
  <p>
    <?php previous_posts_link('←'); ?>
    <?php next_posts_link('→'); ?>
  </p>
</div>

Краткие пояснения к используемым функциям:

  • <php the_ID(); ?> — возвращает ID текущей записи. Если использовать ID в PHP, пишем <php get_the_ID(); ?>.
  • <?php the_title(); ?> — возвращает заголовок записи. Также можно писать <php the_title( $текст_перед, $текст_после, $TRUE_или_FALSE_для_использования_в_PHP ); ?>.
  • <?php edit_post_link($текст_ссылки, $текст_перед, $текст_после, $ID_записи_которую_редактировать); ?> — покажет ссылку для редактирования записи. Для удобства.
  • <?php the_author(); ?> — покажет автора записи.
  • <?php the_time(‘Y/m/d’); ?> — дата создания записи. Год/месяц/день числами.
  • <?php the_category(‘, ‘); ?> — выведет рубрики к которым принадлежит запись.
  • <?php comments_popup_link(’0 коммент. ‘, ’1 коммент.’, ‘% коммент.’, ‘com’, »); ?> — «com» — обыкновенный css-класс <обёртка> ссылки. Последний параметр », — что показывать, когда комментирование закрыто.
  • <?php the_excerpt() ?> — цитата. Если не задана, автоматически будет показан анонс статьи, обрезанный на [...]
  • <?php the_permalink(); ?> — постоянная ссылка на запись.
  • <?php previous_posts_link(‘←’); ?> и <php next_posts_link(‘→’); ?>. Ссылки на предыдущие и следующие записи соответственно. Вторым параметром $max_pages (число) можно ограничить кол-во страниц на кот. будет показана навигация, но лучше этого не делать.

Немного подправим CSS (style.css) для отображения без картинки:

.content .mainbar .post_content_nothumbnails {float:right;width:625px;}
.content .mainbar .post_content strong, .content .mainbar .post_content_nothumbnails strong {color:#6d6d6d;}

И наконец сами index.php, category.php, archive.php:

<?php
  get_header();
  get_template_part( 'loop', 'index' );
/* loop - файл "loop.php"
   index - я себе пишу для удобства,
   хотя более корректно было бы
   создать файл с именем "loop-index.php".
   Пока без "сайдбаров" */
  get_footer();
?>

get_template_part() помогает избежать ненужных дублей и облегчает понимание кода, но как ни странно в шаблонах её используют нечасто. Написанное актуально для WordPress 3.x.x.

Добавление поддержки миниатюр записей рассмотрим в следующей статье.

Источник:  sooource.net

Вы можете оставить комментарий, или обратную ссылку на Ваш сайт.

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

Похожие статьи