Как получить список сообщений на статической странице, отличной от главной страницы?
Итак, для тысяч пользователей, использующих 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 обычно запускает для вас, когда вы попадаете на первую страницу обычного блога?
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; ?>
Просто чтобы убедиться - вы вообще не используете здесь настройки Reading
? Просто обычная домашняя страница и обычная статическая страница?
- ваша страница
News
является статической страницей, поэтому ее цикл (собственный цикл WP, созданный из URL-адреса) должен отражать это (поэтому не уверен, как это выглядит); -
query_posts()
- функция, предназначенная для настройки такого собственного цикла. Вы не должны использовать его здесь, потому что вы попытаетесь принудительно изменить статическую страницу на индексную страницу, которая закончится ужасным ошибки. - вы можете использовать пользовательские
WP_Query
илиget_posts()
для отображения некоторых сообщений на статической странице, но, скорее всего, вы не получите разбивку на страницы для работы.
В целом я чувствую, что вы здесь изобретаете колесо заново. Settings > Reading
кажется идеальным совпадением.
-
Front page
с вашим статическим контентом и шаблономfront-page.php
. -
Posts page
, который автоматически будет использовать цикл по умолчанию для последних сообщений или может быть настроен с помощью шаблонаhome.php
.
Это похоже на то, что вы пытаетесь сделать чтобы получить, нет?
PS двадцать лет loop.php
пугает меня. Похоже, что удобство использования и здравый смысл были принесены в жертву максимальной условной гибкости.
Я не уверен, что это именно то, что вам нужно, но, может быть, вы захотите взглянуть на мой обходной путь. Это функция, которая отображает список сообщений в любом месте, где вы хотите, с миниатюрами для первого изображения сообщения.
Http://wpworks.wordpress.com/2011/02/01/display-wordpress-post-list-with-custom-size-thumbnails/
Надеюсь, вы найдете это полезным.
С наилучшими пожеланиями,
Альваро