北极寒流 » 网络资源 » WordPress用page(页面)模板调取显示category(分类)下的文章 - 2014.10.25

WordPress用page(页面)模板调取显示category(分类)下的文章

用page(页面)模板显示category(分类)下的文章,支持显示单个或多个分类下文章,支持分页功能,安装wp pagenavi插件即可。

先在functions.php中添加如下代码即可使page编辑界面显示category的选择器(即在后台新建页面时可以在右侧选择分类目录)。

function cp_add_category_box_on_page(){
    //add meta box
    add_meta_box('categorydiv', __('Categories'), 'post_categories_meta_box', 'page', 'side', 'low');
}
add_action('admin_menu', 'cp_add_category_box_on_page');
function cp_mcp_init() {
    if(function_exists('register_taxonomy_for_object_type')){
        register_taxonomy_for_object_type('category', 'page');
    }
}
add_action('init', 'cp_mcp_init');

创建page模板

 

<?php
/*
Template Name: Category template
*/
get_header();
?>
    <div id="content" class="hfeed">
        <!-- 显示该页面的内容 -->
        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
         <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
            <h2 class="post-title"><?php the_title(); ?></h2>
            <?php the_content(__('More','notepad-theme')); ?>
            <?php wp_link_pages(array('before' => '<p><strong>'.__('Pages:','notepad-theme').'</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>
        </div>
        <!--/post -->
        <?php endwhile; endif; ?>
        <?php
        /* 修改主循环,输出category下的文章 */
        $cats=array();
        foreach(get_the_category() as $category) {
            $cats[]=$category->cat_ID;
        }
        $showposts = 10; // -1表示显示所有文章
        $do_not_show_stickies = 1; // 0 表示不显示置顶文章
        $args=array(
           'category__in' => $cats,
           'posts_per_page' => $showposts,
           'paged' => $paged,
           'caller_get_posts' => $do_not_show_stickies
        );
        query_posts( $args );
        ?>
        <!-- 开始显选择的目录下的示文章 -->
        <?php if( have_posts() ) : ?>
            <?php while ( have_posts()) : the_post(); ?>
            <div <?php post_class() ?> id="post-<?php the_ID(); ?>">
                <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2>
                <small><?php the_time('F jS, Y') ?> <!-- by <?php the_author() ?> --></small>
                <div class="entry">
                    <?php the_excerpt(); ?>
                </div>
                <p class="postmetadata">
                <?php the_tags('Tags: ', ', ', ''); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?>
                <?php comments_popup_link('No Comments ?', '1 Comment ?', '% Comments ?'); ?></p>
            </div>
        <?php endwhile; ?><!-- end loop -->
        <?php else : ?>
            <h2 class="center">Not Found</h2>
            <p class="center">Sorry, but you are looking for something that isn't here.</p>
        <?php endif; ?>
        <!-- 可以直接调用wp pagenavi插件的分页函数显示分页 -->
        <?php wp_pagenavi(); ?>
        <!-- 重置循环变量,必须的步骤 -->
        <?php wp_reset_query(); ?>
    </div><!-- #content -->
    <?php get_sidebar(); ?>
<?php get_footer();?>

最后,在新建页面时,选择“Category template”,并且在右侧勾选你要显示的分类目录即可。

这种方式,除了支持页面模板,还可以用在single(文章页)。当然,甚至还可以采用这种方式来输出你任何想输出的文章,例如显示指定id的所有文章并分页显示。

资料来源:http://www.solagirl.net/category-page-template.html

25

WordPress用page(页面)模板调取显示category(分类)下的文章

分享到: