Как не повторять посты на одной странице?С WP_Query? - PullRequest
0 голосов
/ 20 декабря 2018

Мне нужно отобразить все сообщения на главной странице, которые будут меняться.То есть они не будут повторяться на одной странице.Я отображаю их, используя WP_Query, но для каждого столбца сообщений мне нужно иметь еще одну "posts_per_page".Как это сделать?

Я пытаюсь это:

<?php $my_query = new WP_Query($args); ?>

и

this <?php  $my_query->set('posts_per_page', 3);
$my_query->query($my_query->query_vars); ?>

Вот мой пример кода:

<div class="row">
                <div class="col-xl-9 col-lg-9 col-md-12 featured-posts">
                    <?php  $my_query->set('posts_per_page', 3); $my_query->query($my_query->query_vars); ?>
                    <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
                        <article class="post post-id-<?php echo the_ID(); ?>">
                            <a class="post-thumbnail" href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a>
                            <div class="post-content">
                                <h3 class="post-title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
                                <?php healthybroom_posted_on(); ?>
                                <?php healthybroom_entry_footer(); ?>
                                <p class="post-excerpt"><?php echo get_the_excerpt(); ?></p> 
                            </div>
                        </article>
                    <?php endwhile; ?>
                </div>
                <div class="col-xl-3 col-lg-3 col-md-12 front-random-posts">
                    <?php  $my_query->set('posts_per_page', 5); $my_query->query($my_query->query_vars); ?>
                    <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
                        <article class="post post-id-<?php echo the_ID(); ?>">
                            <a class="post-thumbnail" href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(); ?></a>
                            <div class="post-content">
                                <?php healthybroom_entry_footer(); ?>
                                <h3 class="post-title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
                                <?php healthybroom_posted_on(); ?>
                            </div>
                        </article>
                    <?php endwhile; ?>
                </div>
            </div>

Я хочу, чтобы сообщения не повторялись просто.

1 Ответ

0 голосов
/ 23 декабря 2018

Если у вас 2 цикла со случайными записями и вы хотите, чтобы в 2 циклах не было одинаковых записей, вы можете использовать следующий код:

<!-- We create an array for saving the IDs of the post displaying in the first loop -->
<?php $store_posts_ids = array(); ?>

<div class="row">
    <div class="col-xl-9 col-lg-9 col-md-12 featured-posts">
        <?php 
            $my_query->set('posts_per_page', 3);      
            $my_query->query($my_query->query_vars); 
        ?>
        <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>

             <!-- We store the post id for the second loop -->
             <?php array_push( $store_posts_ids, get_the_ID() ); ?>

             <!-- Your code here -->

        <?php endwhile; ?>
    </div>

    <div class="col-xl-3 col-lg-3 col-md-12 front-random-posts">
        <?php 
            /*
            If you want to display 5 posts, you need to have a loop
            of 7 posts because you have 3 posts in your first loop
            */
            $number_post = 0;
            $my_query->set('posts_per_page', 5);      
            $my_query->query($my_query->query_vars); 
        ?>
        <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
        <?php array( $store_posts_ids, get_the_ID() ); ?>

             <!-- If we have our 5 posts, no need to display more posts -->
             <?php if( $number_post < 5 ): ?> 

                 <!-- If the post is not in the first loop -->
                 <?php if( !in_array( $store_posts_ids, get_the_ID() ) ): ?>
                     <?php $number_post = $number_post + 1; ?>   

                     <!-- Your code here -->

                 <?php endif; ?>

             <?php endif; ?>

        <?php endwhile; ?>
     </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...