Other Settings
Complete reference for border, shadow, dimensions, position, background, appearance tools, custom properties, and other settings.
appearanceTools
Meta-setting that enables multiple design tools at once.
{
"settings": {
"appearanceTools": true
}
}
What it enables:
| Setting | Path |
|---|---|
| Background images | background.backgroundImage |
| Background size | background.backgroundSize |
| Border color | border.color |
| Border radius | border.radius |
| Border style | border.style |
| Border width | border.width |
| Button colors | color.button |
| Caption colors | color.caption |
| Heading colors | color.heading |
| Link colors | color.link |
| Text columns | typography.textColumns |
| Line height | typography.lineHeight |
| Writing mode | typography.writingMode |
| Block gap | spacing.blockGap |
| Margin | spacing.margin |
| Padding | spacing.padding |
| Min height | dimensions.minHeight |
| Aspect ratio | dimensions.aspectRatio |
| Position sticky | position.sticky |
Equivalent to:
{
"settings": {
"background": {
"backgroundImage": true,
"backgroundSize": true
},
"border": {
"color": true,
"radius": true,
"style": true,
"width": true
},
"color": {
"button": true,
"caption": true,
"heading": true,
"link": true
},
"dimensions": {
"aspectRatio": true,
"minHeight": true
},
"position": {
"sticky": true
},
"spacing": {
"blockGap": true,
"margin": true,
"padding": true
},
"typography": {
"lineHeight": true,
"textColumns": true,
"writingMode": true
}
}
}
Note: appearanceTools is an "opt-in" flag. You can combine it with explicit settings to override specific values:
{
"settings": {
"appearanceTools": true,
"border": {
"radius": false
}
}
}
This enables everything except border radius.
Border Settings
{
"settings": {
"border": {
"color": true,
"radius": true,
"style": true,
"width": true
}
}
}
color
Controls whether border color can be customized.
| Value | Effect |
|---|---|
true |
Border color picker available |
false (default) |
Border color control hidden |
radius
Controls whether border radius can be customized.
| Value | Effect |
|---|---|
true |
Border radius input available |
false (default) |
Border radius control hidden |
style
Controls whether border style can be customized.
| Value | Effect |
|---|---|
true |
Border style selector available (solid, dashed, dotted) |
false (default) |
Border style control hidden |
width
Controls whether border width can be customized.
| Value | Effect |
|---|---|
true |
Border width input available |
false (default) |
Border width control hidden |
Shadow Settings
{
"settings": {
"shadow": {
"defaultPresets": true,
"presets": []
}
}
}
defaultPresets
Whether to include WordPress default shadow presets.
{ "settings": { "shadow": { "defaultPresets": true } } }
| Value | Effect |
|---|---|
true (default) |
Core shadows included |
false |
Only theme-defined shadows available |
WordPress default shadows:
| Slug | CSS Value |
|---|---|
| natural | 6px 6px 9px rgba(0, 0, 0, 0.2) |
| deep | 12px 12px 50px rgba(0, 0, 0, 0.4) |
| sharp | 6px 6px 0px rgba(0, 0, 0, 0.2) |
| outlined | 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1) |
| crisp | 6px 6px 0px rgba(0, 0, 0, 1) |
presets
Define custom shadow presets.
{
"settings": {
"shadow": {
"defaultPresets": false,
"presets": [
{
"slug": "sm",
"name": "Small",
"shadow": "0 1px 2px 0 rgb(0 0 0 / 0.05)"
},
{
"slug": "md",
"name": "Medium",
"shadow": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)"
},
{
"slug": "lg",
"name": "Large",
"shadow": "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)"
},
{
"slug": "xl",
"name": "Extra Large",
"shadow": "0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)"
},
{
"slug": "inner",
"name": "Inner",
"shadow": "inset 0 2px 4px 0 rgb(0 0 0 / 0.05)"
}
]
}
}
}
Each shadow preset:
| Property | Type | Required | Description |
|---|---|---|---|
slug |
string | Yes | Unique identifier |
name |
string | Yes | Human-readable name |
shadow |
string | Yes | CSS box-shadow value |
Generated CSS variable:
--wp--preset--shadow--{slug}: {shadow};
Dimensions Settings
{
"settings": {
"dimensions": {
"aspectRatio": true,
"minHeight": true
}
}
}
aspectRatio
Controls whether aspect ratio can be set on blocks.
| Value | Effect |
|---|---|
true |
Aspect ratio control available |
false (default) |
Aspect ratio control hidden |
Supported blocks: Image, Cover, Group, Post Featured Image
Available ratios: 1/1, 4/3, 3/4, 3/2, 2/3, 16/9, 9/16, custom
minHeight
Controls whether minimum height can be set.
| Value | Effect |
|---|---|
true |
Min height input available |
false (default) |
Min height control hidden |
Supported blocks: Cover, Group, Post Content
Position Settings
{
"settings": {
"position": {
"sticky": true
}
}
}
sticky
Controls whether blocks can be made sticky.
| Value | Effect |
|---|---|
true |
Sticky position option available |
false (default) |
Sticky position hidden |
Supported blocks: Group, Columns, Image, any block with position support
How it works:
- Block stays fixed when scrolling past it
- Stays within its parent container bounds
- Useful for sticky headers, sidebars, CTAs
Background Settings
{
"settings": {
"background": {
"backgroundImage": true,
"backgroundSize": true
}
}
}
backgroundImage
Controls whether background images can be set.
| Value | Effect |
|---|---|
true |
Background image control available |
false (default) |
Background image control hidden |
Supported blocks: Group, Columns, Cover
backgroundSize
Controls whether background size/position can be customized.
| Value | Effect |
|---|---|
true |
Background size controls available |
false (default) |
Background size controls hidden |
Options: cover, contain, auto, custom size
Note: Requires backgroundImage: true to be useful.
Custom Properties
Define custom CSS properties for use throughout your theme.
{
"settings": {
"custom": {
"lineHeightHeading": 1.2,
"lineHeightBody": 1.6,
"fontSizeBase": "1rem",
"spacing": {
"gutter": "1.5rem",
"section": "4rem"
},
"colors": {
"accent": "#ff6600",
"muted": "#666666"
},
"transitions": {
"fast": "150ms ease-in-out",
"normal": "300ms ease-in-out"
}
}
}
}
Generated CSS variables:
--wp--custom--line-height-heading: 1.2;
--wp--custom--line-height-body: 1.6;
--wp--custom--font-size-base: 1rem;
--wp--custom--spacing--gutter: 1.5rem;
--wp--custom--spacing--section: 4rem;
--wp--custom--colors--accent: #ff6600;
--wp--custom--colors--muted: #666666;
--wp--custom--transitions--fast: 150ms ease-in-out;
--wp--custom--transitions--normal: 300ms ease-in-out;
Naming convention:
- Property names: camelCase → kebab-case
- Nested objects: double dashes between levels
lineHeightBody→--wp--custom--line-height-bodyspacing.gutter→--wp--custom--spacing--gutter
Using Custom Properties
In theme.json styles:
{
"styles": {
"typography": {
"lineHeight": "var(--wp--custom--line-height-body)"
},
"elements": {
"heading": {
"typography": {
"lineHeight": "var(--wp--custom--line-height-heading)"
}
}
}
}
}
In CSS:
.my-component {
line-height: var(--wp--custom--line-height-body);
padding: var(--wp--custom--spacing--gutter);
transition: all var(--wp--custom--transitions--fast);
}
.accent-text {
color: var(--wp--custom--colors--accent);
}
Organizing Custom Properties
{
"settings": {
"custom": {
"typography": {
"lineHeight": {
"heading": 1.2,
"body": 1.6,
"tight": 1.25,
"loose": 1.8
},
"letterSpacing": {
"tight": "-0.025em",
"normal": "0",
"wide": "0.05em"
}
},
"layout": {
"contentWidth": "720px",
"wideWidth": "1200px",
"fullWidth": "100%",
"sidebarWidth": "300px"
},
"effects": {
"shadow": {
"sm": "0 1px 2px rgba(0,0,0,0.1)",
"md": "0 4px 8px rgba(0,0,0,0.1)",
"lg": "0 8px 16px rgba(0,0,0,0.1)"
},
"radius": {
"sm": "0.25rem",
"md": "0.5rem",
"lg": "1rem",
"full": "9999px"
}
},
"animation": {
"duration": {
"fast": "150ms",
"normal": "300ms",
"slow": "500ms"
},
"easing": {
"default": "ease-in-out",
"bounce": "cubic-bezier(0.68, -0.55, 0.265, 1.55)"
}
}
}
}
}
useRootPaddingAwareAlignments
Enable root padding awareness for full-width blocks.
{
"settings": {
"useRootPaddingAwareAlignments": true
}
}
| Value | Effect |
|---|---|
true |
Full-width blocks extend to viewport edge but respect root padding for inner content |
false (default) |
Standard alignment behavior |
Combined with styles:
{
"settings": {
"useRootPaddingAwareAlignments": true
},
"styles": {
"spacing": {
"padding": {
"left": "var(--wp--preset--spacing--50)",
"right": "var(--wp--preset--spacing--50)"
}
}
}
}
Result:
- Body has horizontal padding
- Full-width blocks ignore this padding for backgrounds
- But their inner content still respects the padding
Complete Example
{
"$schema": "https://schemas.wp.org/trunk/theme.json",
"version": 3,
"settings": {
"appearanceTools": true,
"useRootPaddingAwareAlignments": true,
"border": {
"color": true,
"radius": true,
"style": true,
"width": true
},
"shadow": {
"defaultPresets": false,
"presets": [
{ "slug": "sm", "name": "Small", "shadow": "0 1px 3px rgba(0,0,0,0.12)" },
{ "slug": "md", "name": "Medium", "shadow": "0 4px 6px rgba(0,0,0,0.1)" },
{ "slug": "lg", "name": "Large", "shadow": "0 10px 20px rgba(0,0,0,0.15)" },
{ "slug": "xl", "name": "XL", "shadow": "0 20px 40px rgba(0,0,0,0.2)" }
]
},
"dimensions": {
"aspectRatio": true,
"minHeight": true
},
"position": {
"sticky": true
},
"background": {
"backgroundImage": true,
"backgroundSize": true
},
"custom": {
"typography": {
"lineHeight": {
"tight": 1.2,
"normal": 1.5,
"relaxed": 1.75
}
},
"spacing": {
"gutter": "clamp(1rem, 3vw, 2rem)",
"section": "clamp(3rem, 8vw, 6rem)"
},
"transition": {
"default": "200ms ease-in-out"
},
"radius": {
"default": "0.5rem",
"large": "1rem",
"full": "9999px"
}
},
"blocks": {
"core/button": {
"border": {
"radius": true,
"color": false,
"width": false
},
"shadow": {
"presets": [
{ "slug": "btn-shadow", "name": "Button", "shadow": "0 2px 4px rgba(0,0,0,0.2)" }
]
}
},
"core/group": {
"background": {
"backgroundImage": true,
"backgroundSize": true
},
"position": {
"sticky": true
}
}
}
}
}
CSS Variable Reference
| Setting | CSS Variable Pattern |
|---|---|
shadow.presets |
--wp--preset--shadow--{slug} |
custom.* |
--wp--custom--{path-kebab-case} |
Per-Block Support
Not all blocks support all settings. Here’s what common blocks support:
| Block | Border | Shadow | Dimensions | Position | Background |
|---|---|---|---|---|---|
| Group | ✓ | ✓ | ✓ | ✓ | ✓ |
| Columns | ✓ | ✓ | ✓ | ✓ | ✓ |
| Column | ✓ | ✓ | ✓ | – | – |
| Cover | ✓ | – | ✓ | – | ✓ |
| Image | ✓ | ✓ | ✓ | – | – |
| Button | ✓ | ✓ | – | – | – |
| Heading | – | – | – | – | – |
| Paragraph | – | – | – | – | – |
| Quote | ✓ | – | – | – | – |
| Separator | ✓ | – | – | – | – |
Check block.json supports for definitive support information.