1

The blog page should show scheduled posts in the main loop. I've done that with this code:

/**
 * Show scheduled posts in main loop
 */
function fa_show_scheduled_posts( $query ) {

    if( $query->is_main_query() && ! is_admin() && $query->is_home() ) {
        $query->set( 'post_status', [ 'publish', 'future' ] );
    }
}
add_action( 'pre_get_posts', 'fa_show_scheduled_posts' );

But there's a different section that shows the 4 latest posts with a WP_Query. Even if I change the post status to only be published posts, it shows the scheduled posts.

Is there a way to show them in the main loop but not the WP_Query?

My WP_Query code:

      <?php
      $args = array(
      'showposts' => 4,
      'post_status' => array( 'publish' )
      );

      $the_query = new WP_Query( $args );

Update with my new code, with wp_reset_postdata() coming after everything

  <?php
  $args = array(
  'showposts' => 4,
  'post_status' => array( 'publish' )
  );

  $the_query = new WP_Query( $args );

  if ( $the_query->have_posts() ) { ?>

    <div class="featured-posts__wrap">

      <div class="featured-posts  js-featured-posts">

        <?php while ( $the_query->have_posts() ) {
            $the_query->the_post(); ?>
            
            <div class="featured-posts__post" data-title="<?php the_title(); ?>">

              <?php if ( has_post_thumbnail() ) { ?>

                <div class="post-thumb">
                  <a href="<?php the_permalink(); ?>" rel="bookmark">
                  <?php the_post_thumbnail('full'); ?>
                  </a>
                </div>

              <?php } else { ?>

              <?php } ?>

          </div>

        <?php } ?>

      </div>

    </div>

  <?php } ?>


  <div class="featured-posts-info">         
    <?php the_title( '<h2 class="featured-posts-info__title">', '</h2>' ); ?>
  </div>


  <?php wp_reset_postdata(); ?>
5
  • The status is publish, present tense. You have it correct in your first block of code. I’m not sure that would be the problem though. Commented Jan 28, 2022 at 14:41
  • @JacobPeattie Oops, changed that — thank you. I wrote that by memory on here, but had it right in the original code. It doesn't work even when written correctly unfortunately!
    – Elizabeth
    Commented Jan 28, 2022 at 14:49
  • Just noting that I was not able to reproduce the issue. fa_show_scheduled_posts is only affecting the main query on the post listing when I tested it. Commented Jan 28, 2022 at 19:51
  • 1
    @DaveRomsey Thank you for checking and seeing that you couldn't reproduce it. It made me realize I was using wp_reset_postdata() before the end of the section.
    – Elizabeth
    Commented Jan 29, 2022 at 15:33
  • 1
    Happy I could help! Would you please post your findings as an answer, then stop by in a few days to accept it by clicking the checkmark? It helps keep the site tidy. Commented Jan 29, 2022 at 16:43

1 Answer 1

0

The problem was with my code. I was using wp_reset_postdata() before a section that shows the post title, which made it look like the WP_Query wasn't working. Here's my code now (it's a slider that shows latest posts, and the regular feed shows scheduled posts). I updated my question with my new code

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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