Разные шаблоны для категорий и страниц записей

27
Июль
2011

Разные шаблоны для категорий и страниц записей в WordPress

На днях, при верстке сайта под WordPress, я столкнулся с вопросом: «как для разных страниц записей и, соответственно, категорий выводить определенный шаблон?». Решение не заставило себя долго ждать и немножко поgoooogleв, я нашел как провернуть эту манипуляцию. Но, просто узнать и запомнить о данном решении мне мало, и я хочу поделиться этим со своими читателями. Возможно, кто-то и знает об этих методах, тогда он молодец! :-D

Не знаю, может в WordPress 3.x этот вопрос можно решить в несколько кликов, но я, по крайней мере, не в теме. Так что будем реализовывать проверенными методами.

Шаблон для категории

Все мы знаем, что для отображения категорий могут использоваться шаблоны: «category.php», «archive.php», «index.php». Но так как «category.php» не часто встречается в темах WP, то используются обычно два остальных файла.

Давайте начнем!

  1. Для начала заходим в админку WP в раздел с категориями (Записи > Рубрики) и узнаем ID требуемой категории (жмем «Редактировать» возле категории, открывается страница, адрес которой в браузере выглядит приблизительно так: http://www.АДРЕС_ВАШЕГО_САЙТА/wp-admin/categories.php?action=edit&cat_ID=32). Цифры в конце ссылки и есть ID категории. Для примера возьмем вымышленную категорию с ID=32.
  2. Теперь создаем файл и называем его «category-32.php». Не трудно догадаться, что 32 - это ID требуемой категории. В Вашем случае ID явно будет другим.

Также мною лично было проверено, что вместо ID можно использовать название ссылки категории. К примеру, категория с ID=32 называется «Портфолио» и её ссылка (которая указывалась при создании) имеет название «portfolio». Тогда название файла шаблона будет таким: «category-portfolio.php». По крайней мере, у меня все сработало :)

Всё! Осталось только отверстать свежеиспеченный файл под ваш вкус и категория, которую Вы указали, будет выглядеть не так, как все.

Шаблон для страницы записи

Для страницы записи собственный шаблон задается немножко по другому. Для этого вам нужно:

  1. Создать файл шаблона и назвать его «single-portfolio.php»;
  2. Сделать копию файла «single.php» и назвать её, к примеру, «single-default.php».
  3. Открыть файл «single.php», удалить все содержимое и вставить следующий код:
<?php
  $post = $wp_query->post;

  if (in_category('32')) {
      include(TEMPLATEPATH.'/single-portfolio.php');
  } else {
      include(TEMPLATEPATH.'/single-default.php');
  }
?>

или вместо ID категории можете вставить название ссылки категории:

<?php
  $post = $wp_query->post;

  if (in_category('portfolio')) {
      include(TEMPLATEPATH.'/single-portfolio.php');
  } else {
      include(TEMPLATEPATH.'/single-default.php');
  }
?>

Как видите, мы указываем WP: если категория с ID=32 (или с названием «portfolio» - см. 2 вариант кода), тогда следует использовать шаблон для страниц записей «single-portfolio.php», но если категория имеет другой ID, тогда следует использовать шаблон «single-default.php».

И на этом также всё, Вам осталось только отверстать файл «single-portfolio.php» и все записи в указанной категории будут иметь свой вид.

Конечно же, можете называть файлы как хотите, кроме «single.php».

Надеюсь, Вам все было понятно. Если что, спрашивайте в комментариях! ;)

Запланирована свадьба? Не определились еще с фотографом? Фотограф на свадьбу в Самаре нужен?

Подписаться на RSSВы можете подписаться на RSS или на E-mail рассылку:

Оставить комментарий с помощью формы ВКонтакте

