Динамический заголовок в шапке блога

Знатоки WP и PHP, помогите кто чем может 🙂

Делаю я, значит, динамический заголовок (H1) в шапке блога.
На главной стр. один заголовок, на стр. поста — другой, в категориях — третий и т. д.

К примеру, такой кусок:

<h1><?php if (is_home ()) {echo 'Бла-бла-бла';} 
elseif (is_category()) {echo 'Бла-бла-бла | '; single_cat_title();}
ну и так далее по всем видам страниц
</h1>

Проблемы начинаются там, где я хочу отобразить что-нибудь, не относящееся к текущему виду генерируемой страницы.

То есть, если elseif (is_category()), то single_cat_title(); без проблем отображается.
А если elseif (is_single()), то название категории фиг выводится. Пустое место.

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

elseif (is_single()) {echo 'Бла-бла-бла | '; single_tag_title();

Чтобы в H1 заключался тег этого поста.

Но как я ни кручу, в случае с single работает только single_post_title и ничего больше 🙁

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

<?php if ( is_single()) ) { ?>

<h1>bla-bla</h1>

<?php } ?>

Так например сработает.

А вообще читайте кодекс – там все доходчиво и просто.

Дело не в этом.
Вот, например, рабочий кусок:

<h1>
<?php 
if (is_home ()) {echo 'бла-бла';} 
elseif (is_single()) {echo 'бла-бла'; single_cat_title();} 
elseif (is_category()) {echo 'бла-бла'; single_cat_title();} 
?>
</h1>

В нем работает все как надо кроме 4-ой строчки.
Вот в чем трабл.
Пятая-то, к примеру, нормально все отображает.

single_cat_title применяется только в соответсвующих шаблонах(а именно в категориях). Используйте его замену для single.php.

Используйте его замену для single.php.

Какую замену, не подскажете?

Кодекс посещал неоднократно, искал хоть какие-то примеры, похожие на то, что я хочу сделать — ничего не нашел.

Скажем так, вот в вышеприведенном примере что мне сделать, чтобы на странице самого поста показывался заголовок в таком виде:
Бла-бла-бла — Название тега этого поста
?

<title><?php if ( is_single() ) echo ‘Бла-бла-бла’; else bloginfo(‘name’); wp_title(‘ — ‘); ?></title>

<title><?php if ( is_single() ) echo 'Бла-бла-бла'; else bloginfo('name'); wp_title(' — '); ?></title>

Название тега поста, а не title. И не в тайтле, а в H1 (но это мелочи) 🙂

Ведь в этом проблема — название самого поста я могу вывести, вставив просто single_post_title в код, который я привел выше.

Я попытаюсь объяснить, для чего мне это.

Мне нужны разные ключевики в каждом H1 на каждой странице.
При этом, меня не устраивает вариант просто названия поста в H1 (он у меня идет ниже в H2).

Поэтому я бы использовал теги для этой задачи. Было бы удобно…

<?php foreach (get_the_tags() as $tg) echo $tg->name; ?>

Я для альтернативного заголовка использовал произвольные поля.

<?php foreach (get_the_tags() as $tg) echo $tg->name; ?>

Я для альтернативного заголовка использовал произвольные поля.

О, сейчас попробую этот код, спасибо.

А про произвольные поля я тоже думаю — но там вроде структура key: value? Двойная типа. Или можно просто одну часть заполнять?

вставил так (в середину общего куска):

elseif (is_single()) {echo ‘Бла-бла’; foreach (get_the_tags() as $tg) echo $tg->name;}

Пишет ошибку.
Что я не так делаю? 🙂

Конечно, пара. Делаете один раз key, скажем, H1 и каждому посту прописываете в это поле нужный текст. Выводится просто:
<?php echo get_post_meta($post->ID, ‘H1’, true); ?>
Есть плагины для красивого оформления полей в админке.

Ошибку? Какую? Ставите вне цикла (Loop)?

Выводится просто:
<?php echo get_post_meta($post->ID, 'H1', true); ?>

О, бинго!
Вот эта штука заработала как мне и требовалось 🙂

И поля действительно лучше тегов (я теги не использую, но вдруг в будущем захотел бы).

Спасибо огромное!

На здоровье! 😀

Anonymous
Отправить
Ответ на: