帖子没有正确循环通过

时间:2017-01-11 作者:user6738171

我试图使页面每行有3篇文章,然后在3列(12篇文章)之后显示ajax加载更多按钮。目前只有一个帖子出现。我不知道如何让它正确地在所有东西中循环。有人能提供帮助吗?提前谢谢。

<?php
get_header();
get_template_part (\'inc/carousel-food\');

$the_query = new WP_Query( [
    \'posts_per_page\' => 12,
    \'paged\' => get_query_var(\'paged\', 1)
] );

if ( $the_query->have_posts() ) { ?>
    <div id="ajax">                                     
<article class="post">    
<div class="row">
    <div class="col-md-4"><?php the_post_thumbnail(\'medium-thumbnail\'); ?>
        <h2><a class="post-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <p class="post-excerpt"><?php echo get_the_excerpt(); ?></p>
        <?php get_template_part( \'share-buttons\' ); ?>
        <a class="moretext" href="<?php the_permalink(); ?>">Read more</a>
        <?php comments_popup_link (\'No Comments\', \'1 Comment\', \'% Comments\', \'comment-count\', \'none\'); ?>
    </div>

    </div>

</article>
 </div>
    <?php if(get_query_var(\'paged\') < $the_query->max_num_pages) {
       load_more_button();
    }
}
elseif (!get_query_var(\'paged\') || get_query_var(\'paged\') == \'1\') {
    echo \'<p>Sorry, no posts matched your criteria.</p>\';
}
wp_reset_postdata();
get_footer();
已更新

<?php
get_header();
get_template_part (\'inc/carousel-food\');

$the_query = new WP_Query( array(
    \'posts_per_page\' => 12,
    \'paged\' => get_query_var(\'paged\', 1),
    \'cat\' => 10,
 ));

if ( $the_query->have_posts() ) {

    // display #ajax wrapper only if we have posts
    echo \'<div id="ajax">\';

    while($the_query->have_posts()) {
          $the_query->the_post(); ?>

        <article <?php post_class(); ?>>    
            <div class="row">
                <div class="col-md-4"><?php the_post_thumbnail(\'medium-thumbnail\'); ?>
                    <h2><a class="post-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                    <p class="post-excerpt"><?php echo get_the_excerpt(); ?></p>
                    <?php get_template_part( \'share-buttons\' ); ?>
                    <a class="moretext" href="<?php the_permalink(); ?>">Read more</a>
                    <?php comments_popup_link (\'No Comments\', \'1 Comment\', \'% Comments\', \'comment-count\', \'none\'); ?>
                </div>
                 <div class="col-md-4"><?php the_post_thumbnail(\'medium-thumbnail\'); ?>
                    <h2><a class="post-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                    <p class="post-excerpt"><?php echo get_the_excerpt(); ?></p>
                    <?php get_template_part( \'share-buttons\' ); ?>
                    <a class="moretext" href="<?php the_permalink(); ?>">Read more</a>
                    <?php comments_popup_link (\'No Comments\', \'1 Comment\', \'% Comments\', \'comment-count\', \'none\'); ?>
                </div>
                 <div class="col-md-4"><?php the_post_thumbnail(\'medium-thumbnail\'); ?>
                    <h2><a class="post-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                    <p class="post-excerpt"><?php echo get_the_excerpt(); ?></p>
                    <?php get_template_part( \'share-buttons\' ); ?>
                    <a class="moretext" href="<?php the_permalink(); ?>">Read more</a>
                    <?php comments_popup_link (\'No Comments\', \'1 Comment\', \'% Comments\', \'comment-count\', \'none\'); ?>
                </div>
            </div>
        </article>

    <?php }//end while

    echo \'</div>\'; // close the #ajax wrapper after the post list

    if(get_query_var(\'paged\') < $the_query->max_num_pages) {
        load_more_button();
    }


} else { // if there are no posts

    echo \'<p>Sorry, no posts matched your criteria.</p>\';

}//end if

get_footer();
?>

3 个回复
SO网友:LWS-Mo

我刚刚测试了以下示例代码:

<?php

$the_query = new WP_Query( array(
    \'posts_per_page\' => 12,
    \'paged\' => get_query_var(\'paged\', 1)
 ));

if ( $the_query->have_posts() ) {

    // display #ajax wrapper only if we have posts
    echo \'<div id="ajax">\';

    while($the_query->have_posts()) {
          $the_query->the_post(); ?>

        <article <?php post_class(); ?>>    
            <div class="row">
                <div class="col-md-4"><?php the_post_thumbnail(\'medium-thumbnail\'); ?>
                    <h2><a class="post-title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                    <p class="post-excerpt"><?php echo get_the_excerpt(); ?></p>
                    <?php get_template_part( \'share-buttons\' ); ?>
                    <a class="moretext" href="<?php the_permalink(); ?>">Read more</a>
                    <?php comments_popup_link (\'No Comments\', \'1 Comment\', \'% Comments\', \'comment-count\', \'none\'); ?>
                </div>
            </div>
        </article>

    <?php }//end while

    echo \'</div>\'; // close the #ajax wrapper after the post list

    if(get_query_var(\'paged\') < $the_query->max_num_pages) {
        load_more_button();
    }


} else { // if there are no posts

    echo \'<p>Sorry, no posts matched your criteria.</p>\';

}//end if

?>
The<div id="ajax"> 应该围绕整个帖子列表,而不是每个帖子,对吗?这个容器应该在while循环之外!

此外,如果在WP\\U查询中未指定任何帖子类型,则默认为“any”类型。所以确保你想要这个!

“any”-检索除“exclude\\u from\\u search”设置为true的修订和类型之外的任何类型。

<article> 还应使用的标记<?php post_class(); ?> 而不是class="post" 自动获取更多有用的类。(包括当前岗位类型、状态和类别)

Update:

我已经在我的答案中粘贴了上面更新的代码。它用于显示帖子。然而,它一行只显示了一个帖子,所以我又添加了2个col-md-4。但现在它只是重复同一篇文章3次。我该如何解决这个问题?此外,ajax按钮也不会出现。

好吧,首先。。。循环与此无关how 您将在前端显示帖子。(在网格中或在彼此的正下方)我可以看到您尝试添加3<article> 中的元素whileThis is wrong, 您只需定义1的模板<article> 在这里,以及以下所有内容都将使用相同的。

您可以使用CSS定义文章在前端的显示方式。因此,例如,在article元素上使用%width以在一行中显示3。(100%/3)

也许你也可以使用现有的CSS类。在你的代码中我看到了<div class="col-md-4">, 因此,这似乎已经是网格/柱系统的一类。因此,也许可以查看您正在使用的主题的文档。如果这已经是一个在一行中显示3列的类,那么可能有一些CSS正在覆盖宽度。

是的,你只需要一个article元素,而不是CSS样式。

SO网友:Aniruddha Gawade

您的代码没有while

if ( $the_query->have_posts() ) {
    while($the_query->have_posts()){
        $the_query->the_post();
        //your html here
    }
    //code for load more
}

SO网友:Deb

我想你也应该提到post\\u类型,比如:

$the_query = new WP_Query( array(
    \'post_type\' => \'yourpost_type\'
    \'posts_per_page\' => 12,
    \'paged\' => get_query_var(\'paged\', 1)
) );

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请