在帖子归档页面上使用分页链接

时间:2014-11-20 17:45:51

标签: php html wordpress pagination

我想在我的存档页面上使用分页链接,其中列出了网站上的所有帖子。

我想在每页只显示10个帖子,在底部显示OLDER POSTS链接以显示下一页上的旧帖子。

我尝试在最后添加pagginate函数,但前端没有任何显示给我,所以我一定做错了。

我目前的代码如下:

    <div class="container">
        <div class="content col-md-9">
            <div class="home-content">          

                <!-- Show posts -->
                <?php $posts = get_posts(array('category'=>'', 'posts_per_page'=>10)); ?>
                <?php if($posts) { ?>
                <?php foreach ($posts as $post) { setup_postdata($post); ?>
                <div style="float:left; margin:1%;">
                <?php 
                if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
                    the_post_thumbnail( 'thumbnail', array( 'class' => 'img-post')); // show featured image
                }

                ?>
                </div>
                <h1 class="post-thumb"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
                <h4>Category: <?php the_category(', '); ?></h4>
                <p><?php the_excerpt(); ?></p>
                <hr style="margin-bottom:5%">
                <?php } wp_reset_postdata(); ?>
                <?php } else { ?>
                <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
                <?php } ?>
                <?php if (function_exists("emm_paginate")) {
                    emm_paginate();
                } ?>

            </div>
        </div>
        <div class="col-md-3 sidebar unstyled">
                <?php dynamic_sidebar( 'home1' );   ?>
        </div>
        <div class="col-md-3 sidebar unstyled sidebar-space">
                <?php dynamic_sidebar( 'home2' );   ?>
        </div>
        <div class="col-md-3 sidebar unstyled sidebar-space">
                <?php dynamic_sidebar( 'articles1' );   ?>
        </div>

        </div>
    </div>
</body>

1 个答案:

答案 0 :(得分:1)

请查看Wordpress Codex是否有关于分页的大量文档,特别是此页面:http://codex.wordpress.org/Pagination以及此处的Wp_Query,分页部分:http://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters

您正确的分页循环应如下所示:

<?php 
// the query to set the posts per page to 10
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array('posts_per_page' => 10, 'paged' => $paged );
query_posts($args); ?>
<!-- the loop -->
<?php if ( have_posts() ) : while (have_posts()) : the_post(); ?>
        <!-- rest of the loop -->
        <!-- the title, the content etc.. -->
<?php endwhile; ?>
<!-- pagination -->
<?php next_posts_link(); ?>
<?php previous_posts_link(); ?>
<?php else : ?>
<!-- No posts found -->
<?php endif; ?>

需要将$ paged var添加到查询中,我也不知道你在哪里获得了emm_paginate();功能,只需坚持使用Wordpress代码来完成工作,并在工作之后自定义它。

编辑:匹配请求的代码

你使用的是get_posts,如果你想要一个简单的帖子查询,但是当你需要分页时会很麻烦。出于此目的,最好使用query_posts,作为我给出的示例代码。

所以,我已经更正了查询的参数(类别为空并添加了$ paged参数)。

<div class="container">
        <div class="content col-md-9">
            <div class="home-content">          

                <!-- Show posts -->
                <?php 

                    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

                    $args = array(
                            'paged'=> $paged, 
                            'posts_per_page'=> 10
                        );

                        query_posts($args); ?>

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

                    <div style="float:left; margin:1%;">
                    <?php 
                    if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
                        the_post_thumbnail( 'thumbnail', array( 'class' => 'img-post')); // show featured image
                    }

                    ?>
                    </div>
                    <h1 class="post-thumb"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
                    <h4>Category: <?php the_category(', '); ?></h4>
                    <p><?php the_excerpt(); ?></p>
                    <hr style="margin-bottom:5%">
                    <?php endwhile; ?>
                    <!-- pagination -->
                    <?php next_posts_link(); ?>
                    <?php previous_posts_link(); ?>
                    <?php else : ?>
                       <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
                    <?php endif; ?>

            </div>
        </div>

        <div class="col-md-3 sidebar unstyled">
                <?php dynamic_sidebar( 'home1' );   ?>
        </div>
        <div class="col-md-3 sidebar unstyled sidebar-space">
                <?php dynamic_sidebar( 'home2' );   ?>
        </div>
        <div class="col-md-3 sidebar unstyled sidebar-space">
                <?php dynamic_sidebar( 'articles1' );   ?>
        </div>

</div>

现在,您可以使用其他分页功能和数字,例如,如果需要。

上面的代码经过测试并正在运行。

相关问题