默认的分类模板文件为category.php,但通常在开发中的需求不会这么简单
分类页面按按分类调取不同模板
如果想要不同分类调取不同分类的话,可以使用category加中间杠后接需使用该模板的分类Id号或别名(slug)来进行命名,如category-2.php或category-wordpress.php
也可以通过在category.php中通过判断id号来调用不同模板,比如
1 2 3 4 5 | if ( is_category( array (1,2,3)) ) { include (TEMPLATEPATH . '/abc.php' ); } else { include (TEMPLATEPATH . '/def.php' ); } |
上述方法可以还满足多个分类调用同一模板的需求,还有一种类似的方法,通过获取slug来调取对应的模板,如若模板不存在则调用默认的模板
1 2 3 4 5 6 7 8 | $cat_ID = get_query_var( 'cat' ); $cat = get_category( $cat_ID ); $slug = $name = $cat ->slug; if ( '' !== locate_template( array ( "template-parts/category-$slug.php" ) ) ) { get_template_part( 'template-parts/category' , $slug ); } else { get_template_part( 'template-parts/category' , 'default' ); } |
以上代码可以精简为,因为在category-$slug.php不存在时,会自动调用该目录下的category.php
1 2 3 4 | $cat_ID = get_query_var( 'cat' ); $cat = get_category( $cat_ID ); $slug = $name = $cat ->slug; get_template_part( 'template-parts/category' , $slug ); |
文章页面按所属分类调取模板
很多时候我们需要分类下的文章页面根据不同分类使用不同的模板,类似地,我们可以通过in_category()函数来判断文章所属分类来调用不同模板,该函数中可以传入分类id,也可以使用分类别名(slug)
1 2 3 4 5 | if ( in_category( array (1,2,3)) ) { include ( 'template-parts/content-a.php' ); } else { include ( 'template-parts/content-b.php' ); } |
另外一种方法是根据所属分类别名来创建模板,如content-wordpress.php,不存在的直接调用content.php。不过这个方法存在一个问题,就是当文章属于多个分类时,需从数组中选择一个分类。
1 $cat
= get_the_category(
$post
->ID);
$slug
=
$cat
[0]->slug; get_template_part(
'template-parts/content'
,
$slug
);
1 | $cat = get_the_category( $post ->ID); $slug = $cat [0]->slug; get_template_part( 'template-parts/content' , $slug ); |
独立页面调用不同模板
独立页面默认调用index.php作为模板,可通过新建page.php来作为独立页面模板。如果要单独为某一独立页面设置模板的话,可以在模板根目录中创建page-id.php,其中的id为该独立页面的id号。同样地,也可以采用页面别名page-slug.php的方式。