Комментариев (56) к “Разные шаблоны для категорий и страниц записей”

  1. Санчез пишет:

    Демо в студию! *HELP*
    :)

  2. Евгений пишет:

    Олег, очень полезная информация! Спасибо, очень помогла! 8)

  3. MrRobby пишет:

    Олег, привет) давненько что-то не заходил на твой блог, уже соскучился за потоком творческой информации)) Хотел спросить, мне вот нужно сделать главную страницу, у которой будет немного другое оформление, вышеизложенная информация мне поможет?))
    З.Ы. уже не первый месяц хочу сделать свой блог, но никак не решусь =) Хотелось бы чтоб ты дал несколько советов по поводу таких “начинаний” =) (не первый раз уже к тебе обращаюсь за помощью, спасибо тебе) если можно в личку =) Или напиши статью “Помощь начинающим блоггерам”. Я думаю не одному мне будет интересно почитать и сделать выводы =)

    • Oleg Mykhailenko пишет:

      Привет)
      Смотря что и как ты хочешь разместить на Главной. В этом посте описывается, как можно изменить определенные рубрики и страницы записей, но не Главную.

      З.Ы. Спасибо за идею, насчет статьи подумаю :)

  4. BlogSeoNews пишет:

    Спасибо большое. Использовал это у себя.

  5. sofcase пишет:

    “Также мною лично было проверено, что вместо ID можно использовать название ссылки категории. К примеру, категория с ID=32 называется «Портфолио» и её ссылка (которая указывалась при создании) имеет название «portfolio». Тогда название файла шаблона будет таким: «category-portfolio.php». По крайней мере, у меня все сработало”

    Вордпресс имеет приоритет по выбору файла для отображения, вот очередность: category-slug, category-id, category, archive, index. (так подсказывает официальный мануал) :) А вообще советую почаще читать официальные мануалы, там фигню никогда не пишут :)

  6. Константин пишет:

    Олег, подскажите, пожалуйста, что нужно изменить в коде, чтобы две разные категории выводились одним шаблоном, а еще две – другим?

    • Oleg Mykhailenko пишет:

      Создайте по 2 файла с одинаковым содержимым, но назовите их в соответствии с ID категорий.
      К примеру, первые два файла для двух категорий с одинаковым шаблоном:
      «category-1.php», «category-2.php».
      И вторые два файла с другим шаблоном:
      «category-3.php», «category-4.php».
      Напомню, что цифры в названии файлов – это ID категорий.
      В итоге получится 4 дополнительных файла в папке с Вашей темой.

      Но, если у Вас на сайте всего 4 категории, то для первых двух категорий с одинаковым шаблоном Вы создаете так, как описано выше, а все остальные категории будут использовать файл «category.php» по умолчанию. В этом файле прописываете другой шаблон.
      Этот вариант сократит количество дополнительных файлов темы с 4 до 2.

      Возможно, существует вариант попроще, но я пока не знаю о нём)

      • sofcase пишет:

        Создать два файла, category-design1.php и category-design2.php. Можно даже создать папку и кинуть эти файлы туда, а в файлах category-(1,2,3,4…).php инклюдить необходимый файл (category-design1.php или category-design2.php), так проще контролировать код.

    • Nick пишет:

      или так if ((in_category(‘3′))or(in_category(‘10′)))

  7. Zlom пишет:

    Здравствуйте!
    Подскажите как использовать это в header.php
    Постановка задачи:
    Если это архив категории с id 7 или id-категории к которой относится просматриваемая публикация равно 7, тогда нужно использовать div class=”777″, если нет, тогда использовать div class=”000″

    Заранее благодарю за помощь.

  8. Анатолий пишет:

    Спасибо за статейку. Хоть ещё не попробовал этот способ, однако меня давно уже интересовала идея, как вывести запись в свой шаблон при определённом условии.

  9. Дима пишет:

    Спасибо помогло! А как добавить еще категории в шаблон страницы. Вот есть категория ID=32, а нужно еще ID=17 и ID=15 отображать также как категорию с ID=32

    • Oleg Mykhailenko пишет:

      Дима, посмотрите в комментариях к этому посту вопрос Константина (вопрос похож на Ваш). На его вопрос были толковые ответы.

  10. AKharitonov пишет:

    Спасибо за статью! Один вопрос только возник: для подкатегорий шаблон будет таким же, как у родительской категории, или будет выводиться стандартный?
    А если стандартный, то, наверное, надо будет кодом к каждой подкатегории указывать, какой шаблон использовать что ли?)

    • Oleg Mykhailenko пишет:

      Я не тестил этот момент. Скорее всего будет стандартный. Хотя я могу и ошибаться, конечно :) Если, все-таки, будет выводиться стандартный, тогда для каждой подкатегории нужно будет указывать айдишники или «слаги», как я описал в посте.