Php 如果有帖子显示div,否则显示no posts station

Php 如果有帖子显示div,否则显示no posts station,php,wordpress,Php,Wordpress,我不知道为什么这个代码不起作用。我正在尝试创建一个条件语句,如果此自定义post类型有post,则显示customer section div。如果post不存在,则不打印post语句。我做了我认为我应该做的一切,但我一定是做了一些愚蠢的错误,因为我仍然可以看到客户部分div,即使没有帖子 以下是我所拥有的: <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <div class=

我不知道为什么这个代码不起作用。我正在尝试创建一个条件语句,如果此自定义post类型有post,则显示customer section div。如果post不存在,则不打印post语句。我做了我认为我应该做的一切,但我一定是做了一些愚蠢的错误,因为我仍然可以看到客户部分div,即使没有帖子

以下是我所拥有的:

 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <div class="customer-section case-study">
    <div class="case-study-container">
        <h2>Case Studies</h2>
        <?php $loop = new WP_Query( array( 'post_type' => 'case_study', 'posts_per_page' => 9 ) ); ?>
        <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
            <div <?php post_class(); ?>>

                    <?php if ( has_post_thumbnail() ): ?>
                        <div class="press-featured-image">
                            <?php the_post_thumbnail('', array('class' => 'th')); ?>
                        </div>
                    <?php endif; ?>

                    <div class="blog-post">
                        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                        <div class="entry-summery">
                            <?php the_excerpt(); ?>
                        </div>
                            <footer>
                                <?php $tag = get_the_tags(); if (!$tag) { } else { ?><p><?php the_tags(); ?></p><?php } ?>
                            </footer>
                    </div>
                    <hr />
            </div>
        <?php endwhile; wp_reset_query(); ?>
    </div>
    </div>

 <?php endwhile; else : ?>

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

 <?php endif; ?>

案例研究



