0

Edit - I already tried wp_reset_query() it doesn't work, the first loop executes as intended but the second loop just jumps to the else and I get not working I am using 2 custom WP_Query loops in one page, the first is to get posts from a certain category, and the second is just getting the posts by dates,

here's the code

            <?php
            $args = array(
                'post_type' => 'post',
                'post_status' => 'any',
                'category' => 3,
                'posts_per_page' => 4);
            $query_var= new WP_Query($args);
            if ($query_var->have_posts()):
                while ($query_var->have_posts()):
                    $query_var->the_post(); ?>
                    <div class="patta p-4 col-lg-3 col-md-6">
                        <!-- FIX THIS -->
                        <img class="card-img-top"
                             src="<?php the_post_thumbnail(); ?>"
                             alt="<?php the_post_thumbnail_caption() ?>"/>
                        <h4><b><?php the_title(); ?></b><br></h4>
                        <p>
                            <a href="#">Link</a>
                        </p>
                    </div>
                <?php
                endwhile;
                wp_reset_postdata();
            endif;
            ?>

second loop

<?php
            $args = array(
                'post_type' => 'post',
                'post_status' => 'any',
                'orderby' => 'post_date',
                'order' => 'DESC',
                'posts_per_page' => 4);
            $query_var= new WP_Query($args);
            if ($query_var->have_posts()):
                while ($query_var->have_posts()):
                    $query_var->the_post(); ?>
                    <div class="patta p-4 col-lg-3 col-md-6">
                        <!-- FIX THIS -->
                        <img class="card-img-top"
                             src="<?php if (the_post_thumbnail()): the_post_thumbnail(); else:echo 'https://lamasec.pythonanywhere.com/static/img/vulnhub.png';endif; ?>"
                             alt="<?php the_post_thumbnail_caption() ?>"/>
                        <h4><b><?php the_title(); ?></b><br></h4>
                        <p>
                            <a href="#">Link</a>
                        </p>
                    </div>
                <?php
                endwhile;
                wp_reset_postdata();
                else: echo 'not working';
            endif;
            ?>

I am using wp_reset_postdata(); but it doesn't seem to be working.

  • please try : wp_reset_query(); – vikrant zilpe Dec 24 '18 at 9:18
  • also try this code : $wpdb->reset_postdata() – vikrant zilpe Dec 24 '18 at 9:27
  • Both of them don't work. @vikrantzilpe – Sahil Shukla Dec 24 '18 at 9:29
  • I don’t see how that function is related to your problem – Milo Dec 24 '18 at 9:36
  • you set it up again wordpress environment ? – vikrant zilpe Dec 24 '18 at 10:30
0

After reading the documentation for multiple loops in one page here, I only had one WP_Query for both the loops. I stored the ID's of all the posts from the desired category and check for them in the second loop and continue over them. Here's the final code -

first loop

        <?php
        $args = array(
            'post_type' => 'post',
            'post_status' => 'any',
            'category' => 3,
            'posts_per_page' => 4);
        $query_var = new WP_Query($args);
        if ($query_var->have_posts()):
        while ($query_var->have_posts()):
            $query_var->the_post();
            $do_not_duplicate[] = $post->ID; ?>
            <div class="patta p-4 col-lg-3 col-md-6">
                <!-- FIX THIS -->
                <img class="card-img-top"
                     src="<?php the_post_thumbnail(); ?>"
                     alt="<?php the_post_thumbnail_caption() ?>"/>
                <h4><b><?php the_title(); ?></b><br></h4>
                <p>
                    <a href="#">Link</a>
                </p>
            </div>
        <?php endwhile; ?>

Second Loop

if (have_posts()):
                while (have_posts()):
                    the_post();
                    if (in_array($post->ID, $do_not_duplicate)) continue;
                    ?>
                    <div class="patta p-4 col-lg-3 col-md-6">
                        <!-- FIX THIS -->
                        <img class="card-img-top"
                             src="<?php the_post_thumbnail(); ?>"
                             alt="<?php the_post_thumbnail_caption() ?>"/>
                        <h4><b><?php the_title(); ?></b><br></h4>
                        <p>
                            <a href="#">Link</a>
                        </p>
                    </div>
                <?php
                endwhile;
                endif;
            endif;
            ?>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.