全局设置和样式(theme.json)

WordPress 5.8附带一种新的机制要配置启用细粒度控件的编辑器,并引入管理未来WordPress版本样式的第一步:主题.json文件。

理论基础

块编辑器API以不同的速度发展,尤其是在影响主题的领域,存在一些成长困难。例如:以编程方式控制编辑器,或块样式系统这有助于用户、主题和核心风格偏好。

这描述了当前将与样式相关的各种API整合为一个点的工作–主题.json应该位于主题目录根目录内的文件。

块编辑器的设置

与主题支持标志或替代方法的扩散不同主题.json文件提供了定义块编辑器设置的规范方法。这些设置包括以下内容:

  • 应该向用户提供或隐藏哪些自定义选项。
  • 用户可以使用的默认颜色、字体大小……是什么。
  • 定义编辑器的默认布局(宽度和可用路线)。

可以按块控制设置

为了获得更高的粒度,这些设置也适用于主题.json.

可以实现的目标包括:

  • 对块(例如:表)使用特定预设,但对其余块使用通用预设。
  • 为所有块(标题块除外)启用字体大小UI控件。
  • 等。

管理样式

通过使用主题.json文件以结构化方式设置样式属性,块编辑器可以“管理”来自不同来源(用户、主题和核心CSS)的CSS。例如,如果一个主题和一个用户为段落设置了字体大小,那么我们只对来自用户而不是主题的样式进行排队。

其优点包括:

  • 减少CSS排队的数量。
  • 防止特殊战争。

CSS自定义属性:预设和自定义

有一些样式化领域可以从共享值中受益,这些值可以在整个站点中更改。

为了满足这一需求,我们已经开始在一些地方试验CSS自定义属性,也称为CSS变量:

