假设分类别名是test

首先,新建一个single-test.php。

然后将以下代码放进function.php里面

function test_single_template($template)
{
    //$template必须存在 在当前文章不属于test分类时需要加载原single模板
    
    /* 创建一个变量 等下需要用 */
    $new_template = '';

    if (is_single()) {
        //同样也可以使用 in_page()等判断条件
        global $post;

        if (has_term('test', 'category', $post)) {
            // 判断当前文章所属分类是否是test
            $new_template = locate_template(array('single-test.php'));
            // locate_template() 判断模版文件是否存在,存在则返回模版路径

            // locate_template( $template_names, $load, $require_once )
            // $template_names:(array)(必需)以优先顺序搜索的模板文件数组。(需要文件扩展名。)
            // 默认值:无

            // $load:(boolean)(可选)如果为true,则会发现模板文件被加载。
            // 默认值:false

            // $require_once:(boolean)(可选)如果为true,模板文件将加载php require_once函数。如果为false,模板文件将加载php require功能。如果$ load为false,则此参数不起作用。
            // 默认值:true

        }
    }
    return ('' != $new_template) ? $new_template : $template;

    /* 三元运算符
    *  (条件) ? 表达式1 : 表达式2
    *  逻辑:条件如果成立则执行表达式1,不成立则执行表达式2
    */
}
add_action('template_include', 'test_single_template');
/* template_include(WordPress钩子)——替换指定别名页面的模板 */