Размещение заголовка страницы в хедере?

15 февр. 2015 г., 01:51:09
Просмотры: 82.5K
Голосов: 4

Обычно в WordPress заголовок страницы отображается в области контента. Я хочу, чтобы заголовок страницы появлялся в области хедера. Похоже, для этого нужно удалить его из текущего местоположения в content-page.php и поместить в header.php. Но content-page.php вызывается из page.php, который вызывает content-page из цикла while (while ( have_posts() ) : the_post(); ...) -- поэтому мне, вероятно, придется также переместить или скопировать это в хедер. Кажется слишком сложным.

Может быть, имеет больше смысла переместить часть HTML хедера в контент страницы, чтобы не запускать цикл while более одного раза?

(В качестве учебного инструмента я воссоздаю существующий HTML-сайт с помощью WordPress, используя стартовую тему _s.)

--- РЕДАКТИРОВАТЬ ---

Спасибо за ответы. Очень полезно. Вот результаты некоторых тестов, основанных на ваших ответах. Учитывая следующий код в хедере (вне цикла):

wp_title(): <?php wp_title('', true,''); ?><br>
the_title(): <?php the_title(); ?><br>
single_post_title(): <?php single_post_title(); ?><br>
$post->post_name: <?php echo 'имя страницы: ' . $post->post_name; ?><br>
ispage? : <?php echo (is_page() ? 'да' : 'нет'); ?><br>
ispage(about-us) : <?php echo (is_page('about-us') ? 'да' : 'нет'); ?><br>
ispage(About Us) : <?php echo (is_page('About Us') ? 'да' : 'нет'); ?>

При просмотре страницы "О нас" я получаю:

wp_title() О насВ Скинии
the_title(): О нас
single_post_title(): О нас
$post->post_name: имя страницы: about-us
ispage? : да
ispage(about-us) : да
ispage(About Us) : да

При просмотре Главной страницы я получаю:

wp_title(): В Скинии Мой девиз сайта
the_title(): Главная
single_post_title(): Главная
$post->post_name: имя страницы: home
ispage? : да
ispage(about-us) : нет
ispage(About Us) : нет

А при просмотре записи "Привет, мир!" я получаю:

wp_title(): Привет, мир!В Скинии
the_title(): Привет, мир!
single_post_title(): Привет, мир!
$post->post_name: имя страницы: hello-world
ispage? : нет
ispage(about-us) : нет
ispage(About Us) : нет

Вывод: я могу использовать the_title() или single_post_title() (wp_title возвращает больше текста, чем мне нужно). И я могу проверять is_page(...), чтобы отображать конкретное название страницы при просмотре записи.

Спасибо!

1
Комментарии

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

tacudtap tacudtap
16 февр. 2015 г. 03:44:01
Все ответы на вопрос 3
4

Если вам нужен только заголовок, вы можете легко запросить его вне цикла.

Попробуйте вызвать the_title() в вашем хедере. Это должно сработать

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

РЕДАКТИРОВАНО: функция для вызова - get_the_title($post->ID), так как the_title() не позволяет указать ID записи в качестве аргумента. Вы можете проверить в Wordpress Codex функции, которые позволяют запрашивать информацию о вашей записи вне цикла.

15 февр. 2015 г. 04:04:59
Комментарии

the_title предназначена для использования только внутри цикла. Чтобы получить заголовок записи вне цикла, используйте get_the_title( $post->ID )

Rachel Baker Rachel Baker
15 февр. 2015 г. 20:42:17

Да, извините, я перепутал эти две функции.

mathieuhays mathieuhays
15 февр. 2015 г. 22:04:04

На самом деле, я перепроверил, и the_title() действительно работает вне цикла. В случае архивных шаблонов она выводит заголовок первой статьи. В случае single.php и page.php она выводит заголовок страницы. Может быть полезно в некоторых случаях, но не рекомендуется документацией.

mathieuhays mathieuhays
15 февр. 2015 г. 23:05:26

Очень интересно! Как я уже говорил, я новичок в WP, поэтому для меня ничто не очевидно... (Включая тот факт, что, по-видимому, я не могу нажать Enter для переноса строки в комментарии — пожалуй, я опубликую отдельную запись ниже.

user781470 user781470
16 февр. 2015 г. 00:44:00
2

Вам необходимо использовать функцию wp_title();

Если вы пытаетесь использовать заголовок записи следующим образом:

<head> 
 <title> заголовок записи здесь </title> 
</head>

Вам нужно добавить wp_title(' ', true , ' ');

<head>
 <title> <?php wp_title('', true,''); ?> </title>
</head>

Например: Если название вашей записи было "Привет, мир", то "Привет, мир" теперь будет отображаться во вкладке браузера.

http://codex.wordpress.org/Function_Reference/wp_title

15 февр. 2015 г. 04:38:53
Комментарии

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

cybmeta cybmeta
15 февр. 2015 г. 11:35:10

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

user781470 user781470
16 февр. 2015 г. 20:11:28
0

Хотя вышеупомянутые методы работают на данный момент, разработчики ядра WordPress рекомендуют следующее:

Начиная с версии 4.1 и темы Twenty Fifteen, рекомендуемый способ для тем отображать заголовки — это добавление поддержки темы следующим образом: -Константин Обенланд

Вы можете добавить эту строку в файл functions.php вашей темы после after_setup_theme. или

с той же страницы,

Начиная с версии 4.1 и темы Twenty Fifteen, рекомендуемый способ для тем отображать заголовки — это добавление поддержки темы следующим образом:

function theme_slug_setup() {
    add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'theme_slug_setup' );

Поддержка должна быть добавлена на хуке after_setup_theme или init, но не позднее. Она не принимает никаких дополнительных аргументов.

Что это делает: позволяет WordPress выбирать заголовок страницы в шапке, без использования жестко заданных тегов <title> в файле header.php.

Ваш заголовок будет отображаться в следующем формате.

Заголовок страницы - Название сайта

15 нояб. 2018 г. 11:05:58