20
04
10

Конструктивные элементы шаблона Wordpress | Файл header.php

Рубрики: WordPress
Тэги: ,

wplogo.gifДанный цикл статей будет полезен как создателям шаблонов Wordpress, так и любителям в нем поковыряться и чего-нибудь там поменять-поправить.

Довольно часто, редактируя или исправляя какой-либо шаблон Wordpress, начинаешь рыться в файлах, изыскивая нужные куски php кода. Ну, например, как обычно в шаблоне прописывается путь к картинке, лежащей в папке images? Чаще всего вот так:

<?php bloginfo('template_directory'); ? >/images/banner.gif

Если вы не набиваете на клаве сей код по нескольку раз на дню, то, скорее всего, так же как и я, нифига его не запомните наизусть. И этапральна! Незачем запоминать то, что всегда можно скопировать и вставить в нужном месте.

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

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

Шапка, он же header

В файле header.php есть несколько php вставок, которые приходится править чаще всего. Начнем с заголовка или иначе — с тайтла (title). Во многих шаблонах код этого тайтла пишут так же, как и в дефолтном (default), или классическом (classic):

<title><?php bloginfo('name'); ?><?php wp_title(); ?></title>

<title><?php bloginfo('name'); ?> <?php if ( is_single() ) { ?> » Blog Archive <?php } ?> <?php wp_title(); ?></title>

В результате мы получаем в первом случае вот такой заголовок:

Имя блога – Название статьи (или страницы)

Во втором случае еще круче:

Имя блога – Архив – Название статьи

Представьте себе, что выдаст, к примеру, Гугль, найдя с десяток ваших постов, когда ваш блог называется как-то так:

“Блог о самой здоровой, вкусной, полезной, замечательной и всеми любимой, неимоверно заряжающей активностью, бодростью и энергией, ее величестве Манной Каше”

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

<title><?php wp_title(' '); ?> | <?php bloginfo('name'); ?></title>

Пояснения:

<?php wp_title(’ ‘); ?> — выводит заголовок поста
<?php bloginfo(’name’); ?> — выводит название блога

Идем дальше. В некоторых шаблонах нет линка на добавление иконки в адресную строку браузера. Это так называемый фавикон (favicon.ico). Чтобы его добавить, достаточно в пределах тэгов <head></head> прописать следующую строку:

<link rel="Shortcut Icon" href="<?php bloginfo('template_directory'); ?>/images/favicon.ico" type="image/x-icon" />

При этом сама картинка иконки должна лежать в папке images шаблона.

Другая любопытная php вставка в файле header.php выглядит так:

<?php wp_head(); ?>

Это так называемый “хук”. Нужен он в большей степени для сторонних плагинов. Это своеобразный якорь, за который цепляются необходимые плагинам скрипты или дополнительные файлы стилей. Если какой-либо из плагинов работает некорректно, проверьте, есть ли в вашем шаблоне этот хук.

Пока мы рассматривали невидимую часть шапки, которая лежит в пределах тэгов <head></head>. Теперь обратимся к видимой части. Во-первых, это заголовок блога и его описание:

<h1><a href="<?php bloginfo('url'); ?>/"><?php bloginfo('name'); ?></a></h1>
<p><?php bloginfo('description'); ?></p>

Здесь все достаточно просто. Поясним, что означают части кода:

<?php bloginfo(’url’); ?> — ничто иное, как ссылка на сам блог. Сюда автоматически добавляется адрес. Этот кусок кода вполне можно заменить на http://www.ваш-блог.ru

<?php bloginfo(’name’); ?> — название блога. О нем мы уже говорили выше. Этот кусок встретится еще раз в подвале.

<?php bloginfo(’description’); ?> — выводит описание блога. То, которое вы задаете в настройках в админской части.

Иногда вместо названия блога вставляют картину-логотип. Тогда код заголовка может выглядеть таким образом:

<h1><a href="<?php bloginfo('url'); ?>/"><img src="<?php bloginfo('template_directory'); ?>/images/logo.gif" alt="<?php bloginfo('name'); ?>" /></a></h1>

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

Пояснение:

<img src="<?php bloginfo('template_directory'); ?>/images/logo.gif" alt="" />

Эта конструкция уже встретилась сегодня пару раз. И далее она будет еще не раз появляться. Например, в сайдбаре. Это универсальная конструкция добавления картинок в шаблон Wordpress.

Адрес вида:

<?php bloginfo('template_directory'); ?>/images/

отправляет прямиком в папку images текущей темы. Это на самом деле очень удобно. Не нужно прописывать целиком адрес, как это обычно делается в статичном html.

Идем далее. Зачастую в файле header.php прописывается также код вывода меню статичных страниц:

