小儿科|用page模板显示category下的文章

前言:

本文算是比较基础的小教程,让你的category显示更加合理。
用page显示category看起来不是很有用,但很多人都在用,所以也写了一个可以显示单个或多个分类下文章的page模板,支持分页功能,安装wp pagenavi插件即可。

这儿是代码:

在functions.php中添加如下代码即可使page编辑界面显示category的选择器。

  1. function cp_add_category_box_on_page(){
  2.     //add meta box
  3.     add_meta_box(‘categorydiv’, __(‘Categories’), ‘post_categories_meta_box’, ‘page’, ‘side’, ‘low’);
  4. }
  5. add_action(‘admin_menu’, ‘cp_add_category_box_on_page’);
  6. function cp_mcp_init() {
  7.     if(function_exists(‘register_taxonomy_for_object_type’)){
  8.         register_taxonomy_for_object_type(‘category’, ‘page’);
  9.     }
  10. }
  11. add_action(‘init’, ‘cp_mcp_init’);

于是,后台界面就变成下面这样

edit-page

创建page模板

创建一个page模板专门显示category,模板结构如下

  • 模板声明
  • 正常的page模板,显示page的内容
  • 用query_posts修改主循环,根据选择的category显示目录下的文章列表,就跟category页面一样
  • 调用wp_pagenavi()函数输出分页
  • 调用wp_reset_query()函数重置全局变量
  • 输出sidebar和footer,搞定

代码如下所示

  1. <?php
  2. /*
  3. Template Name: Category template
  4. */
  5. get_header();
  6. ?>
  7.     <div id=“content” class=“hfeed”>
  8.         <!– 显示该页面的内容 –>
  9.         <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  10.          <div <?php post_class() ?> id=“post-<?php the_ID(); ?>”>
  11.             <h2 class=“post-title”><?php the_title(); ?></h2>
  12.             <?php the_content(__(‘More’,’notepad-theme’)); ?>
  13.             <?php wp_link_pages(array(‘before’ => ‘<p><strong>’.__(‘Pages:’,’notepad-theme’).'</strong> ‘, ‘after’ => ‘</p>’, ‘next_or_number’ => ‘number’)); ?>
  14.         </div>
  15.         <!–/post –>
  16.         <?php endwhileendif; ?>
  17.         <?php
  18.         /* 修改主循环,输出category下的文章 */
  19.         $cats=array();
  20.         foreach(get_the_category() as $category) {
  21.             $cats[]=$category->cat_ID;
  22.         }
  23.         $showposts = 10; // -1表示显示所有文章
  24.         $do_not_show_stickies = 1; // 0 表示不显示置顶文章
  25.         $args=array(
  26.            ‘category__in’ => $cats,
  27.            ‘posts_per_page’ => $showposts,
  28.            ‘paged’ => $paged,
  29.            ‘caller_get_posts’ => $do_not_show_stickies
  30.         );
  31.         query_posts( $args );
  32.         ?>
  33.         <!– 开始显选择的目录下的示文章 –>
  34.         <?php if( have_posts() ) : ?>
  35.             <?php while ( have_posts()) : the_post(); ?>
  36.             <div <?php post_class() ?> id=“post-<?php the_ID(); ?>”>
  37.                 <h2><a href=“<?php the_permalink() ?>” rel=“bookmark” title=“Permanent Link to <?php the_title_attribute(); ?>”><?php the_title(); ?></a></h2>
  38.                 <small><?php the_time(‘F jS, Y’) ?> <!– by <?php the_author() ?> –></small>
  39.                 <div class=“entry”>
  40.                     <?php the_excerpt(); ?>
  41.                 </div>
  42.                 <p class=“postmetadata”>
  43.                 <?php the_tags(‘Tags: ‘, ‘, ‘, ); ?> Posted in <?php the_category(‘, ‘) ?> | <?php edit_post_link(‘Edit’, , ‘ | ‘); ?>
  44.                 <?php comments_popup_link(‘No Comments »’, ‘1 Comment »’, ‘% Comments »’); ?></p>
  45.             </div>
  46.         <?php endwhile; ?><!– end loop –>
  47.         <?php else : ?>
  48.             <h2 class=“center”>Not Found</h2>
  49.             <p class=“center”>Sorry, but you are looking for something that isn’t here.</p>
  50.         <?php endif; ?>
  51.         <!– 可以直接调用wp pagenavi插件的分页函数显示分页 –>
  52.         <?php wp_pagenavi(); ?>
  53.         <!– 重置循环变量,必须的步骤 –>
  54.         <?php wp_reset_query(); ?>
  55.     </div><!– #content –>
  56.     <?php get_sidebar(); ?>
  57. <?php get_footer();?>

效果如下图所示

category-page

写在后面:

很好,你又学到新技能了。

本文参考于 http://www.solagirl.net/category-page-template.html  ,若有任何来源问题,请联系QQ:1516677079 及时更正。

最有意思的设计站点


最好的UI素材库

我们极力推荐: