如何在主页上分页显示完整帖子

时间:2012-07-13 作者:Elizabeth Rimbo

我正在使用\'Hatch\' theme. 我熟悉HTML/CSS,但不熟悉WordPress,这是我第一次使用它<我的主页显示了最近的帖子,这很好。

然而,我想创建一个名为“Blog”的新页面,在那里我可以显示我所有的完整帖子,并进行分页。

我想我可能需要创建一个模板?或者,我尝试创建一个类别“博客”,但我不知道如何更改该特定类别的显示。

我读过类似的问题,据我所知,我必须让循环发生,但我不知道在哪里。

我的网站是LizettePhotography。com公司

首页。php代码:

<?php
/**
 * Home Template
 *
 * A custom home page template.
 *
 * @package Hatch
 * @subpackage Template
 */

get_header(); // Loads the header.php template. ?>

    <?php do_atomic( \'before_masthead\' ); // hatch_before_masthead ?>

    <div id="masthead">

        <?php do_atomic( \'open_masthead\' ); // hatch_open_masthead ?>

        <?php $hatch_author_bio = hybrid_get_setting( \'hatch_author_bio\' ) ? hybrid_get_setting( \'hatch_author_bio\' ) : \'1\'; ?>

        <div id="author-bio"><?php the_author_meta( \'description\', $hatch_author_bio ); ?></div>

        <div id="header-banner" role="banner">

            <?php // Check to see if the header image has been removed
            $header_image = get_header_image();

            if ( ! empty( $header_image ) ) : ?>

                <img src="<?php header_image(); ?>" alt="" />

            <?php endif; // end check for removed header image ?>

        </div>

        <?php do_atomic( \'close_masthead\' ); // hatch_close_masthead ?>

    </div>

    <?php do_atomic( \'before_content\' ); // hatch_before_content ?> 

    <div id="content">

        <?php do_atomic( \'open_content\' ); // hatch_open_content ?>

        <div class="hfeed">

            <?php if ( have_posts() ) : ?>

                <?php $counter = 1; ?>

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

                        <?php do_atomic( \'before_entry\' ); // hatch_before_entry ?>

                        <?php if ( ( $counter % 4 ) == 0 ) { ?>

                            <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?> last">

                        <?php } else { ?>

                            <div id="post-<?php the_ID(); ?>" class="<?php hybrid_entry_class(); ?>">

                        <?php } ?>                                                  

                                <?php do_atomic( \'open_entry\' ); // hatch_open_entry ?>

                                <?php if ( current_theme_supports( \'get-the-image\' ) ) {

                                    get_the_image( array( \'meta_key\' => \'Thumbnail\', \'size\' => \'archive-thumbnail\', \'image_class\' => \'featured\', \'width\' => 220, \'height\' => 150, \'default_image\' => get_template_directory_uri() . \'/images/archive_image_placeholder.png\' ) );

                                } ?>                    

                                <?php echo apply_atomic_shortcode( \'entry_title\', \'[entry-title]\' ); ?>                     

                                <?php do_atomic( \'close_entry\' ); // hatch_close_entry ?>                           

                            </div><!-- .hentry -->

                        <?php do_atomic( \'after_entry\' ); // hatch_after_entry ?>

                    <?php $counter++; ?>

                <?php endwhile; ?>

            <?php else : ?>

                <?php get_template_part( \'loop-error\' ); // Loads the loop-error.php template. ?>

            <?php endif; ?>

        </div><!-- .hfeed -->

        <?php do_atomic( \'close_content\' ); // hatch_close_content ?>

        <?php get_template_part( \'loop-nav\' ); // Loads the loop-nav.php template. ?>

    </div><!-- #content -->

    <?php do_atomic( \'after_content\' ); // hatch_after_content ?>

<?php get_footer(); // Loads the footer.php template. ?>

1 个回复
SO网友:Logen

可以我看了一下你的网站。你似乎在使用类别来显示婚礼、肖像、活动和博客。我假设您不希望这些类别的其他帖子出现在您的博客中。因此,使用类别是适当的。

我会这样做的。

1. 复制页面。php模板,并将其重命名为category-(插入类别id)。php。根据您的站点,我确定您的博客类别id为4。因此,第4类。php。

我们不复制存档的原因。主题中的php是因为博客格式还不存在。通过使用page。php我们保留主页和右侧栏的布局。

注意:签出this page in wordpress codex, 对于类别模板。

2. 打开类别4。php在您选择的编辑器中(我使用Editra)。用以下代码替换div id“content”中的所有内容。然后测试您的站点,看看它是否正常工作。如果它确实起作用,请进行css样式设置。在下一步中,我将向您展示添加编号分页的代码。

    <!-- Start the Loop. -->


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

        <!-- The following tests if the current post is in category 4. -->  
              <!-- If it is, the div box is given the CSS class "post-cat-four". -->  
              <!-- Otherwise, the div box will be given the CSS class "post". -->  
              <? php if ( in_category(\'4\') ) { ?>
           <div class="post-cat-four">  <?php } else { ?>
           <div class="post">  <?php } ?>

          <!-- Display the Title as a link to the Post\'s permalink. -->  
              <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent 
              Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>

          <!-- Display the date (November 16th, 2009 format) and a link to other posts 
              by this posts author. -->  
              <small><?php the_time(\'F jS, Y\') ?> by <?php the_author_posts_link() ?></small>

          <!-- Display the Post\'s Content in a div box. -->  
              <div class="entry">    <?php the_content(); ?>  </div>

          <!-- Display a comma separated list of the Post\'s Categories. -->  
              <p class="postmetadata">Posted in <?php the_category(\', \'); ?></p>  
              </div> <!-- closes the first div box -->

          <!-- Stop The Loop (but note the "else:" - see next line). -->  <?php endwhile; else: ?>

          <!-- The very first "if" tested to see if there were any Posts to --> 
              <!-- display.  This "else" part tells what do if there weren\'t any. -->  
              <p>Sorry, no posts matched your criteria.</p>

          <!-- REALLY stop The Loop. -->  <?php endif; ?>
注:以上代码来自wordpress codex,我已经将其调整为您的类别“博客”。

3. 使用以下命令在循环后添加分页pagination tutorial by WP tut. 我提取了代码以便于参考。

          <?php global $wp_query;
          $total_pages = $wp_query->max_num_pages;

          if ($total_pages > 1){

            $current_page = max(1, get_query_var(\'paged\'));

            echo paginate_links(array(
                \'base\' => get_pagenum_link(1) . \'%_%\',
                \'format\' => \'/page/%#%\',
                \'current\' => $current_page,
                \'total\' => $total_pages,
              ));
          } ?>
您可以使用教程中提供的css代码设置分页链接的样式。

请注意,我没有测试代码。我希望这有帮助。

结束

相关推荐

associate posts to a page

我创建了一个主题,并为该主题创建了一个页面,现在我想将帖子关联到该页面。我读了这篇文章:http://codex.wordpress.org/Pages查看“页面和模板示例”一节下的代码:<div id=\"content\" class=\"widecolumn\"> <?php if (have_posts()) : while (have_posts()) : the_post();?> <div class=\"post\"> &l