Reuben
Reuben

Reputation: 2751

Wordpress loop not showing 'else' when no posts exist

When no posts exist I'm used to seeing the message after the else, and I'm not sure why it's not showing it now?

Code:

<?php
     $args = array( 'post_type' => 'event', 'posts_per_page' => 1, 'post_status' => 'future', 'order' => 'ASC' );
     $loop = new WP_Query( $args );
     if ( have_posts() ) : while ( $loop->have_posts() ) : $loop->the_post();
  ?>
  <div class="event_preview_title"><?php the_title(); ?></div>
  <div class="event_details">
    <div class="event_date"><?php the_time('m/d/y'); ?></div>
    <div class="event_time"><?php the_time('g:i A'); ?></div>
  </div>
  <?php the_post_thumbnail( array(65,65) ); ?>
  <a class="clickthrough" href="<?php bloginfo('wpurl'); ?>/events"></a>
  <?php endwhile; else: ?>
        <p>Bluebird Books may be coming soon to a neighborhood near you!<br />
We are currently on hiatus planning our next season's schedule. New tour dates will be posted to this page once confirmed. Meanwhile, inquiries about appearances and programs are welcomed! If you are interested in having Bluebird visit your business, school, or special event, please contact us.</p>
  <?php endif; ?>

Thanks!

Upvotes: 0

Views: 1283

Answers (2)

Farzher
Farzher

Reputation: 14583

You made a special WP_Query, but are checking for the wrong posts

if ( have_posts() )

Should be

if ( $loop->have_posts() )

Upvotes: 4

Brendan Long
Brendan Long

Reputation: 54262

I'm not exactly sure what happens when you use the weird if/while syntax, but:

endwhile;

I think your endwhile is ending the while loop, and the ; is ending the if statement. I suggest using the standard { and } syntax so this sort of thing will be easier to read:

<?php
    $args = array( 'post_type' => 'event', 'posts_per_page' => 1, 'post_status' => 'future', 'order' => 'ASC' );
    $loop = new WP_Query( $args );
    if (have_posts()) {
        while ( $loop->have_posts() ) {
            $loop->the_post();
?>
  <div class="event_preview_title"><?php the_title(); ?></div>
  <div class="event_details">
    <div class="event_date"><?php the_time('m/d/y'); ?></div>
    <div class="event_time"><?php the_time('g:i A'); ?></div>
  </div>
<?php
            the_post_thumbnail( array(65,65) );
?>
  <a class="clickthrough" href="<?php bloginfo('wpurl'); ?>/events"></a>
<?php
        }
    } else {
?>
        <p>Bluebird Books may be coming soon to a neighborhood near you!<br />
We are currently on hiatus planning our next season's schedule. New tour dates will be posted to this page once confirmed. Meanwhile, inquiries about appearances and programs are welcomed! If you are interested in having Bluebird visit your business, school, or special event, please contact us.</p>
<?php
    }
?>

Upvotes: 2

Related Questions