Как показать несколько постов одной категории? - PullRequest
0 голосов
/ 05 марта 2020

Я хочу показать несколько сообщений одной и той же категории, но хочу напечатать название категории только один раз. Сообщения, имеющие одну и ту же категорию, будут напечатаны рядом с уже напечатанным названием категории. Ниже приведена картина вывода, который я хочу: enter image description here

Вот мой код

<?php 
                            $args = array('post_type' => 'books_section', 'posts_per_page' => -1 );
                            $the_query = new WP_Query($args);
                            while ($the_query -> have_posts()): $the_query -> the_post();
                        ?>
                        <div class="col-3 col-sm-3 col-md-2 col-lg-1 col-xl-1">
                            <div class="img-category w-75">
                                <?php 
                                $category = get_the_category(); 

                                if($category[0]){

                                    $thumbnail = the_post_thumbnail('thumbnail');

                                    echo "<img height='50' width='100' alt='' src='$thumbnail'>";
                                }
                                ?>
                                <!-- <img height="50" width="100" alt="" src="<?php the_field('category_image'); ?>"> -->
                            </div>
                        </div>
                        <div class="col-9 col-sm-9 col-md-10 col-lg-11 col-xl-11">
                            <h5 class="text-capitalize">
                                <?php
                                    $category = get_the_category();
                                    echo $category[0]->cat_name;
                                ?>
                            </h5>
                        </div>
                        <div class="col-12 col-sm-12 col-md-6 col-lg-3 col-xl-3 mt-5">
                            <a class="text-decoration-none" href="<?php the_field('amazon_book_link');?>" target="">
                                <div class="book-hover">
                                <?php the_post_thumbnail('full'); ?>
                                    <!-- <img alt="" src="./assets/images/Layer 40@1X.png" class="" height="350" width="250"> -->
                                </div>
                                <h6 class="text-capitalize font-weight-bold text-center mt-2 book-title"><?php the_title(); ?></h6>
                                <?php if( get_field('audio_book') == 'yes' ): ?>
                                    <h6 class="text-capitalize font-weight-bold text-center mt-2 book-type">Audio Book</h6>
                                    <?php endif; ?>
                                <?php if( get_field('comng_soon') == 'yes'): ?>
                                    <h6 class="text-capitalize font-weight-bold text-center mt-2 book-type">Coming Soon</h6>
                                <?php endif; ?>
                            </a>
                        </div>
                        <?php endwhile; ?>

И вот результат, который я получаю: enter image description here

Теперь я получаю результат: l oop печатает все сообщения вместе с названием их категории по отдельности, но мне нужно имя категории только один раз и распечатаю все сообщения этого особая категория. И тогда l oop должен распечатать другие посты новой категории. Помогите мне, пожалуйста.

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Те, кто посвятил мой ответ, были для меня непростой задачей, особенно для начинающего. Поэтому я экспериментировал и нашел способ понять это. Вот код, который работает отлично.

<?php 
    $args = array(
               'orderby' => 'name',
               'hide_empty'=> true,
                 );
    $categories = get_categories($args);
    foreach ($categories as $cat) {
?>
<h5><?php echo $cat->name; ?></h5>
<?php
    $args = array('post_type' => 'books_section', 'posts_per_page' => -1, 'category_name' => $cat->name);
    $the_query = new WP_Query($args);
    while ($the_query -> have_posts()): $the_query -> the_post();   
?>
//Rest of the HTML goes here to style books
<?php endwhile;?>
<?php 
   }
?>

То, что я сделал в этом коде: сначала я запустил foreach l oop, чтобы получить все категории по одной, а затем в этом l * 1006. * (вложенный l oop) получил все мои сообщения за некоторое время l oop, дополнительно добавив параметр имени категории, так что будут выбраны только те сообщения, которые имеют указанное выше имя категории, сгенерированное foreach l oop. Таким образом, когда первый раз внешний l oop получает категорию, он перемещается внутрь, в то время как l oop получает все сообщения, связанные с категорией, а затем покидает внутренний l oop. Процесс повторяется снова и снова, и, наконец, я получил все свои посты в соответствии с их категориями.

0 голосов
/ 05 марта 2020

Это отвечает в точности на то, что вы просили.

В примере он устанавливает ограничение в 5 сообщений, вы можете установить его равным -1 для неограниченного количества сообщений.

Кроме того, если вы хотите скрыть категории, в которых нет записей, просто добавьте это в $ args метода get_categories ():

'hide_empty' => true

Надеюсь, это поможет!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...