The settings.custom property 在 theme.json 中的其他设置中是独一无二的。顾名思义,它是一个自定义属性。这意味着您可以决定如何使用它。本质上,它提供了一种创建您可能需要在主题的其他地方使用的 CSS 自定义属性的方法。
在本文档中,您将了解 custom 属性的用途以及如何在您的主题中使用它。
自定义设置概述
settings.custom 属性接受单个对象,该对象可用于存储其他值。单个对象值必须是有效的 CSS 值或具有嵌套键/值对的对象。
以下是 theme.json 中未设置任何自定义值的示例片段:
{
"version": 2,
"settings": {
"custom": {}
}
}settings.custom 对象的好处是,您可以使用它来创建自己的 CSS 自定义属性。当您向对象添加键和值时,WordPress 将自动生成 CSS 自定义属性、分配该值并为您加载它。
生成的 CSS 自定义属性将遵循以下模式:--wp--custom--{key}--{value}。
假设您想使用键 fruit 并将其值设为 apple。将此内容添加到您的 theme.json 文件中:
{
"version": 2,
"settings": {
"custom": {
"fruit": "apple"
}
}
}WordPress 将生成以下 CSS:
body {
--wp--custom--fruit: apple;
}CSS 自定义属性的生成方式
如上所述,settings.custom.fruit 键名将生成 CSS 中的 --wp--custom--fruit 变量。但也存在其他情况。
自动连字符化
WordPress 会自动对驼峰式命名的名称进行连字符化处理。例如,以下示例中的 lineHeight 将变为 line-height:
{
"version": 2,
"settings": {
"custom": {
"lineHeight": "1.4em"
}
}
}这将创建以下 CSS:
body {
--wp--custom--line-height: 1.4em;
}当用作键时,数字的处理方式与大写字母相同。例如,键 abc123 在生成的 CSS 中将变为 abc-1-2-3。
嵌套属性
基于上述示例,假设您想为您的主题创建几个行高 CSS 自定义属性。为此,您可能想在 settings.custom.lineHeight 下创建一个对象,而不是单个值。
将以下内容添加到您的 theme.json 文件中:
{
"version": 2,
"settings": {
"custom": {
"lineHeight": {
"xs": "1",
"sm": "1.25",
"md": "1.5",
"lg": "1.75"
}
}
}
}WordPress 将在生成 CSS 自定义属性名称时自动使用此嵌套结构。
这将生成以下 CSS:
body {
--wp--custom--line-height--xs: 1;
--wp--custom--line-height--sm: 1.25;
--wp--custom--line-height--md: 1.5;
--wp--custom--line-height--lg: 1.75;
}嵌套的深度没有限制,但请记住,嵌套越多,您的 CSS 自定义属性名称就越长。
实际用法
settings.custom 属性的用途完全由您决定。从根本上说,它实际上只是生成 CSS 自定义属性,而这些属性本身不会做任何事情。自定义属性也必须用于 CSS 中。
在上面的 theme.json 示例中,您创建了一组行高。有几种方法可以将这些内容投入实际使用。
在 theme.json 样式中使用
在样式文档中,您将学习如何通过 theme.json 将样式应用于根元素、元素和块。这将是与 settings.custom 集成的主要用例之一。
假设您想注册上面的一组行高并使用它们。也许您希望将根元素的行高设置为 md,将段落块的行高设置为 lg。您可以通过 var:custom|line-height|md 和 var:custom|line-height|lg 分别访问每个行高属性。
将此代码放入您的 theme.json 文件中:
{
"version": 2,
"settings": {
"custom": {
"lineHeight": {
"xs": "1",
"sm": "1.25",
"md": "1.5",
"lg": "1.75"
}
}
},
"styles": {
"typography": {
"lineHeight": "var:custom|line-height|md"
}
"blocks": {
"core/paragraph": {
"typography": {
"lineHeight": "var:custom|line-height|lg"
}
}
}
}
}您也可以通过 CSS 自定义属性引用这些值。例如,不使用 var:custom|line-height|md,而是使用 var( --wp--custom--line-height--md )。
请记住,您将从样式文档中了解有关通过 theme.json 进行样式的更多信息。您可以使用在那里学到的内容来结合此处概述的技术。
在 CSS 中使用
有时您可能需要在 CSS 中直接引用生成的 CSS 自定义属性,例如您的 style.css 文件。为此,您必须使用 CSS 自定义属性名称。
假设您需要针对名为 .example-class 的类,并赋予您已注册的 sm 行高。将此代码放入您的 CSS 中:
.example-class {
line-height: var( --wp--custom--line-height--sm );
}