wordpres核心概念:settings 是干什么的?
WordPress主题开发中,theme.json 是一个集中管理全局样式、编辑器设置和设计规范的配置文件。它的 settings 部分相当于主题的“控制面板”——你可以在这里启用或禁用编辑器中的各种设计工具、注册颜色调色板、定义字体大小、配置布局宽度等。过去这些工作分散在 functions.php、CSS 文件和编辑器配置中,现在都统一在 theme.json 的 settings 节点下完成。本文将围绕官方文档中 settings 的各个属性逐一讲解,用通俗的语言和实际代码示例,帮你理解每个配置项的作用和用法。
settings 是 theme.json 的属性之一,主要做两件事:
- 控制编辑器里显示哪些设计工具——比如是否允许用户调整边距、是否启用行高控制、是否显示圆角选项。
- 注册预设值——比如定义一套品牌色、预设字体大小、间距单位等,这些预设会生成 CSS 变量,供整个主题使用。
简单来说,settings 定义了“用户可以做什么”和“用户可以用什么”。
下面是一个典型的 settings 结构:
json
{
"version": 2,
"settings": {
"appearanceTools": false,
"border": {},
"color": {},
"custom": {},
"dimensions": {},
"layout": {},
"position": {},
"shadow": {},
"spacing": {},
"typography": {},
"useRootPaddingAwareAlignments": false,
"blocks": {}
}
}
逐个来看每个属性的作用。
appearanceTools:一键开启常用工具
appearanceTools 是一个快捷开关,设为 true 时会一次性开启多个常用的设计工具。包括:
- 边框颜色、圆角、样式、宽度
- 链接颜色
- 边距、内边距、区块间距
- 行高
如果没有这个开关,你需要逐个将上述属性设为 true,代码量会大很多。
注意:appearanceTools 开启后,你仍然可以单独关闭其中某个功能,只需要在对应属性中设为 false 即可覆盖。
border:边框相关设置
控制边框相关的功能开关:
| 属性 | 说明 |
|---|---|
border.color | 是否允许用户自定义边框颜色 |
border.radius | 是否允许设置圆角 |
border.style | 是否允许选择边框样式(实线、虚线等) |
border.width | 是否允许调整边框粗细 |
这些开关默认均为 false。如果需要边框功能,记得显式开启。
color:颜色与调色板
color 是 settings 中常用的部分之一,主要做两件事:注册颜色预设,控制颜色相关功能的开关。
注册调色板
json
"color": {
"palette": [
{
"slug": "primary",
"color": "#0073aa",
"name": "主色"
},
{
"slug": "secondary",
"color": "#005a87",
"name": "辅色"
}
]
}
注册后,WordPress 会自动生成 CSS 变量,比如 --wp--preset--color--primary,你可以在样式或 CSS 中直接引用它。
常用控制开关
| 属性 | 说明 |
|---|---|
color.custom | 是否允许用户选择自定义颜色(非预设颜色) |
color.link | 是否允许设置链接颜色 |
color.heading | 是否允许设置标题颜色 |
color.button | 是否允许设置按钮颜色 |
color.caption | 是否允许设置图片标题颜色 |
color.gradients | 是否启用渐变预设 |
color.duotone | 是否启用双色调滤镜 |
注意:color.text 和 color.background 默认是开启的。
custom:自定义 CSS 变量
custom 属性允许你定义自己的 CSS 变量,这些变量会像预设变量一样被输出到页面中。
json
"custom": {
"spacing": {
"unit": "2rem"
}
}
这会生成 --wp--custom--spacing--unit: 2rem 这样的变量。适合存放主题特有的设计数值。
dimensions:尺寸控制
| 属性 | 说明 |
|---|---|
dimensions.minHeight | 是否允许用户设置区块的小高度 |
其他如 aspectRatio(宽高比)、width、height 等功能在 WordPress 6.6 及以后版本陆续得到支持。
layout:布局宽度设置
layout 用于定义内容区域和宽屏内容的宽度限制:
json
"layout": {
"contentSize": "640px",
"wideSize": "1200px"
}
contentSize:普通内容的大宽度。wideSize:使用.alignwide类时的大宽度。
这两个值会影响编辑器中对齐选项的行为,也是实现“全宽/宽屏”布局的基础。
lightbox:图片灯箱
lightbox 控制图片灯箱功能:
| 属性 | 说明 |
|---|---|
lightbox.enabled | 是否启用灯箱 |
lightbox.allowEditing | 是否允许用户在编辑器中修改灯箱设置 |
如果设为 false,用户将无法在编辑器里调整灯箱相关选项。
position:定位支持
目前主要支持 sticky(粘性定位):
| 属性 | 说明 |
|---|---|
position.sticky | 是否允许区块使用粘性定位 |
启用后,用户在编辑器中可以为支持的区块开启“粘性”效果。
shadow:阴影预设
注册自定义阴影预设,并控制用户能否使用阴影功能:
json
"shadow": {
"presets": [
{
"slug": "small",
"shadow": "0 2px 4px rgba(0,0,0,0.1)",
"name": "小阴影"
}
],
"defaultPresets": true
}
defaultPresets 控制是否使用 WordPress 默认的阴影预设。
spacing:间距控制
控制边距、内边距和区块间距:
| 属性 | 说明 |
|---|---|
spacing.margin | 是否允许设置外边距 |
spacing.padding | 是否允许设置内边距 |
spacing.blockGap | 是否启用区块间的间距控制 |
spacing.units | 允许使用的单位列表,如 ["px", "em", "rem", "%"] |
默认情况下,margin 和 padding 是关闭的,需要显式开启。
typography:排版控制
排版是主题设计的核心,typography 提供了丰富的控制选项。
注册字体大小
json
"typography": {
"fontSizes": [
{
"slug": "small",
"size": "0.875rem",
"name": "小"
},
{
"slug": "normal",
"size": "1rem",
"name": "正常"
},
{
"slug": "large",
"size": "1.5rem",
"name": "大"
}
]
}
每个预设会生成 --wp--preset--font-size--small 这样的 CSS 变量。
注册字体家族
json
"typography": {
"fontFamilies": [
{
"slug": "sans",
"fontFamily": "Inter, system-ui, sans-serif",
"name": "无衬线体"
}
]
}
生成的变量为 --wp--preset--font-family--sans。
常用控制开关
| 属性 | 说明 |
|---|---|
typography.customFontSize | 是否允许用户自定义字体大小 |
typography.lineHeight | 是否允许设置行高 |
typography.letterSpacing | 是否允许设置字间距 |
typography.fontWeight | 是否允许设置字重 |
typography.textDecoration | 是否允许设置文本装饰(下划线、删除线等) |
typography.textTransform | 是否允许设置大小写转换 |
useRootPaddingAwareAlignments:根内边距感知对齐
这是一个特殊的布尔值开关。设为 true 时,相当于同时开启了 spacing.margin 和 spacing.padding。更关键的是,它让全宽区块能够“感知”根元素的内边距——即全宽区块的内容会遵循根内边距的约束,而区块本身可以延伸至边缘。
简单理解:它让全宽布局更优雅,不会让内容紧贴屏幕边缘。
blocks:按块覆盖设置
blocks 允许你针对特定区块单独配置 settings,覆盖全局设定。例如:
json
"blocks": {
"core/button": {
"color": {
"palette": [
{
"slug": "btn-primary",
"color": "#0073aa",
"name": "按钮主色"
}
]
},
"border": {
"radius": true
}
}
}
这里为按钮区块单独注册了颜色调色板,并开启了圆角功能,而不影响其他区块。
总结
settings 是 theme.json 中核心的部分之一,它通过一套统一的配置体系,替代了过去分散在多个文件中的主题设置。理解它,就能更好地控制 WordPress 主题的设计自由度——既可以为用户提供丰富的工具,也可以严格限制设计选项,保持品牌一致性。
记住几个关键点:
appearanceTools是快速开启常用功能的捷径。- 预设值(调色板、字体大小等)会自动生成 CSS 变量,方便在样式中复用。
- 每个功能默认大多是关闭的,需要显式开启。
blocks可以针对特定区块做精细化控制。