Добавление второго цикла в тему Wordpress на отдельной странице - PullRequest
5 голосов
/ 11 августа 2010

Я пытаюсь добавить два цикла в тему на двух отдельных страницах: дома и в блоге.

Блог - это, в основном, индекс постов. Это то, что большинство страниц Wordpress по умолчанию в качестве домашней страницы. Чтобы добиться этого, я перешел к «настройкам чтения» и установил «показы на первой странице» как «статические» с «главной страницей», установленной на «Домашнюю страницу», которую я настроил на страницах Wordpress, а «страницей сообщений» - на страницу блога.

Теперь проблема в том, что когда я добавляю цикл на домашнюю страницу, он не работает, возможно потому, что у меня есть страница сообщений, настроенная на другую страницу.

Так как мне заставить цикл работать на домашней странице, а также на странице блога? Кстати, цикл Домашней страницы - это просто заголовок сообщения + дата +, возможно, выдержки. Нужно ли полностью переделывать тему или это просто невозможно в Wordpress?

Да, и цикл, который я использую:

<?php if(have_posts()) : ?>
        <?php while(have_posts()) : the_post() ?>

Ответы [ 2 ]

5 голосов
/ 11 августа 2010

Есть как минимум три способа запуска пользовательских запросов в WordPress.

Query_posts () может определить строку запроса вашего второго цикла.Это легко и очень часто делается.Этот код является базовой структурой, которую я скопировал со страницы кодекса для query_posts () :

//The Query
query_posts('posts_per_page=5');

//The Loop
if ( have_posts() ) : while ( have_posts() ) : the_post();
 ..
endwhile; else:
 ..
endif;

//Reset Query
wp_reset_query();

Вы также можете использовать get_posts () , что аналогично.

<ul>
 <?php
 global $post;
 $myposts = get_posts('numberposts=5&offset=1&category=1');
 foreach($myposts as $post) :
   setup_postdata($post);
 ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
 <?php endforeach; ?>
 </ul> 

Обе функции принимают ряд аргументов, которые объяснены на справочной странице функции query_posts.Приведенные выше аргументы являются только примерами.Список доступных аргументов длинный.

Третий доступный способ - создать экземпляр другого экземпляра объекта запроса WordPress (основной метод запроса WP).Query_posts и get_posts оба запускают второй вызов базы данных после того, как WordPress запускает wp_query по умолчанию.Если вы сильно обеспокоены производительностью или снижением количества обращений к базе данных, я предлагаю узнать, как вы можете взаимодействовать с wp_query, чтобы изменить запрос по умолчанию перед его выполнением.Класс wp_query предоставляет ряд простых методов для изменения запроса.

Удачи!

0 голосов
/ 11 августа 2010

Возможно, WordPress не запускает цикл для вас, потому что вы используете статическую страницу. Но если эта статическая страница определена в вашей теме (поскольку вы включаете PHP-код для отображения цикла, я предполагаю, что это так), вы всегда можете запустить новый цикл самостоятельно * . Просто позвоните query_posts, и ваш код начнет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...