wordpress 不同的分类列表指定不同的模板如何实现?

wordpress yekong

在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

  1. 从WordPress官方插件中心下载Custom Category Templates插件。
  2. 上传并安装插件,然后启用该插件。
  3. 将制作好的分类模板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');

这段代码会根据文章的分类别名来选择对应的模板文件。

以上方法可以根据实际需要和偏好选择使用。

喜欢