是否向使用自定义帖子类型的自定义模板添加分页?

时间:2011-03-19 作者:janoChen

我不太熟悉Wordpress的分页,所以我不确定这是否是一个愚蠢的问题。

布局:

enter image description here

代码:

<?php
/**
 * Template Name: Pictures Page
 * @package WordPress
 * @subpackage Prominent
 * @since Prominent 1.0
 */
get_header(); ?>
<div id="tagline">
    <div class="container">
        <?php // Run main loop (The Loop). ?>
        <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
        <div class="content0">
            <?php the_content(); ?>
        </div>
        <?php endwhile; ?>
    </div><!-- .container -->
</div><!-- #content-bottom -->
<div id="content">
    <div class="container">
        <div id="mainbar">
            <?php $custom_posts = new WP_Query(); ?>
            <?php $custom_posts->query(\'category_name=Pictures\'); ?>
            <?php while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?>
                <div class="content-block-2">
                    <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark"><?php the_content(); ?></a>
                </div>
            <?php endwhile; ?>
        </div><!-- #mainbar -->
        <?php get_sidebar(); ?>
    </div><!-- .container -->
</div><!-- #content-bottom -->
<?php get_footer(); ?>
不知道如何添加分页,这超出了我的理解。

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

为了让您的生活更轻松,请使用many pagination plugins 或者是我一直在使用的:

  • WP-PageNavi
  • WP-Paginate

         <?php $custom_posts = new WP_Query(); ?>
        <?php $custom_posts->query(\'category_name=Pictures\'); ?>
        <?php while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?>
            <div class="content-block-2">
                <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark"><?php the_content(); ?></a>
            </div>
        <?php endwhile; ?>
    

    <?php $custom_posts = new WP_Query(); ?>
    <?php $custom_posts->query(array(\'category_name\' => \'Pictures\', \'paged\' => get_query_var(\'paged\'))); ?>
    <?php while ($custom_posts->have_posts()) : $custom_posts->the_post(); ?>
        <div class="content-block-2">
            <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark"><?php the_content(); ?></a>
        </div>
    <?php endwhile; ?>
    wp_pagenavi( array( \'query\' => $custom_posts ) );
    wp_reset_postdata();
    
    如您所见,我向查询中添加了“paged”参数,在循环结束后,我调用了wp_pagenavi(); 但以更智能的方式消除错误和wp\\u reset\\u postdata();重置查询。

    现在,如果您不想使用插件,可以使用以下精细功能:

    function pagination( $query, $baseURL = get_bloginfo( $url ) ) {
        $page = $query->query_vars["paged"];
        if ( !$page ) $page = 1;
        $qs = $_SERVER["QUERY_STRING"] ? "?".$_SERVER["QUERY_STRING"] : "";
        // Only necessary if there\'s more posts than posts-per-page
        if ( $query->found_posts > $query->query_vars["posts_per_page"] ) {
            echo \'<ul class="paging">\';
            // Previous link?
            if ( $page > 1 ) {
                echo \'<li class="previous"><a href="\'.$baseURL.\'page/\'.($page-1).\'/\'.$qs.\'">« previous</a></li>\';
            }
            // Loop through pages
            for ( $i=1; $i <= $query->max_num_pages; $i++ ) {
                // Current page or linked page?
                if ( $i == $page ) {
                    echo \'<li class="active">\'.$i.\'</li>\';
                } else {
                    echo \'<li><a href="\'.$baseURL.\'page/\'.$i.\'/\'.$qs.\'">\'.$i.\'</a></li>\';
                }
            }
            // Next link?
            if ( $page < $query->max_num_pages ) {
                echo \'<li><a href="\'.$baseURL.\'page/\'.($page+1).\'/\'.$qs.\'">next »</a></li>\';
            }
            echo \'</ul>\';
        }
    }
    
    这是非常自明的,您所需要做的就是以查询作为第一个参数,以当前页面permalink作为第二个参数来调用它。

结束

相关推荐

Pagination with custom loop

我的问题可能是Pagination not working with custom loop, 但有一种不同。我使用自定义循环来显示flash游戏。我想按类别在游戏页面上分页。类别php:<?php if ($cat) { $cols = 2; $rows = 4; $paged = ((\'paged\')) ? get_query_var(\'paged\') : 1; $post_per_page = $cols * $rows; // -1 s