Создание шаблона произвольной рубрики

Теперь мы приступим к созданию специального шаблона для рубрики Events. Возле каждой записи должна стоять ссылка, позволяющая зарегистрироваться на событие. Эта ссылка будет передавать заголовок события в регистрационную форму.

Насколько вы знаете, страница category.php превосходит по приоритету страницу archive.php. Однако в стандартном шаблоне, который мы используем, отсутствует файл category.php. Создадим его с помощью копирования файла archieve.php и последующего переименования в category.php.

Постойте! Нам необходимо, чтобы страница содержала записи только одной определенной категории. С этой целью мы создадим файл category-ID.php, который обладает более высоким приоритетом по сравнению с category.php. В качестве ID нам понадобится указать идентификатор необходимой нам рубрики, а именно рубрики Events.

В моей установке WordPress рубрика Events обладает ID = 3. Следовательно, файл будет называться category-3.php. Естественно, в вашей установке это число может (и будет) отличаться. Как обнаружить ID рубрики? Довольно просто. Для этого достаточно пройти в раздел панели администратора Записи — Рубрики, выбрать интересующую вас рубрику и посмотреть ее URL в браузере. В самом конце URL адреса будет указан ID рубрики. Иногда для этого нужно щелкнуть по адресной строке, поскольку некоторые браузеры (к примеру, Opera) скрывают часть адреса.

Теперь мы готовы приступить к изменению шаблона category-3.php.

Страница Events вызывает функцию get_template_part( ‘loop’, ‘category’) из шаблона loop.php. Фактически мы нуждаемся в простой настройке рубрики Events. Все, что нам понадобится, это закомментировать вызов основного цикла и добавить свой собственный цикл, который благодаря иерархии шаблонов будет работать только на нашей странице Events.

<?php
//start the loop:
while (have_posts()) : the_post(); ?>
    <div <?php post_class() ?>>
        <h2 id="post-<?php the_ID(); ?>" class="entry-title">
          <a href="<?php the_permalink() ?>" rel="bookmark"
              title="Permanent Link to
              <?php the_title_attribute(); ?>">
              <?php the_title(); //adds the title ?></a></h2>
        <div class="entry">
          <?php
            //add the content
            the_content() ?>
        </div>
        <?php //add the registration button ?>
        <p><a class="register"
          href="/wp-jqury/register/?evnt=<?php the_title(); ?>">
          Register</a>
        </p>
        
        <div class="register-separate"></div>
      </div>
    <?php endwhile; ?>   
 

Заметьте, что в нижней части кода мы создаем ссылку, которая будет связана с нашей регистрационной формой. Я добавил к этой ссылке строковую переменную evnt, в которой будет храниться заголовок события.

...
<p><a class="register"
  href="/wp-jqury/register/?evnt=<?php the_title(); ?>">
  Register</a>
</p>
<div class="register-separate"></div>
...

Теперь перейдем в самый верх шаблона страницы и удостоверимся, что заголовок страницы имеет смысл. Здесь мы обнаружим набор инструкций if…else, которые выполняют проверку того, откуда был возвращен контент (все эти инструкции остались еще от archive.php). Несмотря на то, что этот PHP-код нам больше не нужен, его можно оставить, поскольку он никоим образом не вредит нашему шаблону. Вместо этого мы добавим следующую разметку:

...
<h1 class="pagetitle"> Upcoming Events <?php single_cat_title(); ?></
h1>
...

С помощью данного кода мы выведем на странице h1 заголовок под названием Upcoming Events (Предстоящие события). Теперь добавим в таблицу стилей style.css следующие правила:

...
.register {
  display:block;
  background-color: #ccc;
  border: 1px solid #069;
  width: 100px;
  padding: 10px;
  text-align: center;
}
p a.register{
  float: right;
}
.register-separate{
  clear:both;
  padding-top: 10px;
  border-bottom:1px solid #999;
}

Если теперь мы взглянем на запись из рубрики Events, то увидим рядом с ней ссылку Register, позволяющую быстро зарегистрироваться на событие:

Блог про WordPress
Комментарии: 3
  1. reg-user

    спасибо, очень помогла данная информации, как раз создаю сайт

  2. Волшебник

    К сожалению и всё форматирование и теги порезались при добавлении комментария.
    Вот полный текст моего комментария:
    http://clip2net.com/clip/m107512/1367593316-clip-38kb.png

    1. Дмитрий (автор)

      Просмотрел ваш код. Можно к нему добавить в самом начале после тега title проверку на одиночную страницу:

      <?php if (is_single())

      Тогда в архивах рубрик ваши заголовки выводиться не должны.

Добавить комментарий

Получать новые комментарии по электронной почте.