Как получить список сообщений на статической странице, отличной от главной страницы?


Итак, для тысяч пользователей, использующих WP в качестве CMS, типичным подходом является использование опции "Статическая страница" в Настройках > Чтение страницы администратора.

Однако я нахожусь в другом сценарии: на нашей главной странице отображается статический контент (home.php шаблон управляет этим), и у нас есть вторичная статическая страница (называемая Новости), которая должна отображать список самых последних сообщений (то, что вы обычно находите на главной странице среднего блога).

Я настроил страница новостей для использования пользовательского шаблона (page-NewsIndex.php ); на основе двадцатилетнего archive.php шаблон, этот файл отображает заголовок, вызывает функцию rewind_posts(), а затем вызывает функцию get_template_part ("цикл", "newsindex"), так что мы в конечном итоге получаем loop.php (или loop-newsindex.php, если он существует). Персиковый.

Loop.php имеет вашу типичную структуру цикла (опять же, основанную на двадцатилетнем loop.php шаблон - изменен для упрощения, так как нам не нужны циклы 3 типа):

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

Однако, когда мы доступ к странице, этот цикл, похоже, использует текущий URL-адрес для определения отображаемых сообщений, как если бы страница новостей определяла категорию - что для нас не так. Какие были бы подходящие для меня query_posts для имитации query_posts, которые WP обычно запускает для вас, когда вы попадаете на первую страницу обычного блога?

Author: FOR, 2010-10-22

3 answers

Способ получения сообщений в моем блоге заключается в следующем:

<?php $recentPosts = new WP_Query(); $recentPosts->query('showposts=5&cat=CAT_ID_GOES_HERE'); while($recentPosts->have_posts()): $recentPosts->the_post(); ?>

Затем вы должны пойти и создать код для управления отображением каждого сообщения. Итак, для действительно простого примера:

<h1 class="title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>

Затем в конце сообщений вам просто нужно завершить цикл while:

<?php endwhile; ?>
 3
Author: Adam Thompson, 2010-10-22 02:11:33

Просто чтобы убедиться - вы вообще не используете здесь настройки Reading? Просто обычная домашняя страница и обычная статическая страница?

  • ваша страница News является статической страницей, поэтому ее цикл (собственный цикл WP, созданный из URL-адреса) должен отражать это (поэтому не уверен, как это выглядит);
  • query_posts() - функция, предназначенная для настройки такого собственного цикла. Вы не должны использовать его здесь, потому что вы попытаетесь принудительно изменить статическую страницу на индексную страницу, которая закончится ужасным ошибки.
  • вы можете использовать пользовательские WP_Query или get_posts() для отображения некоторых сообщений на статической странице, но, скорее всего, вы не получите разбивку на страницы для работы.

В целом я чувствую, что вы здесь изобретаете колесо заново. Settings > Reading кажется идеальным совпадением.

  1. Front page с вашим статическим контентом и шаблоном front-page.php.
  2. Posts page, который автоматически будет использовать цикл по умолчанию для последних сообщений или может быть настроен с помощью шаблона home.php.

Это похоже на то, что вы пытаетесь сделать чтобы получить, нет?

PS двадцать лет loop.php пугает меня. Похоже, что удобство использования и здравый смысл были принесены в жертву максимальной условной гибкости.

 1
Author: Rarst, 2010-10-22 06:01:28

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

Http://wpworks.wordpress.com/2011/02/01/display-wordpress-post-list-with-custom-size-thumbnails/

Надеюсь, вы найдете это полезным.

С наилучшими пожеланиями,

Альваро

 0
Author: , 2011-02-01 17:36:53