如果自定义帖子类型循环中没有帖子,则显示消息

时间:2020-02-10 作者:TheRoyality

我正试图让这件事起作用,但不知道问题出在哪里。我添加了else语句,但它不起作用。我能够用jQuery完成这项工作,但我需要它在PHP中工作,因为我需要用不同的语言显示这条消息。谁能帮帮我吗?

以下是我现在掌握的代码:

        <?php

        $args = array( \'post_type\' => \'custom_jobs\', \'posts_per_page\' => 30, \'order\' => \'ASC\' );
        $loop = new WP_Query( $args );
        if( $loop ):
        while ( $loop->have_posts() ) : $loop->the_post();

        ?>

        <div class="accordion-container" id="accordion-container">
            <div class="accordion" id="accordionJobs<?php the_ID(); ?>">
                <div class="card">
                    <div class="card-header" id="heading<?php the_ID(); ?>">
                    <h2 class="mb-0">
                        <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse<?php the_ID(); ?>" aria-expanded="false" aria-controls="collapse<?php the_ID(); ?>">
                        <h5><?php the_title(); ?></h5>
                        <i class="fas fa-chevron-right"></i>
                        </button>
                    </h2>
                    </div>
                    <div id="collapse<?php the_ID(); ?>" class="collapse" aria-labelledby="heading<?php the_ID(); ?>" data-parent="#accordionJobs<?php the_ID(); ?>">
                        <div class="card-body"><?php the_content(); ?></div>
                    </div>
                </div>
            </div>
        </div>

        <?php endwhile; ?>  

        <?php else : ?>

            <h1>There are no posts!</h1>

        <?php endif; ?>

    </div>
</div>

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

因为你只是在检查if ( $loop ) {.

$loop 不是空的,是满的WP_Query 对象中包含有关查询的所有信息,即使没有返回帖子。检查查询是否实际返回了需要使用的帖子$loop->have_posts();:

$loop = new WP_Query( $args );

if ( $loop->have_posts() ):
    while ( $loop->have_posts() ) : $loop->the_post();

    endwhile;
else:

endif;

相关推荐