WordPress: Как отображать только сообщения определенной категории? - PullRequest
3 голосов
/ 04 октября 2009

Я довольно новичок в WordPress, но потратил около 50 с лишним часов, изучая его, пробуя что-то в этом роде, и у меня такое ощущение, что я сейчас довольно хорошо справляюсь с этим ..

Однако одна вещь, которую я просто не могу получить, - это чтобы страница выкладывала список постов определенной категории.

Вот мой пример: http://dev.jannisgundermann.com/zoeikin/graphic-design/typographic-posters

У меня есть сообщение, что, если я зайду на него, оно будет работать правильно, но не появится на этой странице.

Почтовая ссылка прямая.

Идентификатор категории - «3», а название категории - «Типографские постеры».

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

<?php
/*
Template Name: Typographic Posters
*/
?>

<?php get_header(); ?>
<?php get_sidebar(); ?>

<?php if (in_category('3')): ?>
<div class="post">

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


  <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
   <div class="post-description">
    <h2><?php the_title(); ?></h2>
    <?php the_content(); ?>
   </div>
   <?=get_image('flutter-image');?>
  </div>


    <?php endwhile; else: ?>
     <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
    <?php endif; ?>

</div>
<?php endif; ?>

<?php get_footer(); ?>

Использование этого кода, однако, только на странице показано, получает заголовок, боковую панель и ничего больше ..

Если бы кто-то мог мне помочь, это действительно помогло бы мне разобраться с этой фильтрацией категорий WordPress.

Спасибо за чтение,

Jannis

Ответы [ 9 ]

11 голосов
/ 04 октября 2009

in_category будет работать только вне цикла на одной странице. Я предлагаю использовать функцию query_posts для решения этой проблемы. Вы можете использовать query_posts('cat=3') или query_posts('category_name=typographic-posters'), чтобы получить сообщения, которые вы ищете.

После получения просто используйте обычный цикл WordPress для доступа к этим сообщениям.

1 голос
/ 20 декабря 2013

Я отфильтровал пост по идентификатору категории, используя метод ниже:

               query_posts('cat=1&showposts=3');
                if (have_posts()) : while (have_posts()) :

                // if(1) {
                    //echo the_category_ID();
                 the_post();
                /**
                 * The default post formatting from the post.php template file will be used.
                 * If you want to customize the post formatting for your homepage:
                 * 
                 *   - Create a new file: post-homepage.php
                 *   - Copy/Paste the content of post.php to post-homepage.php
                 *   - Edit and customize the post-homepage.php file for your needs.
                 * 
                 * Learn more about the get_template_part() function: http://codex.wordpress.org/Function_Reference/get_template_part
                 */

                $is_post_wrap++;
                    if($is_post_wrap == '1') {
                        ?><div class="post-wrap clearfix"><?php
                    }
                    get_template_part('post', 'homepage');

                    if($is_post_wrap == '3') {
                        $is_post_wrap = 0;
                        ?></div><?php
                    }



            endwhile;

            else :
                get_template_part('post', 'noresults');
            endif; 
1 голос
/ 18 ноября 2012

in_category будет работать только вне цикла на одной странице. я Предложите использовать функцию query_posts для решения этой проблемы. Ты можешь используйте query_posts ('cat = 3') или query_posts ('category_name = typographic-posters'), чтобы получить сообщения, которые вы ищем.

После получения просто используйте обычный цикл WordPress для доступа к этим сообщения.

Это сработало отлично, но не забудьте зайти в «Настройки»> «Чтение» и установить для страницы сообщений параметр «Выбрать», иначе он переопределит этот запрос и сбросит все последние сообщения, независимо от категории.

1 голос
/ 04 октября 2009

Самый простой способ - создать файл с именем category-3.php и использовать стандартный код из обычного файла index.php или category.php. Wordpress позаботится о получении сообщений только из категории с id = 3 и дочерних категорий.

0 голосов
/ 07 мая 2012

спасибо, что поделились своей мыслью, это отличная мысль. Обычно вы можете просто скопировать файл index.php или category.php темы в category-3.php и настроить этот шаблон для любой необходимой вам настройки

0 голосов
/ 05 октября 2009

Этот плагин также может помочь вам, если вы хотите иметь возможность изменять отображаемые категории без прохождения кода: http://wordpress.org/extend/plugins/advanced-category-excluder/

0 голосов
/ 05 октября 2009

http://codex.wordpress.org/Template_Tags/query_posts

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

0 голосов
/ 04 октября 2009

Я бы предложил 2-ое Eimantas. Шаблонная иерархия будет использовать category-3.php для отображения сообщений в этой категории. Обычно вы можете просто скопировать файл index.php или category.php темы в category-3.php и настроить этот шаблон для любой необходимой вам настройки. Плюс шаблон категории будет лучше поддерживать нумерацию постов.

Но если вам нужно придерживаться страницы для отображения этих сообщений, см. Также пример Страница сообщений.

0 голосов
/ 04 октября 2009

Просто добавьте перед циклом:

<?php query_posts="cat=3&showposts=5">

Это заставит цикл отображать 5 сообщений (showposts = 5) из категории 3 (cat = 3).

...