{“版本”:3,“设置”:{“颜色”:{“调色板”:[{“name”:“黑色”,“slug”:“黑色”,“颜色”:“#000000”},{“name”:“白色”,“slug”:“白色”,“颜色”:“#ffffff”}]}}}
车身{--wp——预设——颜色——黑色:#000000;--wp--预设--颜色--白色:#ffffff;}
  • 自定义属性:还有一种创建自己的CSS自定义属性的机制。

{“版本”:3,“设置”:{“自定义”:{“线条高度”:{“主体”:1.7,“标题”:1.3}}}}
车身{--wp——自定义——线高——正文:1.7;--wp——自定义——线条高度——标题:1.3;}

规范

对于使用此格式的三个不同来源:核心、主题和用户,此规范是相同的。主题可以通过创建名为主题.json。用户还可以通过网站编辑器,通过正在处理的用户界面覆盖主题或核心的偏好。

{“版本”:3,“设置”:{},“样式”:{},“customTemplates”:{},“模板部件”:{}}

版本

此字段描述主题.json文件。最新版本是版本3WordPress 6.6中引入。

当需要进行突破性的更改时,会引入新版本。这允许主题作者选择何时选择加入中断更改,并将其theme.json文件迁移到新格式。

的旧版本主题.json是向后兼容的,并将继续与WordPress和Gutenberg插件的更新版本一起使用。然而,将在最新版本上开发新功能。

按照中的说明进行操作迁移到较新版本有关更新到最新版本的详细信息。

设置

Gutenberg插件扩展了WordPress 5.8中的设置,因此可以与其他WordPres版本一起使用,并且在移植到核心之前要经过一个成熟过程。

下面的选项卡显示了WordPress 5.8支持的设置和Gutenberg插件支持的设置。

设置部分具有以下结构:

{“版本”:3,“设置”:{“边界”:{“半径”:假,“颜色”:假,“样式”:false,“宽度”:假},“颜色”:{“自定义”:true,“customDuotone”:正确,“customGradient”:true,“双音”:[],“渐变”:[],“链接”:false,“调色板”:[],“文本”:true,“background”:正确,“defaultGradients”:true,“defaultPalette”:true},“自定义”:{},“布局”:{“contentSize”:“800px”,“wideSize”:“1000px”},“间距”:{“边距”:假,“padding”:假,“blockGap”:空,“单位”:[“像素”,“em”,“雷姆”,“vh”,“vw”]},“排版”:{“customFontSize”:true,“lineHeight”:false,“dropCap”:true,“流体”:错误,“fontStyle”:true,“fontWeight”:true,“letterSpacing”:真,“textDecoration”:true,“textTransform”:真,“字体大小”:[],“fontFamilies”:[]},“块”:{“核心/段落”:{“颜色”:{},“自定义”:{},“布局”:{},“间距”:{},“排版”:{}},“核心/标题”:{},“等”:{}}}}
{“版本”:3,“设置”:{“appearanceTools”:false,“边界”:{“颜色”:假,“半径”:假,“样式”:false,“宽度”:假},“颜色”:{“background”:正确,“自定义”:true,“customDuotone”:正确,“customGradient”:true,“defaultGradients”:true,“defaultPalette”:true,“双音”:[],“渐变”:[],“链接”:false,“调色板”:[],“文本”:true},“自定义”:{},“尺寸”:{“aspectRatio”:false,“最小高度”:false,},“布局”:{“contentSize”:“800px”,“wideSize”:“1000px”},“间距”:{“blockGap”:空,“margin”:错误,“padding”:false,“customSpacingSize”:true,“单位”:[“像素”,“em”,“rem”,”vh“,”vw“],“间距比例”:{“运算符”:“*”,“增量”:1.5,“步骤”:7,“mediumStep”:1.5,“单位”:“rem”},“间距大小”:[]},“排版”:{“customFontSize”:true,“dropCap”:true,“流体”:假,“fontFamilies”:[],“字体大小”:[],“fontStyle”:true,“fontWeight”:true,“letterSpacing”:真,“lineHeight”:false,“textAlign”:真,“textColumns”:假,“textDecoration”:true,“textTransform”:真},“块”:{“核心/段落”:{“边框”:{},“颜色”:{},“自定义”:{},“布局”:{},“间距”:{},“排版”:{}},“核心/标题”:{},“等”:{}}}}

每个块都可以单独配置这些设置中的任何一个,从而对通过以下方式存在的内容提供更精细的控制添加主题支持。在顶层声明的设置会影响所有块,除非特定块覆盖它。这是一种提供继承并同时配置所有块的方法。

但请注意,并非所有设置都与所有块相关。设置部分为主题提供了一个选择加入/选择退出机制,但块有责任添加对与其相关的功能的支持。例如,如果块没有实现dropCap(下降上限)功能,一个主题无法为这样的阻止启用它主题.json.

选择加入UI控件

有一个特殊的设置属性,外观工具,这是一个布尔值,其默认值为false。主题可以使用此设置启用以下设置:

  • 背景:backgroundImage,background Size
  • 边框:颜色、半径、样式、宽度
  • 颜色:链接
  • 尺寸:纵横比,最小高度
  • 位置:粘性
  • 间距:块间距、边距、填充
  • 排版:lineHeight

与add_theme_support向后兼容

为了保持向后兼容性,现有的添加主题支持配置块编辑器的声明在顶层部分的适当类别中进行了更新。例如,如果主题使用add_theme_support('禁用自定义颜色'),将与设置相同设置.颜色.自定义。如果主题.json包含任何设置,这些设置将优先于通过添加主题支持。这是等效项的完整列表:

添加主题支持 theme.json设置
定制线路高度 设置typegraphy.line高度真的.
自定义间距 设置间距填充真的.
自定义单位 通过以下方式提供单位列表间距单位.
禁用自定义颜色 设置颜色.自定义.
禁用自定义尺寸 设置排版.customFontSize.
禁用粗粒料 设置颜色自定义渐变.
编辑器调色板 通过提供颜色列表彩色套色.
编辑字体大小 通过提供字体大小列表印刷字体大小.
编辑器粒度预设 通过提供梯度列表颜色.渐变.
编辑器空间大小 通过提供间距尺寸列表间距。间距大小.
外观-工具 设置外观工具真的.
边境 设置边框:颜色、半径、样式、宽度真的.
链接颜色 设置颜色链接真的.

预设

预设是设置部分的一部分。它们是通过一些UI控件向用户显示的值。通过定义它们主题.json该引擎可以为主题执行更多操作,例如自动转换预设名称或将相应的CSS类和自定义属性排队。

可以通过定义以下预设主题.json:

  • 颜色.色调:不生成类或自定义属性。
  • 颜色.渐变:根据预设值生成单个类和自定义属性。
  • 彩色套色:
    • 每个预设值生成3个类:颜色、背景色和边框色。
    • 为每个预设值生成一个自定义属性。
  • 间距。间距大小/间距。间距比例:根据预设值生成单个自定义属性。
  • 印刷字体大小:根据预设值生成单个类和自定义属性。
  • typegraphy.fontFamilies字体系列:为每个预设值生成一个自定义特性。

类和自定义属性的命名模式如下:

  • 自定义属性:--wp—预设--{预设类别}--{预插}例如--wp--预设--颜色--黑色
  • 课程:.具有-{预插}-{预设类别}例如.has-黑色.

{“版本”:3,“设置”:{“颜色”:{“双音”:[{“颜色”:[“#000”,“#FFF”],“slug”:“黑白”,“name”:“黑白”}],“梯度”:[{“slug”:“腮红”,“gradient”:“线性-梯度(135度,rgb(254205165)0%,rgb(254,45,45)50%,argb(107,0,62)100%)”,“name”:“红波尔多”},{“slug”:“腮红-紫红色”,“gradient”:“线性渐变(135度,rgb(255206236)0%,rgb(152150240)100%)”,“name”:“腮红-浅紫色”}],“调色板”:[{“slug”:“strong-magenta”,“颜色”:“#a156b4”,“name”:“强洋红色”},{“slug”:“深灰色”,“颜色”:“rgb(131,12,8)”,“name”:“深灰色”}]},“排版”:{“fontFamilies”(字体系列):[{“fontFamily”:“-apple-system,BlinkMacSystemFont,\”Segoe UI\“,Roboto,Oxygen-Sans,Ubuntu,Cantarell,\”Helvetica Neue“,Sans-serif”,“slug”:“system-font”,“name”:“系统字体”},{“fontFamily”:“Helvetica Neue,Helvetica,Arial,sans-serif”,“slug”:“helvetica-arial”,“name”:“Helvetica或Arial”}],“字体大小”:[{“slug”:“大”,“大小”:32,“name”:“大”},{“鼻涕虫”:“x大”,“尺寸”:46,“name”:“大”}]},“间距”:{“间距比例”:{“运算符”:“*”,“增量”:1.5,“步骤”:7,“mediumStep”:1.5,“单位”:“rem”},“间距大小”:[{“slug”:“40”,“大小”:“1rem”,“name”:“小”},{“slug”:“50”,“大小”:“1.5rem”,“name”:“中等”},{“slug”:“60”,“大小”:“2rem”,“name”:“大”}]},“块”:{“核心/群体”:{“颜色”:{“调色板”:[{“slug”:“黑色”,“颜色”:“#000000”,“name”:“黑色”},{“slug”:“白色”,“颜色”:“#ffffff”,“name”:“白色”}]}}}}}
/*顶级自定义属性*/车身{--wp——预设——颜色——strong-magenta:#a156b4;--wp--预设--颜色--深灰色:#444;--wp——预设——渐变——腮红——渐变:线性渐变(135度,rgb(254、205、165)0%、rgb(244、45、45)50%、rgp(107、0、62)100%);--wp——预设——渐变——腮红——浅紫色:线性——渐变(135度,rgb(255,206,236)0%,rgp(152,150,240)100%);--wp——预置——字体大小——x-large:46;--wp——预置——字体大小——大:32;--wp——预置——font-family——helvetica-arial:helvetica Neue,helvetica-arial,sans-serif;--wp--预设--字体家族--系统:-apple system,BlinkMacSystemFont,\“Segoe UI\”,Roboto,Oxygen Sans,Ubuntu,Cantarell,\“Helvetica Neue\”,Sans-serif;--wp——预设——间距——20:0.44rem;--wp——预设——间距——30:0.67rem;--wp——预设——间距——40:1rem;--wp——预设——间距——50:1.5rem;--wp——预设——间距——60:2.25rem;--wp——预设——间距——70:3.38rem;--wp——预设——间距——80:5.06rem;}/*块级自定义特性(绑定到组块)*/.wp-block-组{--wp——预设——颜色——黑色:#000000;--wp--预设--颜色--白色:#ffffff;}/*顶级课程*/.has-strong洋红色{color:#a156b4!important;}.has-strong洋红色背景颜色{background-color:#a156b4!important;}.has-strong-洋红色-订单颜色{border-color:#a156b4!important;}.has-very-dark-grey-color{color:#444!important;}.has-very-dark-grey-background-color{background颜色:#444!important;}.has-very-dark-grey-border-color{border-color:#444!important;}has-blush-bordeaux-background{background:线性渐变(135deg,rgb(254,205,165)0%,rgb.has-blush-light-purple-background{background:线性渐变(135度,rgb(255,206,236)0%,rgb(152,150,240)100%)!重要;}.has-big-font-size{font-size:32;}.has-normal-font-size{font-size:16;}/*块级类(绑定到组块)*/.wp-block-group.has-black-color{color:#a156b4!important;}.wp-block-group.has-black-background-color{background-color:#a156b4!重要;}.wp-block-group.has-black-border-color{border-color:#a156b4!重要;}.wp-block-group.has-white-color{color:#444!important;}.wp-block-group.has-white-background-color{背景颜色:#444!important;}.wp-block-group.has-white-border-color{border-color:#444!important;}

为了保持向后兼容性,通过声明预置添加主题支持还将生成CSS自定义属性。如果主题.json包含任何预设,这些预设将优先于通过声明的预设添加主题支持.

预设类通过一些用户操作附加到帖子的内容。这就是为什么引擎会添加!重要的因为用户样式应该优先于主题样式。

自定义

除了为预设创建CSS自定义属性外主题.json还允许主题创建自己的主题,因此它们不必单独排队。中声明的任何值习俗字段将按照此命名模式转换为CSS自定义属性:--wp—自定义-->variable-name>.

例如:

{“版本”:3,“设置”:{“自定义”:{“baseFont”:16,“线条高度”:{“小”:1.2,“中等”:1.4,“大”:1.8}},“块”:{“核心/群体”:{“自定义”:{“baseFont”:32}}}}}
车身{--wp—自定义—base-font:16;--wp——自定义——线高——小:1.2;--wp——自定义——线高——中等:1.4;--wp——自定义——线高——大:1.8;}.wp-block-组{--wp—自定义—base-font:32;}

注意,变量的名称是通过添加--在每个嵌套级别之间骆驼皮箱字段转换为烤肉串.

设置示例

  • 仅为段落块启用自定义颜色:
{“版本”:3,“设置”:{“颜色”:{“自定义”:false},“块”:{“核心/段落”:{“颜色”:{“自定义”:true}}}}}
  • 禁用按钮块的边界半径:
{“版本”:3,“设置”:{“块”:{“核心/按钮”:{“边界”:{“半径”:假}}}}}
  • 为组块提供与其他组块不同的调色板:
{“版本”:3,“设置”:{“颜色”:{“调色板”:[{“slug”:“黑色”,“颜色”:“#000000”,“name”:“黑色”},{“slug”:“白色”,“颜色”:“#FFFFFF”,“name”:“白色”},{“slug”:“红色”,“颜色”:“#FF0000”,“名称”:“红色”},{“slug”:“绿色”,“颜色”:“#00FF00”,“name”:“绿色”},{“slug”:“蓝色”,“颜色”:“#0000FF”,“name”:“蓝色”}]},“块”:{“核心/群体”:{“颜色”:{“调色板”:[{“slug”:“黑色”,“颜色”:“#000000”,“name”:“黑色”},{“slug”:“白色”,“颜色”:“#FFF”,“name”:“白色”}]}}}}}

样式

Gutenberg插件扩展了WordPress 5.8中可用的样式,因此它们可以与其他WordPres版本一起使用,并且在移植到核心之前经历了一个成熟过程。

下面的选项卡显示了WordPress 5.8支持的样式和Gutenberg插件支持的样式。

每个块声明它通过块支撑机构。支持声明用于在编辑器中自动生成块的UI控件。主题可以通过主题.json对于任何块,主题都有责任根据块标记等验证其是否正常工作。

{“版本”:3,“样式”:{“边界”:{“radius”:“value”,“color”:“value”,“style”:“value”,“width”:“value”},“过滤器”:{“duotone”:“value”},“颜色”:{“background”:“value”,“gradient”:“value”,“text”:“value”},“间距”:{“blockGap”:“value”,“保证金”:{“顶部”:“值”,“right”:“value”,“底部”:“值”,“left”:“值”,},“填充”:{“top”:“value”,“right”:“value”,“bottom”:“value”,“left”:“value”}},“排版”:{“fontSize”:“value”,“fontStyle”:“值”,“fontWeight”:“value”,“letterSpacing”:“值”,“lineHeight”:“value”,“textDecoration”:“value”,“textTransform”:“值”},“元素”:{“链接”:{“边框”:{},“颜色”:{},“间距”:{},“排版”:{}},“h1”:{},“h2”:{},“h3”:{},“h4”:{},“h5”:{},“h6”:{}},“块”:{“核心/群体”:{“边框”:{},“颜色”:{},“间距”:{},“排版”:{},“元素”:{“链接”:{},“h1”:{},“h2”:{},“h3”:{},“h4”:{},“h5”:{},“h6”:{}}},“etc”:{}}}}
{“版本”:3,“样式”:{“边界”:{“color”:“value”,“radius”:“value”,“style”:“value”,“width”:“value”},“颜色”:{“background”:“value”,“gradient”:“value”,“text”:“value”},“尺寸”:{“aspectRatio”:“value”,“minHeight”:“value”},“过滤器”:{“duotone”:“value”},“间距”:{“blockGap”:“value”,“保证金”:{“top”:“value”,“right”:“value”,“bottom”:“value”,“left”:“value”},“填充”:{“top”:“value”,“right”:“value”,“bottom”:“value”,“left”:“value”}},“排版”:{“fontFamily”:“value”,“fontSize”:“value”,“fontStyle”:“值”,“fontWeight”:“value”,“letterSpacing”:“值”,“lineHeight”:“value”,“textColumns”:“value”,“textDecoration”:“value”,“textTransform”:“值”},“元素”:{“链接”:{“边界”:{},“颜色”:{},“间距”:{},“排版”:{}},“h1”:{},“h2”:{},“h3”:{},“h4”:{},“h5”:{},“h6”:{},“标题”:{},“按钮”:{},“标题”:{}},“块”:{“核心/群体”:{“边框”:{},“颜色”:{},“尺寸”:{},“间距”:{},“排版”:{},“元素”:{“链接”:{},“h1”:{},“h2”:{},“h3”:{},“h4”:{},“h5”:{},“h6”:{}}},“等”:{}}}}

顶级风格

在顶层找到的样式将使用身体选择器。

{“版本”:3,“样式”:{“颜色”:{“text”:“var(--wp--preset--color--primary)”}}}
车身{颜色:var(--wp--预置--颜色--主要);}

块样式

块中找到的样式将使用块选择器排入队列。

默认情况下,块选择器根据其名称生成,例如.wp块-<没有命名空间的块名>例如,.wp-block-组对于核心/组块。有些块希望退出此默认行为。他们可以通过__实验选择器中的键支架其部分块.json文件。请注意,需要在服务器端为__实验选择器字段可用于样式引擎。

{“版本”:3,“样式”:{“颜色”:{“text”:“var(--wp--preset--color--primary)”},“块”:{“核心/段落”:{“颜色”:{“text”:“var(--wp--preset--color--secondary)”}},“核心/群体”:{“颜色”:{“text”:“var(--wp--预置--颜色--第三级)”}}}}}
车身{color:var(--wp-预设--color--primary);}p{/*核心/段落退出默认行为,并使用p作为选择器*/color:var(--wp-预置--color--secondary);}.wp-block-组{颜色:var(--wp--预置--颜色--第三级);}

引用样式

可以使用对根级样式的引用来设置块的样式。Gutenberg支持此功能。
如果使用styles.color.background为根注册背景色:

“样式”:{“颜色”:{“background”:“var(--wp--preset--color--primary)”}}

您可以使用参考:“styles.color.background”要重用块的样式,请执行以下操作:

{“颜色”:{“text”:{“ref”:“styles.color.background”}}}

元素样式

除了顶级和块级样式之外,还有可以在这两个地方使用的元素概念。这其中有一组是封闭的:

古腾堡支持:

  • 按钮:映射到wp-element-按钮CSS类。也映射到wp-块-按钮_链接以实现向后兼容性。
  • 标题:映射到.wp元素说明、.wp块音频说明、.wp块嵌入说明、.wp块库说明、.wp块图像说明、.wp块表格说明、.wp块视频说明CSS类。
  • 标题:映射到所有标题h1至h6CSS选择器。

WordPress支持:

  • 小时1:映射到小时1CSS选择器。
  • 氢气:映射到氢气CSS选择器。
  • 小时3:映射到小时3CSS选择器。
  • h4型:映射到h4型CSS选择器。
  • 小时5:映射到小时5CSS选择器。
  • 小时6:映射到小时6CSS选择器。
  • 链接:映射到CSS选择器。

如果它们位于顶层,则将使用元素选择器。如果在块中找到它们,则要使用的选择器将元素附加到相应的块中。

{“版本”:3,“样式”:{“排版”:{“fontSize”:“var(--wp-预设--fontSize--normal)”},“元素”:{“h1”:{“排版”:{“fontSize”:“var(--wp-预设--fontSize--巨大)”}},“h2”:{“排版”:{“fontSize”:“var(--wp-预设--fontSize--big)”}},“h3”:{“排版”:{“fontSize”:“var(--wp-预设--fontSize--medium)”}}},“块”:{“核心/群体”:{“元素”:{“h2”:{“排版”:{“fontSize”:“var(--wp-预设--fontSize--small)”}},“h3”:{“排版”:{“fontSize”:“var(--wp--预设--字体大小--更小)”}}}}}}}
车身{font-size:var(--wp--预置--font-size--正常);}小时1{font-size:var(--wp-预设--font-size-巨大);}氢气{font-size:var(--wp-预设--font-size-大);}小时3{font-size:var(--wp--预置--font-size--中等);}.wp-block-组h2{font-size:var(--wp--预置--font-size--小);}.wp-block-组h3{font-size:var(--wp--预置--font-size--较小);}
元素伪选择器

伪选择器:悬停,:焦点,:已访问,:活动,:链接,:任意链接得到古腾堡的支持。

“元素”:{“链接”:{“颜色”:{“text”:“绿色”},“:悬停”:{“颜色”:{“text”:“热粉红色”}}}}

变化

块可以具有“样式变体”,如block.json规范.Theme作者可以使用Theme.json文件为现有样式变体定义样式属性。未注册样式变体的样式将被忽略。

请注意,变体是一个“块概念”,它们只与块绑定存在。这个主题.json规范只允许变化在块级别,但不在顶级。值得强调的是,只有在块.json块的文件被视为“已注册”:到目前为止,通过寄存器块样式或在客户端中被忽略,请参阅这个问题了解更多信息。

例如,这是如何为现有的平原的变化核心/报价块:

{“版本”:3,“样式”:{“块”:{“核心/报价”:{“变体”:{“普通”:{“颜色”:{“background”:“红色”}}}}}}}

产生的CSS输出如下:

.wp-block-quote.is-style-plain{背景色:红色;}

自定义模板

WordPress 5.9版支持。

在此字段中,主题可以列出模板文件夹。例如,对于名为my-custom-template.html,的主题.json可以声明哪些帖子类型可以使用它,以及向用户显示什么标题:

  • 名称:必填。
  • 标题:必填,可翻译。
  • postTypes:可选,仅适用于第页默认情况下。
{“版本”:3,“自定义模板”:[{“name”:“my-custom-template”,“title”:“模板标题”,“帖子类型”:[“第页”,“帖子”,“my-cpt”]}]}

模板部件

WordPress 5.9版支持。

在此字段中,主题可以列出部分文件夹。例如,对于名为my-template-part.html,的主题.json可以为模板零件实体声明区域术语,该实体负责在编辑器中呈现相应的块变体(页眉块、页脚块等)。在json中定义此区域术语将允许该设置在该模板零件实体的所有使用中保持不变,而不是只影响一个块的块属性。不建议将区域定义为块属性,因为这仅用于“幕后”,以帮助弥合占位符流和实体创建之间的差距。

目前,区域术语的“页眉”和“页脚”值存在块变体,json中未定义的任何其他值和模板部件将默认为通用模板部件块。变体将由编辑器界面中的特定图标表示,默认为包装器的相应语义HTML元素(这也可以被标记名属性集),并将模板部分上下文化,以便在未来的编辑器改进中允许更多自定义流。

  • 名称:必填。
  • 标题:可选,可翻译。
  • 区域:可选,将设置为未分类的默认情况下,不会触发块变化。
{“版本”:3,“模板部件”:[{“name”:“my-template-part”,“title”:“标题”,“区域”:“标题”}]}

模式

WordPress 6.0版支持。

在此字段中,主题可以列出要注册的模式模式目录. The模式字段是模式数组鼻涕虫从模式目录。模式段塞可以通过网址在模式目录的单一模式视图中。例如,在此url中https://wordpress.org/patterns/pattern/partner-logos`鼻涕是partner-logos合作伙伴。

{“版本”:3,“patterns”:[“shorttext-surrounded-by-round-images”,“partner-logos”]}

使用theme.json开发

很难记住theme.json的设置和属性,以及在开发时WordPress的哪些版本支持哪些设置,因此为theme.j森使用提供的json模式会很有帮助。

许多代码编辑器支持JSON模式,并可以在编辑器中提供工具提示、自动补全或模式验证等帮助。

每个WordPress版本的Theme.json模式可在https://schemas.wp.org/wp/{{version}}/theme.json`。例如,WordPress 5.8的模式可在https://schemas.wp.org/wp/5.8/theme.json网站`. 为了确保您只使用用户可用的功能,最好使用您的主题支持的最旧版本。

包含Gutenberg插件所有最新更改的最新模式可从以下网址获得:`https://schemas.wp.org/trunk/theme.json网站`.

检查编辑器文档中的JSON模式支持。例如,在Visual Studio代码中,您需要添加“$schema”:“https://schemas.wp.org/wp/x.x/theme.json网站"作为您的theme.json文件的顶级属性,但其他编辑器的配置可能不同。

使用模式验证的示例

常见问题

CSS自定义属性的命名模式

您可能已经注意到,系统创建的CSS自定义属性使用了命名模式,包括使用双连字符,--,以分离不同的“概念”。以下面的例子为例。

预设例如--wp--预设--颜色--黑色可以分为以下组块:

  • --水处理:前缀,用于命名CSS变量的名称空间。
  • 预设:表示是属于预设的CSS变量。
  • 颜色:表示变量所属的预置类别。可以是颜色,字体大小,梯度.
  • 黑色:的段塞特定预设值。

自定义属性,例如--wp--自定义--线高--正文,可分为以下几个部分:

  • --水处理:为CSS变量命名的前缀。
  • 习俗:表示由主题创建的“自由形式”CSS变量。
  • 线高--主体:将“自定义”对象键转换为字符串的结果。

这个--作为分隔符有两个功能:

  • 可读性,便于人类理解。可以认为它类似于BEM命名模式,它分离“类别”。
  • 可解析性,便于机器理解。使用定义的结构可以让机器理解属性的含义--wp--预设--颜色--黑色:它是一个绑定到颜色预设的值,其slug为“black”,这样我们就有空间对其进行更多操作。

为什么使用-作为分隔符?

我们可以使用任何其他分隔符,例如单个-.

然而,这是有问题的,因为不可能知道如何--wp-custom-line高模板标头应该转换回对象,除非我们强制主题作者不使用-在变量名中。

通过预订--作为类别分隔符,并让主题作者使用-对于单词边界,命名更清晰:--wp--自定义--线宽--模板标头.

“自定义”下的设置如何创建新的CSS自定义属性

根据“custom”键下的设置创建CSS变量的算法是这样工作的:

这是为了清楚起见,但也因为我们需要一种机制来解析回变量名,例如--wp--自定义--线高--正文转换为主题.json中的对象形式。我们对预设使用相同的分隔。

例如:

{“版本”:3,“设置”:{“自定义”:{“线条高度”:{“主体”:1.7},“font-primary”:“-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Sans-serif”}}}
车身{--wp——自定义——线高——正文:1.7;--wp--custom--font-primary:“-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen-Sans,Ubuntu,Cantarell,'Helvetica Neue',Sans-serif”;}

关于此过程的几点注意事项:

  • 带骆驼皮的键转换为其烤肉串表单,以遵循CSS属性命名模式。例子:线条高度被转化为线路高度.
  • 不同深度级别的关键点由--.这就是为什么线路高度身体被隔开--.
  • 你不应该使用--在键的名称中习俗对象。例子,不要这样做这个:
{“版本”:3,“设置”:{“自定义”:{“线条--高度”:{//请勿这样做“主体”:1.7}}}}

全球样式表

在WordPress 5.8中,对于大多数主题,WordPres定义的一些预设(字体大小、颜色和渐变)的CSS加载了两次:在块库样式表中,再加上在全局样式表中。此外,这两个地方的CSS略有不同。

在WordPress 5.9版本中,预置的CSS被合并到全局样式表中,现在可以为所有主题加载。每个预设值都会生成一个CSS自定义属性和一个类,如下所示:

/*预设值的CSS自定义属性*/车身{--wp—预设-->preset_TYPE>-->preset_SLUG>:<DEFAULT_VALUE>;--wp--预设--颜色--淡色墨水:#f78da7;--wp——预设——字体大小——大:36px;/*等*/}/*预设值的CSS类*/.具有-<PRESET_SLUG>-<PRETET_TYPE>{…}.has-pale-pink-color{color:var(--wp-预设--color--pale-pink)!重要;}.has-large-font-size{font-size:var(--wp-预设--font-size-大)!important;}

对于要覆盖默认值的主题,可以使用主题.json并提供相同的段塞。不使用主题.json仍然可以通过将一些设置相应CSS自定义属性的CSS排入队列来覆盖默认值。

例子(为默认的大字体设置一个新值):

车身{--wp—预设--字体大小--大:<NEW_VALUE>;}

在WordPress 5.8中,当用户为特定块选择链接颜色时,我们以以下形式将类附加到该块.wp-element-<ID>然后将以下样式排入队列:

.wp-element-<ID>a{color:<USER_color_VALUE>!important;}

虽然这始终保留了用户的首选项,但其特定性太强,与合法使用HTML元素的某些块冲突,HTML元素不应被视为链接。收件人解决这个问题,在WordPress 5.9版本中!重要的删除并更新了相应的块,以使a元素具有比用户链接颜色更高的特异性,即:

.wp-element-<ID>a{color:<USER_color_VALUE>;}

由于此更改,现在区块作者和主题作者有责任确保始终尊重用户的选择,并且用户提供的链接颜色(特异性011)不会被覆盖。

什么是blockGap?我如何使用它?

对于包含内部块的块,例如组、列、按钮和社交图标,块间隙控制内部块之间的间距。对于块间隙为了工作,区块还必须选择加入布局块式支架,它提供可以通过块间距控件调整的布局样式。根据块的布局块间隙值将输出为垂直边距或缺口值。在编辑器中块间隙值被调用块间距,位于“尺寸”面板中。

{“版本”:3,“设置”:{“间距”:{“blockGap”:true,}},“样式”:{“间距”:{“块间隙”:“1.5rem”}}}

的设置块间隙是布尔值或无效的值和为无效的默认情况下。这允许对样式输出进行额外级别的控制。这个settings.spaceing.block间隙在中设置主题.json文件接受以下值:

  • 真的:选择显示块间距编辑器UI和输出中的控件块间隙样式。
  • :选择退出显示块间距编辑器UI中的控件,带有块间隙存储在中的样式主题.json仍在渲染中。这允许主题使用块间隙值,而不允许用户在编辑器中进行更改。
  • 无效的(默认):选择不显示块间距控制,防止输出块间隙样式。

为根定义的值样式.spacing.blockGap样式也输出为CSS属性,名为--wp--样式--块映射.

为什么更新浏览器中的样式需要这么长时间?

当您积极使用theme.json进行开发时,您可能会注意到您的更改需要30多秒才能显示在浏览器中,这是因为主题.json已缓存。要删除此缓存问题,请设置WP_DEBUG公司脚本_取消在您的wp-config.php这告诉WordPress跳过缓存并始终使用新数据。