Start hereIntroduction

Introduction

TAW builds and runs custom WordPress sites: a framework with its own data layer, two themes on top, the taw command inside every theme, and taw-fleet to run all your sites from one terminal.

What is TAW?

TAW is a way to build and run custom WordPress sites without a stack of plugins. It's a framework, taw/core, with its own data layer: post types, fields and options defined in PHP or JSON, with no ACF. Two themes are built on it: TAW Theme, classic and component-based, and TAW Gutenberg, a block theme.

Two tools do the everyday work:

TAW is for PHP and WordPress developers who like to work in code: PHP classes, Composer and Vite, not page builders.

How the pieces relate, and how a release reaches a live site: How TAW fits together.


Why TAW?

No ACF, no plugin dependencies: you own your data layer. The data layer, the metabox engine, forms, mail, image helpers and SVG support are built in, so no third-party field plugin can be abandoned under you. The data works the same way in both themes.

Updates like a package

taw update updates taw/core and the framework's files, runs the migrations and the checks, and opens a pull request. The theme's taw.json decides what changes, so nothing asks you questions.

One data layer, two themes

Post types, taxonomies, fieldsets and options pages, defined in PHP or taw-schema/*.json. Read them with typed values through Taw::post(), or show them in the block editor with Block Bindings.

Data in the block editor

Dynamic tags, expressions, conditions, dynamic block settings and the TAW Loop put your fields into any core block, with no custom block code.

Zero-config blocks

In TAW Theme, a block is a folder with a class and a template. taw make:block Hero --type=meta --with-style creates it; each block loads its own CSS and JS only on pages that use it.

Rich metabox engine

19 field types, including repeater, group, post_select, link, icon and datepicker, with conditional logic, tabs and grid layouts. The same fields work on options pages, terms and users.

Forms and email

Form handles CSRF, spam protection, validation, AJAX submission and multi-step wizards. Mailer sends transactional email from MJML or HTML templates.

Content that moves

taw content:export and content:import move a site's content, fields, media and settings as one reviewable JSON file, with a preview first and an undo after.

Production at a glance

The TAW Companion on each live site answers taw-fleet's signed requests: health, plugin updates, vulnerabilities, logs and published content. No passwords, no SSH.


Two themes

TAW ThemeTAW Gutenberg
KindClassic themeBlock theme (full site editing)
Pages are built fromPHP blocks: MetaBlocks with metabox fields, and UI blocksCore blocks in the Site Editor, with your fields through Block Bindings and dynamic tags
taw/core bootsEverything: Theme::bootstrapFullSite()The data layer: Boot::data()
taw commandsAll 33The 6 that don't need the classic scaffold
Front endVite, Tailwind CSS v4, Alpine.js v3Vite and TypeScript blocks

Read more: TAW Theme · TAW Gutenberg.


Get started

Create a site

With taw-fleet on a Mac with Local:

brew install Relmaur/tap/taw-fleet
taw-fleet create "Acme Shop" --classic

Or with Composer, in any WordPress install's wp-content/themes:

composer create-project taw/create my-theme \
  --repository='{"type":"vcs","url":"https://github.com/Relmaur/taw-create"}'

Scaffold a block

taw make:block Hero --type=meta --with-style
composer dump-autoload

Keep it current

taw update

The Quickstart walks through all of it, including the block's fields and template.

Was this page helpful?