如果没有来自查询的帖子,如何显示文字?

时间:2015-05-06 12:08:37

标签: php wordpress

我有一个自定义的WordPress帖子类型,如果要显示的查询中没有帖子想要这样做,它会显示一条消息说没有找到帖子,我已经尝试了一些建议但似乎没有任何建议到目前为止工作。

相关部分的完整代码:

 <?php
            $k=0;
            $args = array(
                'post_type'=>'portfolios',
                'posts_per_page'=>5,
                'order'=>'DESC'
                );
            $the_query = new WP_Query($args);
            while($the_query->have_posts()):$the_query->the_post();
            $k++;
            if($k==1){
                $color= 'gray';
            }else if($k==2){
                $color= 'blue';                
            }else if($k==3){
                $color= 'green';                
            }else if($k==4){
                $color= 'light-blue';                
            }else if($k==5){
                $color= 'yellow';              
            }

        ?>
            <div itemprop="exampleOfWork" class="col-xs-12 col-sm-4 portfolio-item">
                <div class="portfolio-holder">
                <?php
                    if(has_post_thumbnail()){
                    $image_id = get_post_thumbnail_id();
                    $image_url = wp_get_attachment_image_src($image_id,'singleport',true);
                ?>
                    <figure><a itemprop="url" href="<?php the_permalink();?>"><img src="<?php echo $image_url[0];?>" alt="Portfolio image" /></a></figure>
                <?php }else{ ?>
                    <figure><a itemprop="url" href="<?php the_permalink();?>"><img src="<?php echo esc_url( get_template_directory_uri() );?>/assets/images/noimage.jpg" alt="No image" /></a></figure>
                <?php } ?>
                    <h6 itemprop="name"><a href="<?php the_permalink();?>"><?php the_title(); ?></a></h6>
                    <span itemprop="genre"><?php the_field('name');?></span>
                    <div class="transparentbg <?php echo $color; ?>">
                    <?php
                        $image = get_field('logo');
                        if( !empty($image) ): ?>
                        <a itemprop="url" href="<?php the_permalink();?>">
                            <img src="<?php echo $image['url']; ?>" alt="logo" />
                        </a>
                        <?php endif; ?>
                        <a href="<?php the_permalink();?>" class="info">
                            <img itemprop="image" src="<?php echo esc_url( get_template_directory_uri() );?>/assets/images/port-hover-bg.png" alt="Port hover bg" /><br />
                            <img itemprop="image" src="<?php echo esc_url( get_template_directory_uri() );?>/assets/images/search-icon.png" height="20" width="20" alt="Search icon">
                        </a>
                    </div>
                </div>
            </div>
        <?php endwhile;wp_reset_query();?>
        </div>
    </div>
</section>

我们怎么能这样做呢,如果没有帖子,它会回复一条消息?

4 个答案:

答案 0 :(得分:0)

添加支票 -

if (!empty($the_query->have_posts())) {
   while(...) {...}
} else {
   echo "No Posts!";
}

答案 1 :(得分:0)

     <?php
                $k=0;
                $args = array(
                    'post_type'=>'portfolios',
                    'posts_per_page'=>5,
                    'order'=>'DESC'
                    );
                $the_query = new WP_Query($args);
                if($the_query->have_posts()):
                    while($the_query->have_posts()):$the_query->the_post();
                        $k++;
                        if($k==1){
                            $color= 'gray';
                        }else if($k==2){
                            $color= 'blue';                
                        }else if($k==3){
                            $color= 'green';                
                        }else if($k==4){
                            $color= 'light-blue';                
                        }else if($k==5){
                            $color= 'yellow';              
                        }

                    ?>
                        <div itemprop="exampleOfWork" class="col-xs-12 col-sm-4 portfolio-item">
                            <div class="portfolio-holder">
                            <?php
                                if(has_post_thumbnail()){
                                $image_id = get_post_thumbnail_id();
                                $image_url = wp_get_attachment_image_src($image_id,'singleport',true);
                            ?>
                                <figure><a itemprop="url" href="<?php the_permalink();?>"><img src="<?php echo $image_url[0];?>" alt="Portfolio image" /></a></figure>
                            <?php }else{ ?>
                                <figure><a itemprop="url" href="<?php the_permalink();?>"><img src="<?php echo esc_url( get_template_directory_uri() );?>/assets/images/noimage.jpg" alt="No image" /></a></figure>
                            <?php } ?>
                                <h6 itemprop="name"><a href="<?php the_permalink();?>"><?php the_title(); ?></a></h6>
                                <span itemprop="genre"><?php the_field('name');?></span>
                                <div class="transparentbg <?php echo $color; ?>">
                                <?php
                                    $image = get_field('logo');
                                    if( !empty($image) ): ?>
                                    <a itemprop="url" href="<?php the_permalink();?>">
                                        <img src="<?php echo $image['url']; ?>" alt="logo" />
                                    </a>
                                    <?php endif; ?>
                                    <a href="<?php the_permalink();?>" class="info">
                                        <img itemprop="image" src="<?php echo esc_url( get_template_directory_uri() );?>/assets/images/port-hover-bg.png" alt="Port hover bg" /><br />
                                        <img itemprop="image" src="<?php echo esc_url( get_template_directory_uri() );?>/assets/images/search-icon.png" height="20" width="20" alt="Search icon">
                                    </a>
                                </div>
                            </div>
                        </div>
                <?php 
                    endwhile;
                else:
                    echo "Your message goes here";
                endif;
            wp_reset_query();
        ?>
            </div>
        </div>
    </section>

添加if条件就可以了。

答案 2 :(得分:0)

<强>问题

您希望使用WP Query类来获取特定类型的帖子(基于自定义字段),如果它根本不返回任何帖子,则应显示消息。

<强>解决方案

$ the_query = new WP_Query($ args);

&#34; $ args&#34;是WP_Query构造函数的参数列表。

现在$ the_query是类型为WP-Query的对象。因此它包含一个函数,它将返回是否有任何匹配您的特定查询的帖子。如果至少有一个帖子,则返回True,否则返回False。

检查是否有与您的查询匹配的帖子的功能是 have_posts()

用法是 ObjectName-&gt; have_posts();

在你的具体情况下是

<强> $ the_query-&GT; have_posts();

这将根据查询返回true或false(即使用$ arg变量提供的参数)。

因此:

if($the_query->have_posts()) {
 //There are posts matching the query
}
else
{ 
//There are no posts matching the query
}

您可以使用以下代码(您必须修改此代码,但仍然是一个良好的开端)。

<?php 
    $args = array(
    'post_type'=>'portfolios',
    'posts_per_page'=>5,
    'order'=>'DESC'
    );
$the_query = new WP_Query( $args ); ?>

<?php if ( $the_query->have_posts() ) : ?>

    <!-- pagination here -->

    <!-- the loop -->
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <h2><?php the_title(); ?></h2>
    <?php endwhile; ?>
    <!-- end of the loop -->

    <!-- pagination here -->

    <?php wp_reset_postdata(); ?>

<?php else : ?>
  <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

参考:https://codex.wordpress.org/Class_Reference/WP_Query

答案 3 :(得分:0)

你需要在while循环之前添加if条件:

<?php
    $k=0;
    $args = array(
        'post_type'=>'portfolios',
        'posts_per_page'=>5,
        'order'=>'DESC'
        );
    $the_query = new WP_Query($args);
    if( $the_query->have_posts() ) {
           while($the_query->have_posts()):
    // your code
            <?php endwhile;
    } else {
     echo "No data found.";
    }
    wp_reset_query();

  ?>