WordPress как на ладони
Мощный и не дорогой хостинг от Fornex.com

get_header() WP 1.5.0

Подключает файл шаблона header.php (шапку). Если передан параметр $name, то будет подключен файл header-{name}.php.

Если файл не найден в шаблоне темы, то будет взять файл по умолчанию: wp-includes/theme-compat/header.php

Работает на основе: locate_template()

Хуков нет.

Использование

<?php get_header( $name ); ?>
$name(строка)
Индекс названия файла, который нужно подключить: header-{name}.php
По умолчанию: нет

Примеры

#1. Разные файлы header.php (шапки) для разных страниц

Для главной страницы и 404 будут подключены header-home.php и header-404.php соответственно.

<?php
if ( is_home() ){
	get_header('home');
}
elseif ( is_404() ) {
	get_header('404');
}
else {
	get_header();
}
?>

Код get_header: wp-includes/general-template.php VER 5.0.1

<?php
function get_header( $name = null ) {
	/**
	 * Fires before the header template file is loaded.
	 *
	 * @since 2.1.0
	 * @since 2.8.0 $name parameter added.
	 *
	 * @param string|null $name Name of the specific header file to use. null for the default header.
	 */
	do_action( 'get_header', $name );

	$templates = array();
	$name = (string) $name;
	if ( '' !== $name ) {
		$templates[] = "header-{$name}.php";
	}

	$templates[] = 'header.php';

	locate_template( $templates, true );
}

Cвязанные функции

Из раздела: Подключение файлов темы

Еще из тегов шаблона: Основные

15 комментов
Полезные 1 Все
  • Xoxol

    Ничего не понимаю. При использовании этой функции дерево элементов DOM как-то съезжает непонятным образом: при просмотре исходного кода все нормально, но при инспектировании элемента через FireBug все, что должно находиться внутри тегов выезжает в , а так же сверху вставляется текст из переносов строки (не , а именно текстом пустые строки). Понимаю, что что-то делаю не так, но что именно?

    -1
    Ответить6.7 лет назад #
    • campusboy3081 cайт: www.youtube.com/c/wpplus

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

      Ответить3.8 года назад #
    • campusboy3081 cайт: www.youtube.com/c/wpplus

      Впервые столкнулся с таким. Если весь код засунуть в index.php, то всё нормально. Если потом верх перенести в header.php, то получается вот так:
      http://i.imgur.com/5cwALW4.jpg
      Ошибок при переносе нет. Потом обратно код вставляю в индекс и снова всё нормальною Самое интересное, что так показывает инспектор, а вот в html коде браузера всё как положено. Но инспектор не врет, из-за этих пустых строк дизайн съезжает в этом месте, что очень огорчает. Сколько шаблонов делал, так вот впервые!
      Добавляю: так наблюдается только в Хроме! В других браузерах не заметил!

      Ответить3.8 года назад #
    • campusboy3081 cайт: www.youtube.com/c/wpplus

      Я понял причину. Хром не правильно парсит страницу, потому что она сохранена скорее всего в UTF-8 с BOM. Перекодируйте в UTF-8 без BOM и проблема решается.

      1
      Ответить3.8 года назад #
      • Роман

        Всё работает, ничего не съезжает. Спасибо.

        Ответить6.4 лет назад #
  • А как можно на поддоменный вордпресс вставлять шапку с родительского сайта?

    Ответить4.6 года назад #
  • campusboy3081 cайт: www.youtube.com/c/wpplus

    Столкнулся с интересной проблемой. Если, к примеру, в шапке прописать

    $var= 1;

    Затем, к примеру, в index.php

    var_dump ($var);

    То выведется NULL. Начал копать, оказалось, что такая беда, если подключать шапку через get_header. Если прописать так:

    <?php include (TEMPLATEPATH . '/header.php'); ?>

    то начинает всё работать нормально. Кто знает, объясните, пожалуйста, почему так происходит!

    Ответить3.6 года назад #
    • Kama7099

      Это область видимости переменных. Вначале $var= 1;, а потом из функции get_header она вызывается - в результате это разные переменные.

      Надо так:

      global $var;
      $var= 1;
      
      // и в header.php 
      global $var;
      var_dump ($var);
      1
      Ответить3.6 года назад #
      • campusboy3081 cайт: www.youtube.com/c/wpplus

        Да-да, потом вспомнил это, спасибо большое за напоминание основ PHP! Но если сделано через include, ведь это же в точности равносильно get_header? Или есть какие-то различия в данном случае?

        Ответить3.6 года назад #
        • Kama7099

          Есть конечно get_header() - это обычная функция PHP: http://wp-kama.ru/function/get_header

          а include подключает файл в тот где вызывается include - по сути она расширяет файл добавляемым кодом...

          Ответить3.6 года назад #
          • campusboy3081 cайт: www.youtube.com/c/wpplus

            Я не то имел в виду. Про видимость, тут понятно. Но может WP и плагины использует какие-то хуки при запросе функции get_header()? То есть если я буду делать обычный include, то может у меня что-либо перестать работать в будущем?

            Ответить3.6 года назад #
            • Kama7099

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

              do_action( 'get_header', $name );

              и есть взаимосвязь с дочерними темами. Хотя это можно не учитывать если не публичную тему делаете.

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

              1
              Ответить3.6 года назад #
  • function get_header( $name = null ) {
    ..........
    do_action( 'get_header', $name );

    Насколько я понимаю, к функции get_header() с помощью хука get_header цепляется какое-то действие something_doing(). Это действие должно быть где-то прописано и оно должно содержать строчку add_action ( 'get_header', 'something_doing', 10, 1);
    Не подскажете, что это за действие и где оно прописано?

    Ответить1.8 года назад #
    • Kama7099

      Все верно понимаешь, только совсем не факт что к этому хуку вообще что-то цепляется, там может быть "пусто"... По умолчанию в ВП ничего там не цепляется, это просто хук... Про хуки читай тут...

      Ответить1.8 года назад #
Здравствуйте, !     Войти . Зарегистрироваться