在WordPress中,实现不同分类列表指定不同模板的方法主要有以下几种:
方法一:使用条件判断代码
在当前WordPress主题的archive.php
文件中(如果没有则新建一个),添加以下判断代码:
<?php
if ( is_category(array( 1,2 )) ) { //多个栏目id
get_template_part('category-news');
} elseif ( in_category( 7 )) {//单个栏目id
get_template_part('category-case');
} else {//其他调用默认模板
get_template_part('category-contact' );
}
?>
这段代码的作用是判断文章所属的分类ID,然后根据分类ID调用相应的模板文件。例如,如果分类ID为1,则调用category-1.php
模板;如果分类ID为2,则调用category-2.php
模板;如果不是以上两者,则调用category-3.php
模板。
权重判定
如果设置了category-1.php
模板,则在archive.php
中再指定id为1模板会失效。
方法二:使用插件Custom Category Templates
- 从WordPress官方插件中心下载Custom Category Templates插件。
- 上传并安装插件,然后启用该插件。
- 将制作好的分类模板php文件放到当前使用主题的根目录,并在文件第一行添加如下代码:
<?php
/* Template Name: 自定义模板 */
?>
将“自定义模板”替换为自己喜欢的名称,确保不同模板名称不一样。
4. 进入网站后台——文章——分类目录,编辑要调用不同模板的分类,在“分类目录模板”的下拉选择要调用的模板。
5. 点击保存即可。
is_category()
和in_category()
函数
方法三:使用可以通过在functions.php
文件中定义模板文件所在目录,并使用is_category()
和in_category()
函数来自动选择模板。例如:
define(SINGLE_PATH, TEMPLATEPATH . '/single');
function wpdaxue_single_template($single) {
global $wp_query, $post;
foreach((array)get_the_category() as $cat) :
if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';
endforeach;
return $single;
}
add_filter('single_template', 'wpdaxue_single_template');
这段代码会根据文章的分类别名来选择对应的模板文件。
以上方法可以根据实际需要和偏好选择使用。