计数器跳过开机自检,但我仍然希望它可见

时间:2015-06-14 作者:user2648610

我正在我的主页上显示5篇最新帖子。我正在使用一个计数,以便在第三篇文章中显示一个div,它将与博客文章完全分离。然而,在添加该分区后,第三个帖子并没有继续,而是跳过了它,转到了第四个帖子。你知道如何保持最近5篇帖子的显示,但只在第二篇帖子后添加一个div吗?

<?php $my_query = "showposts=5"; $my_query = new WP_Query($my_query); ?>
            <?php if ($my_query->have_posts()) :?> 
            <?php $count = 0; ?>
            <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
            <?php $count++; ?>
            <?php if ($count == 3) : ?>
                <div id="latest-news" class="col-lg-4" style="height:480px;">
                    <h2>Latest News</h2>
                </div>
              <?php else : ?>

                <div class="col-lg-4">
                    <article <?php post_class(\'news-post\'); ?>>
                        <div class="innerPost">
                            <a class="postLink" href="<?php the_permalink(); ?>">
                                <?php the_post_thumbnail(\'full\', array( \'class\' => \'img-responsive\')); ?>
                            </a>
                            <div class="postDetails">
                                <div class="postDetInner">
                                    <header>
                                        <div class="arrowpan"></div>
                                    </header>
                                </div>
                            </div>
                        </div>
                        <div class="news-post-inner">
                            <?php 
                                $category = get_the_category(); 
                                if($category[0]){
                                    echo \'<a class="category-link" href="\'.get_category_link($category[0]->term_id ).\'">\'.$category[0]->cat_name.\'</a>\';
                                }
                            ?>
                            <h2 class="entry-title"><a href="<?php echo get_permalink(); ?>"><?php echo get_the_title( $ID ); ?> </a></h2>
                        </div>
                    </article>
                </div>
                <?php endif; ?>
            <?php endwhile; // end of one post ?>
            <?php endif; //end of loop ?>
        <?php wp_reset_postdata(); ?> 

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

代码中的逻辑错误。用简单的英语阅读您的代码。

如果当前帖子是3号,请显示我的自定义内容,否则,请正常显示帖子。

您想要的是以下内容

如果当前帖子是3号,请显示我的自定义内容。

正常显示我的所有帖子

要实现这一点,只需在语句中包装自定义内容。因此,您需要按照以下方式重写代码

<?php if ($count == 3) : ?>
    <div id="latest-news" class="col-lg-4" style="height:480px;">
        <h2>Latest News</h2>
    </div>
<?php endif ?>
代码上的注释很少showposts 折旧以支持posts_per_page

请勿使用:, endifendwhile. 尽管它是完全有效的php,但由于大多数代码编辑器不支持这种语法,因此很难进行调试。使用老式卷发({}). 它们受到所有代码编辑器的支持,易于调试

  • wp_reset_postdata() 应该去找你的endwile 和之前endif. 原因是,如果你没有帖子,你不需要重置任何东西

    另一种方法就像另一个想法一样,您可以使用the_post 在第3篇文章之前添加自定义内容的操作。你也可以试试这样的

    add_action( \'the_post\', function ( $post ) 
    {
        global $wp_query;
    
        if ( $wp_query->post != $post )
            return;
    
        if ( 2 != $wp_query->current_post )
            return;
    
        echo \'<div id="latest-news" class="col-lg-4" style="height:480px;">
            <h2>Latest News</h2>
        </div>\';    
    });
    

  • 结束

    相关推荐

    AJAX加载更多帖子-WP_QUERY参数不起作用

    我试图用一个Ajax加载更多帖子按钮来代替标准的WP分页。我基本上是按照this question 这在很大程度上很有效。以下是相关代码:HTML(博客索引页):<div id=\"content\"> <?php $args = array( \'posts_per_page\' => 5 ); if (isset($_GET[\'views\'])) { $args[\'orderby\'] = \'met