WordPress:Как отображать только записи, относящиеся к определенной категории?

StackOverflow https://stackoverflow.com/questions/1515753

Вопрос

Я довольно новичок в 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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

               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; 

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

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

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

Я бы поддержал предложение Эймантаса.Тот самый Иерархия шаблонов будет использовать category-3.php для отображения сообщений в этой категории.Обычно вы можете просто скопировать index.php или category.php темы в category-3.php и настроить этот шаблон для любых необходимых вам настроек.Кроме того, шаблон категории будет лучше поддерживать разбивку сообщений на страницы.

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top