Как сделать разные header.php для страниц, рубрик?

Итак, стоит задача – это прикрутить различные шапки ( файл header.php) для категорий, страниц и отдельных записей, которые нужно сделать с уникальным оформлением в шапке . Почему именно шапке? Я не знаю ,вам виднее :lol: Наверное бывают ситуации, когда это нужно. Например, в интернет-магазине, для каждой категории присвоить в шапке логотип производителя или еще что-то =))

разные header для категорий, страниц, записей

В этой инструкции будет идти речь о вещах,  тесно связанных с методом создания разных шаблонов для рубрик, можете глянуть, мало ли там будет полезный материал для вас.  Так же по этой теме вам может пригодиться пост – вывести описание категории wordpress.

В этой инструкции будут расписаны примеры по добавления шапки для:

  1. рубрик
  2. страниц
  3. отдельных постов

Разные header для рубрик

В качестве примера мы прикрутим файл headerg.php для категории которая имеет ID=4 (вы возьмите id той рубрики, для которой будете делать изменения), а для всех остальных категорий разрешим вывод стандартного header.php вашей темы. Если вы не знаете как узнать id , то читаем - как узнать id категории

Для начала просто создайте копию вашего header.php и переименуйте его в headerg.php.

Теперь присвоим для рубрики с id=4 новую шапку, для этого заходим в "админка > внешний вид > редактор > category.php" и находим строчку

<?php get_header(); ?>

она должна быть расположена в верхней части кода.

Вместо этой строки мы пишем условие:

<?php 
if (in_category('4')) {
 include(TEMPLATEPATH.'/headerg.php');
 } else {
 include(TEMPLATEPATH.'/header.php');
 } ?>

В этом коде обозначено, что при попадании на страницу рубрики с ID=4, нужно выводить шапку headerg.php, в противном случае выводить стандартное header.php

 Важно:

Если в вашей теме не предусмотрено файла category.php, то все эти изменения делаем для файла archive.php, потому что он в данном случае отвечает за вывод записей категорий.

Попробуйте сделать изменения в headerg.php, если они отображаются, значит вы все сделали верно, если нет, то ищите ошибки. Не забывайте что код должен быть заключен в <?php *****  ?>.

Разные header для страниц

В моем примере будет страница с id=4, если вы не знаете как определять id, то читайте – как узнать id страницы. Чтобы присвоить для страницы отдельную шапку нужно редактировать шаблон страницы page.php( "админка > внешний вид > редактор > page.php").

По аналогии с тем что написано выше ищем:

<?php get_header(); ?>

и заменяем его на следующий код:

<?php 
if (is_page('4')) {
 include(TEMPLATEPATH.'/headerg.php');
 } else {
 include(TEMPLATEPATH.'/header.php');
 } ?>

Теперь для страницы с id=4 будет выводиться headerg.php

Разные шапки (header ) для записей

В случае если для разных записей нужно присвоить разные шапки, то нужно пользоваться функцией is_single(). В этом примере будет присвоена шапка headerg.php для записи с id=4.

Редактируем шаблон страницы single.php( "админка > внешний вид > редактор > single.php").

Вместо :

<?php get_header(); ?>

вставляем:

<?php 
if (is_single('4')) {
 include(TEMPLATEPATH.'/headerg.php');
 } else {
 include(TEMPLATEPATH.'/header.php');
 } ?>

Функции in_category(), is_page(), is_single()

Хочу в заключение добавить пояснения по используемым функциям. В своих примерах я всегда использовал ID, т.е.:

in_category(‘id’)

is_page(‘id’)

is_single(‘id’)

Кроме этого способа еще можно использовать вместо id название вашего поста:

is_category(‘название вашего поста’) – даже если оно русскими буквами.

is_page(‘название страницы’)

is_single(‘название записи’) (например, для этой записи – is_single(‘Как сделать разные header.php для страниц, рубрик?’))

Так же можно использовать ярлык/ссылку (то, что отображается в url):

is_category(‘ярлык рубрики’) – даже если оно русскими буквами.

is_page(‘url страницы’)

is_single(‘url страницы’) (например, для этой записи – is_single(‘kak-sdelat-raznye-header-php-dlya-stranic-rubrik’))

Если вам нужно вставить одинаковое условие для нескольких элементов, то можно сделать таким образом:

<?php 
if (is_single(array('id1', 'id2', 'id3'))) {
 include(TEMPLATEPATH.'/headerg.php');
 } else {
 include(TEMPLATEPATH.'/header.php');
 } ?>

В этом примере для всех перечисленных id будет выводиться headerg.php.Количество id в массиве не ограничено, вместо id можно вставлять URL/ярлык или название записи, категории, страницы.

Для категорий и страниц все аналогично:

if (is_page(array('id1', 'id2', 'id3'))) { ****}
if (in_category(array('id1', 'id2', 'id3'))) { ****}

Пишите в комментарии, буду помогать, если что :idea:

vsepro100.net был атакован и восстановлен недавно!
У вас быстро открывается сайт vsepro100.net

Добавить статью в соц сеть

Комментарии к: Как сделать разные header.php для страниц, рубрик?

  1. Здравствуйте!
    Очень полезная статья.
    Но как можно разным записям присвоить разные шапки?
    Как только не пробовал мудрить с кодом, не получается.
    Выходят две шапки к одной записи.

    • Павел Гаврилин

      в этой инструкции есть прям заголовок
      "Разные шапки (header ) для записей" :roll:

  2. Александр

    Не получается корректно сделать несколько групп страниц, с разными хедерами.
    Подскажите, плиз.

  3. Александр

    Вроде все получилось, если следовать инструкции, но есть потребность в более
    продвинутом управлении, например статья 1 – свой заголовок, статья 2 другой,
    статья 3 третий, а для остальных – общий. Как я понял – это реализуется так же просто, только в код нужно что-то добавить? Верно?
    Какой код в этом случае нужно вставить в пейдж.php?
    Помогите, пожалуйста.

    • Павел Гаврилин

      Вообще тайтлы должны быть разными для каждой страницы! поставьте плагин all in one seo pack . у меня есть пост о нем, можете поискать.

  4. Александр

    Вообще то я вопрос задавал в рамках статьи – имел ввиду не тайтлы, а шапки страниц, определяемые файлом header.php
    Т.е. какой код надо вставить в файл page.php, чтобы на для страницы с ID#1 показывалось содержимое файла header.php, а для ID#2 показывалось содержимое файла header2.php, для ID#5 показывалось содержимое файла header5.php, а для остальных стандартный?

    • Павел Гаврилин


      < ?php
      if (is_page('id1') {
      include(TEMPLATEPATH.'/header.php');
      }
      if (is_page('id2') {
      include(TEMPLATEPATH.'/header2.php');
      }
      if (is_page('id3') {
      include(TEMPLATEPATH.'/header3.php');
      } else {
      include(TEMPLATEPATH.'/header.php');
      } ?>

    • Your posting really stitgrhaened me out. Thanks!

  5. Александр

    Не получается так – на страницах вылазят сразу по несколько шапок

    • Павел Гаврилин

      Пардон, ошибочка вышла, надо так:

      < ?php
      if (is_single('6')) {
      include(TEMPLATEPATH.'/header1.php');
      } elseif (is_single('5')) {
      include(TEMPLATEPATH.'/header2.php');
      } elseif (is_single('4')) {
      include(TEMPLATEPATH.'/header3.php');
      } else {
      include(TEMPLATEPATH.'/header.php');
      } ?>

      вместо is_single ставьте is_page, ну и свои id и header. код рабочий, со своего сайта взят))

  6. Александр

    Спасибо, все получилось!

  7. Большое спасибо, коды очень пригодились!
    Буду ждать новых интересных тем от Вас!

  8. Большое спасибо, ваше решение помогло

  9. А как сделать разный header для разных языковых версий сайта?

  10. Александр

    А эта фишка работает в дочерних темах?
    Сейчас пробую настроить дочернюю тему для Twenty_Fourteen, и что-то не получается, не видит шаблон страницы ни какой шапки, ни корневой, ни персональной.

  11. Александр

    Всем привет. Прописываю в файл archive.php,

    все получается, в категории хедер другой. Хочу, чтобы во всех категориях был другой хедер, пишу

    ничего не меняется. Что не так? Я в PHP полный чайник.

  12. Александр

    первый код

  13. Александр

    чего-то код не ставится

  14. Здравствуйте подскажите, как сделать что бы в нескольких категориях отображались разные шапки а во всех остальных двадцати категориях только одна шапка?

  15. Здравствуйте, долго искал вразумительное объяснение, как это сделать и только из Вашей статьи стало понятно и заработало нормально.
    Единственное, есть вопрос:
    хочу в шапке выводить заголовок записи, можно ли в is_single задать не конкретные id, а просто задать вывод своей шапки с заголовком записи для каждого поста?

  16. Подскажите пожалуйста, у меня файл single.php начинается со строки как её правильно отредактировать, чтобы присваивать разные шапки разным страницам.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Captcha Captcha Reload

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Подписаться, не оставляя комментарий