Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: JannisОтветов: 9

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

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

Яннис

listwordpressphpfiltercategories

Ответы

Ответ 1 · рейтинг 11 · Karthik Viswanathan

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

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

Ответ 2 · рейтинг 1 · Eimantas

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

Ответ 3 · рейтинг 1 · Mike

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

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

Ответ 4 · Tomer Lichtash

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

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

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

Ответ 5 · Michael

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

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

Ответ 6 · Adam

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

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

Ответ 7 · Damien MATHIEU

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

Ответ 8 · FAISAL

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

               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;

Ответ 9 · рейтинг -1 · Abacus

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы