在 WordPress 网站开发和主题定制中,使用子主题(Child Theme) 是官方推荐的最佳实践。通过子主题,可以在不修改父主题源码的情况下,自由调整样式和功能,避免父主题更新导致自定义内容丢失。但操作时,很多用户不清楚 style.css 和 functions.php 哪些内容是必须编写。本文将围绕这一核心主题,重点讲清子主题中这两个关键文件的必写内容、推荐写法以及常见易错点,帮助你正确创建和使用子主题。

一、什么是 WordPress 子主题?
1. 子主题的定义
子主题是一个依赖父主题运行的主题。它可以继承父主题的:
- 模板文件(如 header.php、single.php)
- 样式文件(CSS)
- 功能逻辑(functions.php 中的代码)
同时允许你在子主题中覆盖或扩展这些内容。
![图片[2]-WordPress 子主题必看:style.css 和 functions.php 写错一次,网站就白做了](https://www.361sale.com/wp-content/uploads/2025/12/20251218142141930-image.png)
2. 为什么要使用子主题?
直接修改父主题文件会带来以下问题:
- 父主题更新后,修改内容全部丢失
- 不利于维护和调试
- 容易引发兼容性问题
而使用子主题的优势在于:
- 父主题可以随时安全更新
- 所有自定义内容都集中在子主题中
- 更符合 WordPress 官方开发规范
只要你打算修改主题,就应该使用子主题。
![图片[3]-WordPress 子主题必看:style.css 和 functions.php 写错一次,网站就白做了](https://www.361sale.com/wp-content/uploads/2025/12/20251218142035111-image.png)
二、子主题的最小可用结构
一个可以被 WordPress 正常识别并启用的子主题,理论上只需要一个文件:
your-child-theme/
└── style.css
但在实际开发中,几乎都会同时使用 functions.php:
your-child-theme/
├── style.css
└── functions.php
原因是:
- 是否加载父主题样式,取决于父主题自身的实现方式
- 为了保证兼容性和样式加载顺序,通常需要在子主题中进行样式管理
- 一旦需要添加任何功能,就必须使用 functions.php
| 文件名 | 是否必须 | 主要作用 |
|---|---|---|
| style.css | 是 | 声明子主题身份、编写 CSS |
| functions.php | 否(强烈建议) | 控制样式加载、添加功能 |
- 没有 style.css,子主题无法被识别
- 是否需要 functions.php,取决于父主题和实际需求
- 在绝大多数项目中,两个文件都会同时使用
三、子主题 style.css 必须写什么?
1. style.css 的核心作用
在子主题中,style.css 有两个主要作用:
- 向 WordPress 声明这是一个主题
- 存放子主题自己的 CSS 样式
其中,主题声明信息是必须的,哪怕你暂时不写任何 CSS。
![图片[4]-WordPress 子主题必看:style.css 和 functions.php 写错一次,网站就白做了](https://www.361sale.com/wp-content/uploads/2025/12/20251218142359568-image.png)
2. style.css 中必须存在的主题头信息
WordPress 通过 style.css 文件顶部的注释来识别主题。
最简必需写法
/*
Theme Name: My Child Theme
Template: parent-theme-folder
*/
Theme Name 和 Template 是子主题
- Theme Name:子主题在 WordPress 后台显示的名称,可自定义但不能重复
- Template:父主题的文件夹名称(不是主题显示名),如果该字段写错,子主题将无法正常工作
3. 推荐的完整主题头信息(最佳实践)
这些字段虽然不是全部必填,但对于教程网站、团队项目和长期维护来说非常有价值。
/*
Theme Name: My Child Theme
Theme URI: https://example.com/my-child-theme
Description: 基于 XX 父主题开发的子主题
Author: Your Name
Author URI: https://example.com
Template: parent-theme-folder
Version: 1.0.0
*/
各字段作用如下:
- Theme URI:主题介绍或说明页面的网址(可选)
- Description:对子主题的简要说明,便于管理和识别
- Author:主题作者名称
- Author URI:作者主页或公司网站地址
- Version:子主题版本号,便于后期维护和更新
4. 在 style.css 中编写样式
在主题头信息下方,可以直接编写 CSS:
body {
background-color: #f5f5f5;
}
需要注意的是:
- 子主题的 style.css 不会自动加载父主题样式
- 父主题样式是否生效,取决于父主题是否正确 enqueue 了样式文件。
5. style.css 中不推荐的做法
以下做法已不再推荐使用:
- 使用
@import引入父主题样式 - 在 style.css 中写 PHP 代码
错误示例:
@import url("../parent-theme/style.css");
这种方式会影响性能,也可能导致样式加载顺序问题。
四、子主题 functions.php 必须写什么?
1. functions.php 的作用说明
子主题的 functions.php 用于:
- 管理父主题和子主题样式的加载顺序
- 添加或修改主题功能
- 覆盖父主题中通过钩子添加的行为
需要明确的是:
2. 是否一定需要 functions.php?
从技术上讲:
- 如果父主题已经正确加载了样式
- 且你不需要添加任何功能
子主题在没有 functions.php 的情况下也可以正常运行。
但在实际项目中,为了保证兼容性和可控性,通常仍然建议创建 functions.php 文件。
| 场景 | 是否需要 |
|---|---|
| 只启用子主题,不改任何内容 | 不一定 |
| 需要控制样式加载顺序 | 需要 |
| 添加任何功能 | 必须 |
| 商业 / 长期项目 | 强烈建议 |
3. functions.php 中最常见、最安全的写法:加载样式
下面是官方推荐、兼容性最好的写法之一:
<?php
add_action( 'wp_enqueue_scripts', 'my_child_theme_enqueue_styles' );
function my_child_theme_enqueue_styles() {
wp_enqueue_style(
'parent-style',
get_template_directory_uri() . '/style.css'
);
wp_enqueue_style(
'child-style',
get_stylesheet_uri(),
array( 'parent-style' )
);
}
说明:
get_template_directory_uri()返回父主题路径get_stylesheet_uri()返回子主题 style.css 路径- 通过依赖关系确保加载顺序正确
在使用前,建议查看父主题的 functions.php,确认其样式文件位置和加载方式。
![图片[5]-WordPress 子主题必看:style.css 和 functions.php 写错一次,网站就白做了](https://www.361sale.com/wp-content/uploads/2025/12/20251218144940753-image.png)
4. functions.php 中的常见扩展用法
添加主题支持
add_theme_support( 'post-thumbnails' );
add_theme_support( 'title-tag' );
注册导航菜单
register_nav_menus( array(
'main-menu' => '主导航菜单',
) );
引入子主题其他功能文件
require_once get_stylesheet_directory() . '/inc/custom-functions.php';
5. functions.php 的注意事项
- 函数名应保持唯一,避免与父主题或插件冲突
- 在纯 PHP 文件中,推荐省略 PHP 结束符,以避免输出错误
![图片[6]-WordPress 子主题必看:style.css 和 functions.php 写错一次,网站就白做了](https://www.361sale.com/wp-content/uploads/2025/12/20251218143634784-image.png)
五、完整可用的子主题示例
style.css 示例
/*
Theme Name: My Child Theme
Template: twentytwentyfour
Version: 1.0.0
*/
body {
font-family: Arial, sans-serif;
}
functions.php 示例
<?php
add_action( 'wp_enqueue_scripts', 'my_child_theme_enqueue_styles' );
function my_child_theme_enqueue_styles() {
wp_enqueue_style(
'parent-style',
get_template_directory_uri() . '/style.css'
);
wp_enqueue_style(
'child-style',
get_stylesheet_uri(),
array( 'parent-style' )
);
}
| 联系我们 | |
|---|---|
| 教程看不懂?联系我们为您免费解答!免费助力个人,小企站点! |
客服微信
|
| ① 电话:020-2206-9892 | |
| ② QQ咨询:1025174874 | |
| ③ 邮件:[email protected] | |
| ④ 工作时间:周一至周五,9:30-18:30,节假日休息 | |
























![表情[wozuimei]-光子波动网 | 专业WordPress修复服务,全球范围,快速响应](https://www.361sale.com/wp-content/themes/zibll/img/smilies/wozuimei.gif)
![表情[baoquan]-光子波动网 | 专业WordPress修复服务,全球范围,快速响应](https://www.361sale.com/wp-content/themes/zibll/img/smilies/baoquan.gif)

暂无评论内容