Отображение сообщений Wordpress на двух страницах

У меня на сайте три страницы. Назовем их home, page2 и page3. Моя «домашняя» страница настроена как статическая главная страница. Моя «страница2» настроена как страница блога.

Я хочу следующее:

Я хочу, чтобы страница2 отображала сообщения в блоге с определенной категорией (идентификатор которой известен).

И

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

PHP-код для отображения сообщений только с определенной категорией (или, в моем случае, для отображения сообщений, исключая две категории) выглядит следующим образом:

<?php query_posts($query_string . '&cat=-3,-8'); ?>
<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
        <div class="post" id="post-<?php the_ID(); ?>">
        <h3><a href="<?php the_permalink() ?>" rel="bookmark"
            title="Permanent Link to <?php the_title_attribute(); ?>">
            <?php the_title(); ?></a></h3>
        <?php the_excerpt('Read the rest of this entry &raquo;'); ?>
        </div><!-- /.post-->

Теперь в моем page.php у меня есть следующий код для отображения сообщений с одной категорией:

<?php
    // BEGIN IF PAGE is newspaper articles page
    if ( is_page('newspaper') ) {

        //BEGIN POST REGION

        query_posts($query_string . '&cat=8'); ?>
        <?php if (have_posts()) : ?>
            <?php while (have_posts()) : the_post(); ?>
                <div class="post" id="post-<?php the_ID(); ?>">
                <h3><?php the_title(); ?></h3>

                <?php the_content('Read more &raquo;'); ?>


                </div><!-- /.post-->

            <?php endwhile; ?>

        <?php else : ?>

        <?php endif; ?>

        <?php

    } //end if is_page
?>

Но он не показывает правильные сообщения на странице газеты (или странице 3 в этом вопросе). Однако это работает для страницы статей (главная страница блога index.php).

РЕДАКТИРОВАТЬ: я также пробовал следующее (но это не работает). Я поместил это в файл index.php:

<?php
if ( is_page('newspaper') || is_home() ) { // START if is home

?>
<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
        <div class="post" id="post-<?php the_ID(); ?>">
            <h3><a href="<?php the_permalink() ?>" rel="bookmark"
                title="Permanent Link to
                <?php the_title_attribute(); ?>">
                <?php the_title(); ?></a></h3>

            <!--<p><?php the_time('F jS, Y') ?> <?php //the_author() ?></p>-->

            <?php the_excerpt('Read the rest of this entry &raquo;'); ?>


        </div><!-- /.post-->

    <?php endwhile; ?>

<?php else : ?>

<?php endif; ?>

<?php
} //end if is_home() or is_page()
?>

Опять же, это показывает сообщения на главной странице блога, но не показывает сообщения на странице газеты...

Поэтому вопрос простой (я думаю). Как показать сообщения на другой странице, НЕ ТОЛЬКО на главной странице блога?

Спасибо! Амит


person Amit    schedule 02.08.2010    source источник


Ответы (4)


Вместо того, чтобы исключать категории и исключать страницы и изменять стандартный цикл Wordpress, используйте новый запрос, например:

<?php $my_query = new WP_Query('category_name=mycategory&showposts=1'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<h3><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
<?php the_title(); ?></a></h3>
<?php the_excerpt('Read the rest of this entry &raquo;'); ?>
<?php endwhile; ?>

Это можно использовать внутри стандартного цикла WP и использовать несколько раз на странице/публикации или в шаблоне страницы без конфликтов. (Включите выполнение php, чтобы использовать его в редакторе страниц/сообщений). Справочник по функциям/WP Query « WordPress Codex

Это также хорошо подходит для использования шаблонов страниц для создания разных страниц с сообщениями в блогах: Шаблоны страниц « WordPress Codex, но не забывайте, что WP также использует страницы категорий, в зависимости от вашей темы: Шаблоны категорий « WordPress Codex .

person markratledge    schedule 02.08.2010
comment
Позвольте мне попробовать ваш способ. Однако я должен сказать, что я читал на форумах Wordpress, что использование двух разных страниц для отображения двух разных типов сообщений невозможно. Вместо этого вы можете использовать категории, где отображаемая страница фактически является архивом категории. Однако, если ваше решение работает, вы только что сэкономили мне массу работы. - person Amit; 02.08.2010
comment
К сожалению, использование категорий не сработало бы для меня, потому что две страницы, на которых должны быть сообщения, являются раскрывающимися страницами из родительской ссылки (и я использую динамическую навигацию, а не жестко запрограммированную) ... Нет никакого способа дать категория родительская страница (только родительская категория). - person Amit; 02.08.2010
comment
Вы должны прокомментировать форумы Wordpress, которые утверждают, что выполнение этого невозможно и не является встроенной функцией Wordpress, что Wordpress имеет только 1 страницу блога. Поверьте мне, таких тем несколько. - person Amit; 02.08.2010
comment
Рад, что это сработало; Я добавил несколько примечаний к шаблонам страниц и категорий. Вы можете добавить страницы категорий в виде раскрывающихся списков, но, как вы говорите, их, возможно, придется жестко закодировать. - person markratledge; 02.08.2010

Я думаю, вам нужно сделать разные шаблоны для разных страниц. Перейдите по этой ссылке http://codex.wordpress.org/Pages.

person Rojan    schedule 02.08.2010

Я думаю, что эта ветка отвечает на вопрос и делает то, что вы хотите. http://wordpress.org/support/topic/show-only-x-category-posts-on-page?replies=9#post-1053767

person Jamie Morgan    schedule 02.08.2010

Использование строки 'газета' в is_page('газета') является потенциальным источником проблемы. Это может быть легко написано с ошибкой. Вы когда-нибудь пробовали использовать идентификатор страницы? Что-то типа

is_page('999')
person sprain    schedule 02.08.2010