我将使用category_template
筛选以加载所有这些特定类别的特定模板。在本例中,我使用了一个硬编码数组,但这可以用于加载一个选项,该选项存储您希望模板应用到的类别段塞。
function wpa_category_template( $templates = \'\' ){
$special_categories = array(
\'one\',
\'another\',
\'more\'
);
$this_category = get_queried_object();
if( in_array( $this_category->slug, $special_categories ) ){
$templates = locate_template( array( \'special_category.php\', $templates ), false );
}
return $templates;
}
add_filter( \'category_template\', \'wpa_category_template\' );
然后,您不再需要在模板中查询这些帖子,因为这些帖子已经在主查询中了。(另外,作为旁白,
never use query_posts
).
在您可以使用的模板中single_cat_title
输出名称。
您也不必使用两个查询和循环来设置第一篇文章的不同样式,只需检查current_post
var,以了解当前输出的帖子。
if (have_posts()):
while (have_posts()):
the_post();
if( 0 == $wp_query->current_post ):
echo \'this is the first post\';
else:
echo \'this is post > 1\';
endif;
endwhile;
endif;