WordPress как на ладони
wordpress jino

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 WP 4.9

<?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вязанные функции

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

get_header 17 комментариев
Полезные 1 Вопросы 1 Все
  • Xoxol

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

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

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

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

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

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

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

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

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

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

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

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

    $var= 1;

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

    var_dump ($var);

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

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

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

    Ответить2.6 года назад #
    • Kama4660

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

      Надо так:

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

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

        Ответить2.6 года назад #
        • Kama4660

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

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

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

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

            Ответить2.6 года назад #
            • Kama4660

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

              do_action( 'get_header', $name );

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

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

              1
              Ответить2.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);
    Не подскажете, что это за действие и где оно прописано?

    • Kama4660

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

  • Андрей

    Почему-то вордпресс отвечает : Call to undefined function get_header() in D:\OpenServer\domains\ ... t.php on line 6. Код страницы :

    Что это может быть ? В других шаблонах работает. А в этом отказывается. Точно так же и с get_footer();

    • Андрей

      Да. Забыл указать, что запускаю session_start() на предыдущей и на проблемной странице ...

Здравствуйте, !

Ваш комментарий