Знатоки 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 и ничего больше 🙁
Потому что надо код разбивать на два куска в вашем случае:
Так например сработает.
А вообще читайте кодекс – там все доходчиво и просто.
Дело не в этом.
Вот, например, рабочий кусок:
В нем работает все как надо кроме 4-ой строчки.
Вот в чем трабл.
Пятая-то, к примеру, нормально все отображает.
single_cat_title применяется только в соответсвующих шаблонах(а именно в категориях). Используйте его замену для single.php.
Какую замену, не подскажете?
Кодекс посещал неоднократно, искал хоть какие-то примеры, похожие на то, что я хочу сделать — ничего не нашел.
Скажем так, вот в вышеприведенном примере что мне сделать, чтобы на странице самого поста показывался заголовок в таком виде:
Бла-бла-бла — Название тега этого поста
?
<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; ?>
Я для альтернативного заголовка использовал произвольные поля.
О, сейчас попробую этот код, спасибо.
А про произвольные поля я тоже думаю — но там вроде структура 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)?
О, бинго!
Вот эта штука заработала как мне и требовалось 🙂
И поля действительно лучше тегов (я теги не использую, но вдруг в будущем захотел бы).
Спасибо огромное!
На здоровье! 😀