2013-04-08 3 views
1

У меня очень странная проблема с wordpress на данный момент. Я новичок в WordPress, и, возможно, поэтому я считаю, что это немного беспорядок в плане структуры кода, но я ценю объем информации, которую мы можем найти в Интернете на платформе.query_posts, делающий условное заявление disapear в Wordpress

После поиска через несколько форумов, я, наконец, нашел кусок кода, который загружает сообщения на основе определенных категорий на главной странице:

Заявление # 1

<?php if(is_home()) { 
query_posts('cat=6,9&&showposts=7'); 
} 
if (have_posts()) : while (have_posts()) : the_post(); 
get_template_part('loop', 'index'); 
endwhile; ?> 

Это работает, как должно, но есть одна очень странная вещь. В моем шаблоне sidebar.php у меня есть условный код для главной страницы, который отображает холст с некоторым контентом. Я хочу, чтобы это только шоу на домашней странице поэтому это, как я это делаю:

Заявление # 2

<?php if(is_home()):?> 
<div id="portrait_image"> 
<div class="container"> 
<canvas id="panel" width="370" height="175"></canvas> 
</div> 
</div> 
<?php endif;?> 

Это также работает отлично, за исключением того, когда я добавил первый if(is_home) заявление выше, кажется, по какой-либо причине отключите второй оператор if(is_home). Я поцарапал голову часами по этому вопросу, также отмечая, что если я положу второе утверждение выше первого, это внезапно сработает.

Но потом я обнаружил что-то еще более странное. Если я удалю cat=6,9&& из инструкции # 1, то работает # 2. Я не вижу никакой логики относительно того, как вызвать разные категории сообщений, чтобы препятствовать условному выражению, которое просто вызывает холст, если вы находитесь на главной странице внутри шаблона sidebar.php.

Неужели кто-то сталкивается с этой странной проблемой, является ли мой синтаксис неправильным или может указать мне в направлении его решения?

Заранее благодарен!

+0

P.S. Кстати, я попытался добавить даже «привет» ко второму утверждению, чтобы увидеть, будет ли оно работать, но пока ничего не появляется. – HGB

ответ

0

У меня была аналогичная проблема с моим sidebar.php.

Вызов wp_reset_query функции Перед второго if(is_home)

<?php wp_reset_query(); ?> 

из Кодекса WordPress:

wp_reset_query() восстанавливает $ WP_Query и глобальные почтовые данные к исходному основному запросу .

Я также нашел this blog post, который подробно описывает эту функцию.

Кажется, у автора также была аналогичная проблема, как и вы.

+0

Ты звезда! Это исправило мою проблему! Но какое грязное исцеление? Вы знаете причину, почему это происходит? – HGB

+0

wp_reset_query() восстанавливает $ wp_query и данные глобальных сообщений в исходный основной запрос. Посмотрите на приведенную выше ссылку, чтобы узнать больше. – user850010

+0

Если вы нашли этот ответ полезным, попробуйте принять его, нажав на большой флажок в левой части этого ответа. – user850010