В общем у меня такая структура на главной:
home.php
вывод страницы
<?php $my_query = new WP_Query(‘pagename=about’);
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID; ?>
блаблабла
закончили луп: <?php endwhile; ?><?php rewind_posts(); ?>
вывод через query_posts постов помеченных меткой
<?php query_posts(‘tag=рекомендуем’); ?>
луп
<?php endwhile; else: echo ‘ ‘; endif; ?>
<?php rewind_posts(); ?>
сайдбар
тут у меня условие:
<?php if ( in_category(‘1’) ) {
echo ‘тру ля ля’;
}
elseif ( in_category(‘3’) ) {
echo ‘оп ля ля’;
}
и еще неск. категорий
?>
заметила, в зависимости от того, какой категории принадлежат посты, выводимые через query_posts(‘tag=рекомендуем’);, такое и условие in_category() срабатывает, причем выводится текст для самой старшей (меньший ID) категории, пост которой присутствует в блоке, выведенном query_posts(‘tag=рекомендуем’);
т.е. если в блоке query_posts(‘tag=рекомендуем’); есть посты из категории ID=1, то на главной лезет текст из условия in_category(‘1’), а если есть посты из категории ID=3, при этом нет постов из категорий ID=1 и ID=2, то соотв. лезет текст из условия in_category(‘3’)
Вопрос:
зачем, почему и главное что делать, чтобы на главной в сайдбар не лез текст из условия с in_category()?
Соня, а какой смысл в проверке in_category для морды? Сделай в сайдбаре проверку еще и на is_home.
сайбрар подключается через require(TEMPLATEPATH.’/firstbar.php’) и выводится везде.
is_home почему-то не работает 🙁
вот я понять не могу — почему?
Неужто и его квери перебивают? Впрочем, что-то такое уже было. Сделай в самом начале, может даже в header.php, $is_home=is_home(), а потом проверяй на if ($is_home).
Вставила после <body>
<?php $is_home=is_home(); ?>
а в firstbar.php
<?php if ( $is_home() ) {
echo ‘бла’;
}
elseif ( in_category(‘1’) ) {
echo ‘тра та та’;
}
?>
Получается:
Fatal error: Call to undefined function: () in путь/firstbar.php on line 12
т.е. именно $is_home и есть фатал эррор 🙁
Вот же ж, как заколдованный…
Скобочки лишние убери
if ( $is_home ) {
Теперь еррора нет, но все равно не работает 🙁
Шарясь по форуму майвордпресс еще нашла такое:
вместо (is_home()) писать ($_SERVER["REQUEST_URI"] == "/")
это заработало для главной!
Какой-то загадочный шаблон я состряпала 🙂
Теперь заметила, что и в Pages из in_category вылазит 🙂 Хорошо, что is_page хоть не отказался работать…
WordPress меняет тип страницы, после того, как использовался query_posts. Например если «до» этого страница может быть is_home, то после query_posts(cat= ) будет уже is_category (is_home будет уже false). Много потратил на это времени, единственное, что смог придумать, так это выполнять проверку до query_posts и заносить тип страницы в отдельную глобальную переменную, а в теле вывода уже сравнивать с ней. По другому никак…
по-моему у меня нечто похожее:
вывожу на главной:
и еще раз:
и у меня перестал работать код в сайтбаре:
не слушается, выводит не то…
не подскажите что делать?:)
После вызовов query_posts всякие is_home(), is_category() и т.п. могут отражать "состояние" не страницы, а последнего запроса.
Делать:
в header.php
в сайдбaре
Ю.Б.!!! огромное спасибо! не перестаю восхищаться Вами!!!!
🙂