<ul>
<li><a href="<?php bloginfo('home'); ?>">Главная</a></li>
<?php wp_list_pages('sort_column=menu_order&depth=1&title_li='); ?>
</ul>

Это обычный маркированный список, где первым пунктом всегда идет ссылка на главную страницу:

<a href="<?php bloginfo('home'); ?>">Главная</a>

Следующий кусок кода более интересен:

<?php wp_list_pages('sort_column=menu_order&depth=1&title_li='); ?>

Во-первых, он выводит все остальные статичные страницы. Это понятно. Во-вторых, эти страницы можно определенным образом организовать, что и прописано в свойствах, указанных в круглых скобках. Рассмотрим их подробнее:

sort_column — порядок расположения страниц. Может принимать следующие значения:

menu_order — размещение по номеру. Здесь следует различать такие вещи как ID страницы и ее номер. ID присваивается автоматически движком блога, а номер вы прописываете сами в административной панели при создании страницы. Такой способ размещения я считаю более логичным, так как это позволяет сортировать страницы в нужном вам порядке.

post_title — способ размещения по алфавиту. Причем вначале располагаются латинские названия, а уже потом на кириллице. Выглядит довольно бестолково.

post_date — размещение по дате создания.

ID — размещение по порядковому номеру ID

В круглых скобках можно одновременно прописать несколько свойств. Соединяют их между собой знаком амперсанда & Как видим, в нашем коде присутствуют еще два свойства:

depth — глубина, или количество вложенных страниц. По умолчанию стоит значение 1. Это означает, что возможно создать только родительские страницы, такие как: О блоге, Об авторе, Контакты и пр. Если нужно, чтобы в любой из пунктов меню можно было добавлять вложенные (дочерние) страницы, то следует поставить значение 2. Или иное, если требуется большее количество вложений

title_li — по-умолчанию стоит пустое значение. Лучше его таким и оставить. Это как бы задает общий заголовок всем остальным страницам, кроме главной. Для чего оно было предусмотрено — не понятно. Но если удалить это свойство, то между главной и всеми остальными страницами вклинится слово “Страницы”. Оно вам таки надо?

Более подробно о настройках отображения статичных страниц можно почитать в Кодексе

В следующий раз рассмотрим в подробностях состав контентной части шаблона, выводимого файлом index.php (или home.php)

rss Подпишитесь на RSS


Комментарии (16)

  1. eavasi 20.04.2010 14:33

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

  2. Денис Климонтов 20.04.2010 15:28

    Буквально сегодня пол-утра убил на поиск того, почему не работает сеоплагин. Оказалось как раз из-за wp_head();. Теперь не забуду ни за что.

  3. Alex_la 20.04.2010 22:00

    Большое спасибо за очень полензную статью… Сейчас как раз начал изучать WP, буду ждать следующих статей….)

  4. Игорь Квентор 20.04.2010 22:29

    eavasi, на самом деле никакой нагрузки при этом не уменьшается. Движок ВП все равно отправляет все запросы разом, нужные и не нужные. Экономия при таком подходе практически незаметная. Гораздо полезнее избавиться от лишних плагинов.

    Денис Климонтов, Alex_la, вэлкам! Продолжение следует

  5. Василий Сенченко 21.04.2010 07:24

    Игорь, виртуозно! В течение нескольких минут приятнейшего чтения вы просто и доходчиво рассказали и показали достаточно сложные коды. Год назад я в них плавал, как топор. После ваших книг и уроков стал разбираться, даже Веб-студию открыл “Сайт - за 12 часов!”

    Вашу сегодняшнюю статью, Игорь, воспринимаю как указание к действию на своем сайте.

    Игорь, если вы сочтете возможным, расскажите в одной из ваших статей о регистрации на блоге и выводе информации на сайт из базы данных. Например, создание персональной странички автора или товара, на которой выводятся десяток характеристик.

    Успеха, Игорь! Ждем новых статей!

    Василий Сенченко
    Сайт - за 12 часов!

  6. Светлана 21.04.2010 16:56

    Игорь, подскажите, где еще может прятаться какой-то код, который не дает нормально отражаться правильному заголовку? Я поставила рекомендуемое:
    |

    В строке браузера показывается верно, начиная с названия статьи, а вот в адресной строке после названия блога идет имя категории, и только потом название статьи. :(

  7. Светлана 21.04.2010 16:57

    Код не пропечатался. Он в точности по Вашей рекомендации.

  8. Василий Сенченко 21.04.2010 17:13

    Замучился запускать плагин wp-pagenavi. Случайно вспомнил слова Дениса Климонтова о хуке, поставил и возрадовался. Слава, слава, героям: Игорю и Денису!

  9. Игорь Квентор 23.04.2010 16:58

    Василий Сенченко, хороший пиар, но больше так, пожалуйста, не делайте :)

    Светлана, вам нужно либо поставить плагин, исключающий категории в ссылках, либо вручную прописать в ЧПУ /%postname%/

  10. Светлана 23.04.2010 18:02

    Спасибо! Даже не знаю, по какой причине я это упустила на Кошколюбах. На двух других блогах так и было выставлено, по Вашей рекомендации, а тут… Стыдно даже. :(

  11. Василий Сенченко 23.04.2010 18:46

    Игорь, эмоции и слова шли от чистого сердца. Как говорится, хотел как лучше, а получилось как всегда… (чешу в затылке). Больше не буду говорить слова, которые можно нечаянно принять за лесть.

  12. Игорь Квентор 25.04.2010 09:57

    Светлана, бывает :) Не стоит расстраиваться.

    Василий, дело не в лести. Вы прекрасно поняли, о чем я. Эта ваша фраза “Сайт - за 12 часов!” не что иное как реклама. А реклама на блоге Вебсовет платная. Хотите рекламить свои услуги - вэлкам! Полновесная ссылка в постовом стоит всего 5$.

  13. Василий Сенченко 25.04.2010 21:18

    Игорь! Как говорят, всю жизнь живи, всю жизнь учись. И снова я попал впросак, говорил от чистого сердца, оказалось реклама. Сообщите, пожалуйста, как мне произвести оплату. Благо дарю вам за терпение!

    Просто Василий Сенченко

  14. Ольга 28.05.2010 18:55

    Игорь подскажите где вставлять
    в header.php в теме шаблона bloger чтоб нормально лого встало.

    <html xmlns=”http://www.w3.org/1999/xhtml” >

    <meta http-equiv=”Content-Type” content=”; charset=” />

    <link rel=”stylesheet” href=”" type=”text/css” media=”screen” />
    <link rel=”alternate” type=”application/rss+xml” title=” RSS Feed” href=”" />
    <link rel=”alternate” type=”application/atom+xml” title=” Atom Feed” href=”" />
    <link rel=”pingback” href=”" />
    <link rel=”shortcut icon” href=”/images/favicon.ico” />
    <link rel=”stylesheet” href=”/style.css” type=”text/css” />

    <!–
    <img src=”/images/logoеtip.gif” alt=”" />
    sfHover = function() {
    var sfEls = document.getElementById(”nav”).getElementsByTagName(”LI”);
    for (var i=0; i

    <script defer type=”text/javascript” src=”/js/pngfix.js”>

    <script src=”/js/date.js” type=”text/javascript”>

    <a href=”/”>

    <form id=”searchform” method=”get” action=”">

    <a href=”/” title=”">Главная

    <a href=”" target=”_blank”>Подпишись на RSS
    <a href=”" target=”_blank”><img style=”vertical-align:middle” src=”/images/rss.png” alt=”Subscribe to ” />

    СПАСИБИЩЕ!

  15. Chaica13 25.08.2010 12:10

    Здравствуйте Игорь. Я сгенерировал для своего блога шаблон с помощью программы Artisteer 2. Вот что предстовляет из себя header.php :

    <html xmlns=”http://www.w3.org/1999/xhtml” >

    <meta http-equiv=”Content-Type” content=”; charset=” />

    <script type=”text/javascript” src=”/script.js”>
    <link rel=”stylesheet” href=”" type=”text/css” media=”screen” />

    <link rel=”alternate” type=”application/rss+xml” title=”" href=”" />
    <link rel=”alternate” type=”application/atom+xml” title=”" href=”" />

    <link rel=”pingback” href=”" />

    <link rel=”shortcut icon” href=”/favicon.ico” />

    Если Вас не затруднит посмотрите на блог elnrad.ru чтоб было понятней о чём я говорю. Вверху всех страниц высвечивается название страници или статьи большими буквами согласно заданных стилей css(я так понимаю), эта те названия которые мы прописываем в строке имени при создании новой странице или записи в Wordpress. Вопрос в том как сделать так, чтобы эти названия там не высвечивались на главной странице, чтоб главная была без заголовка и небыло вверху страници прямоугольной рамки с надписья “Править”

  16. Игорь Квентор 25.08.2010 21:42

    Заголовками страниц в Wordpress ведают файлы index.php, single.php, page.php и т.п. Ищите там h1 или h2. Что касается надписи “Править”, то найти ее можно там же и удалить, если мешает. Хотя видите ее только вы как админ. Посетителям она не видна.

Трэкбеки

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