Rural Blog docsAll pages

theme.json

Rural Blog ships a theme.json. It is short on purpose:

{
  "$schema": "https://schemas.wp.org/wp/6.0/theme.json",
  "version": 2,
  "settings": {
    "layout": {
      "contentSize": "620px",
      "wideSize": "900px"
    },
    "spacing": {
      "blockGap": true
    }
  }
}

What it does

contentSize: 620px — the width of the editor canvas, and the width a constrained block layout uses. It matches the theme’s narrow (reading) width, so what you see in the editor is what the post renders at.

wideSize: 900px — how far a block set to Wide width escapes the reading column. See Wide and full width.

blockGap: true — puts the vertical space between blocks under the theme’s control rather than the editor’s default. That is what stops a paragraph followed by an image opening a gap the rest of the theme knows nothing about.

Why it is not bigger

A classic theme has two places a style can come from: theme.json and the stylesheet. Duplicating the palette and typography into theme.json would mean every colour and font existed twice, in two systems with different rules about which wins — and the Customizer, which is where you actually set them, would be one of three sources of truth rather than the one.

So the theme declares only what the editor genuinely needs to know and keeps everything else in one place. The editor is kept in step through editor.css instead — see Block editor support.

Changing the widths

The two numbers are not Customizer settings. To change them, override the file from a child theme: put your own theme.json in the child theme folder and WordPress merges it over the parent’s.

{
  "$schema": "https://schemas.wp.org/wp/6.0/theme.json",
  "version": 2,
  "settings": {
    "layout": {
      "contentSize": "760px",
      "wideSize": "1100px"
    }
  }
}

If you do that, change the narrow width in the Customizer to match, or the editor and the front end will disagree about how wide a post is.