我认为问题在于两个循环的语法

  • while
    条件之前缺少
    if
    语句
  • 您试图在标准页面或post循环中加载
    $loop
    循环
  • 请尝试以下方法:

    <?php
    $case_studies = new WP_Query( array( 'post_type' => 'case_study', 'posts_per_page' => 9 ) );
    
    if ( $case_studies->have_posts() ) : ?>
    
    <div class="customer-section case-study">
        <div class="case-study-container">
            <h2>Case Studies</h2>
    
            <?php while ( $case_studies->have_posts() ) : $case_studies->the_post(); ?>
    
            <div <?php post_class(); ?>>
                <?php if ( has_post_thumbnail() ): ?>
                    <div class="press-featured-image">
                        <?php the_post_thumbnail('', array('class' => 'th')); ?>
                    </div>
                <?php endif; ?>
    
                <div class="blog-post">
                    <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                    <div class="entry-summary">
                        <?php the_excerpt(); ?>
                    </div>
                    <footer>
                      <?php if (get_the_tags()) { ?>
                        <p><?php the_tags(); ?></p>
                      <?php } ?>
                    </footer>
                </div>
                <hr />
            </div>
        <?php endwhile; ?>
    
        </div>
    </div>
    <?php else : ?>
    
        <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
    <?php endif; wp_reset_query(); ?>
    
    
    案例研究
    



    我认为问题在于两个循环的语法

  • while
    条件之前缺少
    if
    语句
  • 您试图在标准页面或post循环中加载
    $loop
    循环
  • 请尝试以下方法:

    <?php
    $case_studies = new WP_Query( array( 'post_type' => 'case_study', 'posts_per_page' => 9 ) );
    
    if ( $case_studies->have_posts() ) : ?>
    
    <div class="customer-section case-study">
        <div class="case-study-container">
            <h2>Case Studies</h2>
    
            <?php while ( $case_studies->have_posts() ) : $case_studies->the_post(); ?>
    
            <div <?php post_class(); ?>>
                <?php if ( has_post_thumbnail() ): ?>
                    <div class="press-featured-image">
                        <?php the_post_thumbnail('', array('class' => 'th')); ?>
                    </div>
                <?php endif; ?>
    
                <div class="blog-post">
                    <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                    <div class="entry-summary">
                        <?php the_excerpt(); ?>
                    </div>
                    <footer>
                      <?php if (get_the_tags()) { ?>
                        <p><?php the_tags(); ?></p>
                      <?php } ?>
                    </footer>
                </div>
                <hr />
            </div>
        <?php endwhile; ?>
    
        </div>
    </div>
    <?php else : ?>
    
        <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
    <?php endif; wp_reset_query(); ?>
    
    
    案例研究
    



    您当前所做的是检查初始的
    have_posts()
    (默认查询)条件是否为true,如果这是页面模板,则始终为true。实际上(对于页面模板),您根本不需要检查,因为如果找不到页面,WordPress将返回404。
    您需要检查自定义查询的帖子:

    <?php the_post(); ?>
    <div class="customer-section case-study">
        <div class="case-study-container">
            <h2>Case Studies</h2>
            <?php $loop = new WP_Query( array( 'post_type' => 'case_study', 'posts_per_page' => 9 ) );
    
            if ( $loop->have_posts() ):
    
                while ( $loop->have_posts() ) : $loop->the_post(); ?>
                    <div <?php post_class(); ?>>
    
                            <?php if ( has_post_thumbnail() ): ?>
                                <div class="press-featured-image">
                                    <?php the_post_thumbnail('', array('class' => 'th')); ?>
                                </div>
                            <?php endif; ?>
    
                            <div class="blog-post">
                                <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                                <div class="entry-summery">
                                    <?php the_excerpt(); ?>
                                </div>
                                    <footer>
                                        <?php $tag = get_the_tags(); if (!$tag) { } else { ?><p><?php the_tags(); ?></p><?php } ?>
                                    </footer>
                            </div>
                            <hr />
                    </div>
                <?php endwhile;
    
            else: ?>
                <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
            <?php endif;
    
            wp_reset_query();
    
            ?>
        </div>
    </div>
    
    
    案例研究
    



    您当前所做的是检查初始的
    have_posts()
    (默认查询)条件是否为true,如果这是页面模板,则始终为true。实际上(对于页面模板),您根本不需要检查,因为如果找不到页面,WordPress将返回404。
    您需要检查自定义查询的帖子:

    <?php the_post(); ?>
    <div class="customer-section case-study">
        <div class="case-study-container">
            <h2>Case Studies</h2>
            <?php $loop = new WP_Query( array( 'post_type' => 'case_study', 'posts_per_page' => 9 ) );
    
            if ( $loop->have_posts() ):
    
                while ( $loop->have_posts() ) : $loop->the_post(); ?>
                    <div <?php post_class(); ?>>
    
                            <?php if ( has_post_thumbnail() ): ?>
                                <div class="press-featured-image">
                                    <?php the_post_thumbnail('', array('class' => 'th')); ?>
                                </div>
                            <?php endif; ?>
    
                            <div class="blog-post">
                                <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                                <div class="entry-summery">
                                    <?php the_excerpt(); ?>
                                </div>
                                    <footer>
                                        <?php $tag = get_the_tags(); if (!$tag) { } else { ?><p><?php the_tags(); ?></p><?php } ?>
                                    </footer>
                            </div>
                            <hr />
                    </div>
                <?php endwhile;
    
            else: ?>
                <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
            <?php endif;
    
            wp_reset_query();
    
            ?>
        </div>
    </div>
    
    
    案例研究
    



    这对我来说很有用。如果while循环在WP_查询中,则不需要结束它。您所要做的就是为要显示的主div关闭if语句,为重复部分添加while,如果它不起作用,我将尝试删除您在页脚上设置的条件

    
    案例研究
    



    这对我来说很有用。如果while循环在WP_查询中,则不需要结束它。您所要做的就是为要显示的主div关闭if语句,为重复部分添加while,如果它不起作用,我将尝试删除您在页脚上设置的条件

    
    案例研究
    



    为什么您的
    $loop
    循环在标准
    have_posts()
    循环中?这应该是在页面内容之后输出“案例研究”帖子的页面模板吗?为什么您的
    $loop
    循环在标准
    have_posts()
    循环中?这应该是一个输出th的页面模板吗