使用 category-{slug}.php 命名规则(最推荐、最简单)
这是 WordPress 内置的、最原生、最简单的方法,它利用了 WordPress 的模板加载机制,几乎不需要任何代码。

工作原理:
WordPress 在加载单个文章时,会按照特定的优先级查找模板文件,它会检查是否存在一个以 category- 开头,以分类的 Slug(别名) 结尾的 PHP 文件,如果找到,就会优先使用这个文件。
操作步骤:
-
找到你的主题文件夹 登录你的 WordPress 后台,外观 -> 主题 -> 编辑主题(或者通过 FTP/SFTP 连接到你的服务器),找到你当前正在使用的主题文件夹,通常路径是
wp-content/themes/你的主题名称/。 -
复制并重命名
single.php在主题文件夹中,找到single.php文件,这个文件是 WordPress 默认的单文章模板。复制一份single.php,并将其重命名为category-你的分类别名.php。
(图片来源网络,侵删)- 如何找到分类的别名(Slug)?
- 进入后台 -> 文章 -> 分类目录。
- 找到你想要自定义的那个分类,点击“编辑”。
- 在“别名”一栏中,你会看到一个 URL 友好的文本,
news、products或tutorials,这就是你要用的 Slug。
举例说明:
- 假设你有一个分类“产品推荐”,它的别名是
products。 - 你复制
single.php并重命名为category-products.php。 - 以后,任何属于“产品推荐”分类的文章,都会自动使用
category-products.php这个模板来显示,而不是默认的single.php。
- 如何找到分类的别名(Slug)?
-
编辑新模板文件 用代码编辑器打开你新创建的
category-products.php文件,在里面修改 HTML 结构、CSS 类、引入不同的 JavaScript 或调用不同的侧边栏等,来打造这个分类独有的样式。
优点:
- 极其简单:只需复制和重命名文件,无需编写代码。
- 性能最好:WordPress 原生支持,加载效率高。
- 直观易懂:文件名和分类直接对应,一目了然。
缺点:

- 灵活性稍差:如果分类层级很深,或者你想基于其他条件(如标签、作者)来切换模板,这种方法就不适用了。
使用 single.php 中的条件判断(最灵活)
如果你希望在一个文件里通过代码逻辑来控制不同分类的显示,或者方法一无法满足你的需求,那么可以在 single.php 文件中使用 is_category() 函数。
工作原理:
is_category() 是一个条件标签,用于判断当前文章是否属于某个或某几个分类,你可以在 single.php 的主循环(The Loop)中,使用这个函数来加载不同的 HTML 结构或组件。
操作步骤:
-
打开主题的
single.php文件。 -
找到主循环,通常是这样的结构:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <!-- 在这里是文章内容 --> <?php endwhile; endif; ?> -
在循环内部添加条件判断: 使用
is_category()函数来包裹不同分类的代码。代码示例:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <?php // 检查当前文章是否属于 "news" 分类 if ( is_category( 'news' ) ) { // 如果是 "news" 分类,使用这种布局 ?> <h1 class="entry-title"><?php the_title(); ?></h1> <div class="entry-meta"> 发布于:<?php echo get_the_date(); ?> </div> <div class="entry-content"> <?php the_content(); ?> </div> <?php } // 检查当前文章是否属于 "products" 分类 elseif ( is_category( 'products' ) ) { // 如果是 "products" 分类,使用另一种布局,比如添加一个购买按钮 ?> <div class="product-hero"> <?php the_post_thumbnail( 'large' ); ?> </div> <h1 class="entry-title"><?php the_title(); ?></h1> <div class="entry-content"> <?php the_content(); ?> </div> <a href="#" class="buy-button">立即购买</a> <?php } // 默认布局,用于所有其他分类 else { // 这是默认的文章布局,通常和原来的 single.php 一样 ?> <h1 class="entry-title"><?php the_title(); ?></h1> <div class="entry-meta"> 作者:<?php the_author(); ?> | 分类:<?php the_category( ', ' ); ?> </div> <div class="entry-content"> <?php the_content(); ?> <?php wp_link_pages(); ?> </div> <?php } ?> </article> <?php endwhile; endif; ?>
优点:
- 非常灵活:可以在一个文件里处理多种逻辑,不仅限于分类,还可以结合
is_tag(),is_author()等。 - 代码集中:所有逻辑都在一个文件里,方便管理和查找。
缺点:
- 代码可读性变差:当分类很多时,
single.php文件会变得非常臃肿和复杂。 - 维护困难:如果需要修改某个分类的样式,可能需要在一大段代码中找到对应的部分。
使用插件(最简单,对新手友好)
如果你不熟悉代码,或者希望有一个可视化的界面来管理,那么使用插件是最佳选择。
推荐插件:
- Single Post Template: 这个插件允许你为单篇文章、页面甚至自定义文章类型指定特定的模板文件,虽然它的主要功能是文章级别,但你可以创建一个通用的“产品文章模板”,然后在发布文章时手动选择它。
- Category Templates: 这个插件专门为此功能而生,它提供了一个简单的界面,让你可以为每个分类选择一个已经创建好的 PHP 文件作为该分类下文章的模板。
操作步骤(以 Category Templates 插件为例):
- 在 WordPress 后台,安装并激活 "Category Templates" 插件。
- 进入 文章 -> 分类模板。
- 你会看到一个列表,显示了你的所有分类。
- 在每个分类对应的“选择模板”下拉菜单中,选择你想要应用的模板文件(
single.php,archive.php或你自定义的模板文件)。 - 保存更改。
优点:
- 零代码:完全通过后台界面操作,非常直观。
- 易于管理:所有设置都在一个地方,修改起来很方便。
缺点:
- 依赖插件:增加了网站的插件数量,可能对有轻微的性能影响。
- 灵活性较低:通常不如手动编写代码灵活。
总结与推荐
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
category-{slug}.php |
最简单、性能最好、原生支持 | 灵活性相对较低 | 绝大多数情况下的首选,适用于大多数主题和网站。 |
single.php 条件判断 |
最灵活、代码集中 | 代码臃肿、可读性差、维护难 | 适用于需要复杂逻辑、或在一个主题内实现多种混合布局的情况。 |
| 使用插件 | 零代码、后台管理方便 | 依赖插件、灵活性较低 | 适用于不熟悉代码的新手,或者需要快速实现且不想修改代码的情况。 |
给你的最终建议:
首先尝试方法一 (
category-{slug}.php),这是 WordPress 设计的最佳实践,简单、高效且可靠,只有当这个方法无法满足你的特殊需求时,再考虑方法二或方法三。
