Skip to content
Zain

WordPress block theme · Free on WordPress.org

Eight ways to look. One line of JavaScript: none.

Zain is a full site editing theme built the way WordPress asks for one — patterns, templates and theme.json. Change the whole site's colour and type from the Site Editor, without a page builder and without a settings panel to learn.

  • GPLv2 or later
  • No page builder
  • No upsell screen
Style variations 8 shipped

Noon

The quiet part of a page is the page

Typography, spacing and colour come from theme.json, so the whole site changes together instead of block by block.

Read more

In WordPress this is Appearance → Editor → Styles. Same eight, same hexes.

  • 8 colour variations
  • 70 patterns in the inserter
  • 10 templates
  • 0 lines of JavaScript

Style variations

Eight palettes, and none of them is a settings page

A style variation is a small JSON file that re-declares the whole palette. Pick one in the Site Editor and every block on every template follows, because none of them had the colour hard-coded in the first place. Zain ships eight.

  • Evening

    #1B1B1B base · #F0F0F0 contrast

  • Noon

    #F8F7F5 base · #191919 contrast

  • Dusk

    #E2E2E2 base · #3B3B3B contrast

  • Afternoon

    #DAE7BD base · #516028 contrast

  • Twilight

    #131313 base · #FFFFFF contrast

  • Morning

    #DFDCD7 base · #191919 contrast

  • Sunrise

    #330616 base · #FFFFFF contrast

  • Midnight

    #4433A6 base · #79F3B1 contrast

7 typography presets

Type is its own axis. Swap the preset and headings, body and captions all move together — you are not choosing a font per block and hoping the next page matches.

5 section styles

Drop a section style on a group and everything inside it re-tints as a unit. It is how the alternating bands on a long page stay consistent without a second copy of the colours.

3 block styles

Display, Subtitle and Annotation — plus a Checkmark list style registered in functions.php. Named roles, so the same idea looks the same everywhere.

Patterns

Seventy patterns, eleven of them a whole page

Patterns are blocks, not shortcodes and not a builder's own markup. Insert one, edit it like anything else, and if you switch away from Zain tomorrow the content stays where it is.

11 full-page layouts

Business home, portfolio, shop, CV, coming soon, link-in-bio, and landing pages for a book, an event and a podcast. Each one is a complete page, inserted in a single step.

19 banners & heroes

Cover headings, intro bands, posters and image grids — the top of a page, in the shapes a page usually needs it.

13 calls to action

Newsletter, centred heading, search, event list, product grid and book links. All plain blocks, so your form plugin drops straight in.

Blog archetypes, five of them

Text, news, photo, offset and vertical-header — each with a matching home, archive, search, single and query loop, so a whole blog can change character at once.

Also in the inserter
  • 7 about
  • 5 headers
  • 5 footers
  • 3 testimonials
  • 3 services
  • 3 contact
  • 3 text & FAQ
  • 2 pricing tables
  • 2 media grids
  • Logos, galleries, events

Typography

Three typefaces, and all three are on your server

Every font file ships inside the theme as woff2 and is registered in theme.json with a file:./assets/fonts/ source. No request leaves the visitor's browser for a typeface, which is one fewer thing to answer for under GDPR and one fewer third party between your reader and your page.

  • Aa

    Rubik

    Default · 5 weights, 400–800

    Sets headings and body out of the box. Slightly rounded, wide apertures, comfortable at small sizes.

  • Aa

    Manrope

    Variable weight, one file

    A tighter, more geometric alternative. One variable file covers the whole weight range.

  • Aa

    Fira Code

    Variable weight, monospace

    For code blocks and anything that has to line up in a column. Ligatures included.

The samples above are rendered in the browser's own fallback unless you already have these typefaces installed — this page loads no webfont at all, for the same reason the theme self-hosts its own.

How it is built

A block theme, built the way the handbook describes one

There is nothing clever in here to learn or to work around. If you know the Site Editor, you already know Zain.

10 templates, 7 parts

Home, index, single, page, archive, search and 404, plus three custom page templates — full width, no title, and with a sidebar. Headers and footers are template parts, so one edit reaches every page that uses them.

theme.json v3

Appearance tools and root-padding-aware alignments are on. Content is 1160px, wide is 1300px. Change either in one place and every template follows.

9 post formats

Aside, audio, chat, gallery, image, link, quote, status and video — with a block binding that prints the format's name into a template without a shortcode or a filter.

Translation ready, RTL

Every string in functions.php and every pattern passes through the zain text domain, and the layout is declared RTL-capable on WordPress.org.

One stylesheet, minified

The front end loads style.min.css — under a kilobyte. The readable style.css is served only when SCRIPT_DEBUG is on.

Based on Twenty Twenty-Five

Zain starts from the WordPress team's own default theme, GPLv2, and says so in its readme. The foundations are the ones core maintains.

What it will not do

Six things Zain does not ship

Most of what makes a theme hard to leave is the part nobody lists. Here is the part Zain leaves out — every item below is checkable in the source before you install it.

  • No JavaScript

    There is not one .js file in the theme. Nothing to block your Core Web Vitals, nothing to conflict with a plugin, nothing to audit.

  • No page builder

    Every layout is core blocks. Nothing is stored as shortcodes or as a builder's private markup, so your posts stay readable in any other theme.

  • No bundled plugins

    No "required plugins" notice, no installer, no third-party framework riding along in the zip. Activating Zain activates a theme and nothing else.

  • No settings panel

    Zain registers no admin page and no Customizer section. Everything it can do, it does through the Site Editor — the screen WordPress already gives you.

  • No tracking, no phone home

    The theme makes no HTTP request at runtime. No analytics, no licence check, no font CDN, no "usage data" prompt on activation.

  • No demo import to undo

    Nothing writes rows into your database to make the screenshot come true. You insert the patterns you want, and deleting one deletes one thing.

Questions

Frequently asked questions

What do I need to run it?

WordPress 6.9 or newer and PHP 7.2 or newer. The 6.9 floor is real rather than cautious — Zain uses block bindings and theme.json v3 features that earlier versions do not resolve.

Is it really free? What is the catch?

It is free, GPLv2 or later, and there is no paid tier. Nothing in the theme is disabled pending a licence key, because WordPress.org does not allow that and because a theme that nags is a theme people uninstall.

Will my content survive if I switch away from Zain?

Yes. Patterns insert core blocks, so your pages are stored as standard block markup that any block theme renders. What you lose on switching is Zain's styling — the layout of your content, and the content itself, moves with you.

Can I change the fonts and colours without touching code?

Yes — Appearance → Editor → Styles. Pick one of the eight variations, or one of the seven typography presets, or open the panel and set your own. Changes there are saved by WordPress, not written into the theme, so a theme update never overwrites them.

Does it work with my plugins?

Zain ships no JavaScript and registers no admin page, so there is very little of it available to conflict with anything. Anything that renders as a block or a shortcode inside post content works the way it does in any block theme.

Can I build a child theme on it?

Yes, and for a block theme you usually do not need to. Template and style edits made in the Site Editor are stored in the database and survive updates on their own. Reach for a child theme when you want to add PHP or ship your own patterns.

Where do the bundled images come from?

All 36 of them are CC0 public domain, sourced from Rawpixel and the Twenty Twenty-Five theme, and every one is credited with its source URL in the theme's readme.txt. You may use them on your own site.

How do I get help?

Through the WordPress.org support forum for the theme. It is public, so an answer helps the next person with the same question — and it does not depend on one inbox being read.