For developers
A repeatable foundation for bespoke block themes.
Keep WordPress structure explicit, keep application logic in PHP, and give every project a layout your team can recognise.
porter/
blocks/
components/
config/
blocks.json
porter.json
posttypes.json
taxonomies.json
inc/
parts/
templates/
theme.json
The working model
Configuration for repeatable structure. PHP for project logic.
PorterWP reads the theme’s project definitions and connects them to native WordPress APIs. It does not generate a design, prescribe the frontend or replace the judgement of the development team.
DEFINE
Model the project
Describe post types, taxonomies, ACF option pages, block folders, theme support and assets in small configuration files.
BUILD
Develop components
Keep an ACF block’s metadata, local fields, rendering class, PHP template and styling together. Add scripts only when the component needs them.
EXTEND
Add project behaviour
Use the theme’s PHP include paths and documented hooks for custom rules, Query Loop changes and integration code.
SHIP
Validate the contract
Validate strict configuration, build theme assets, test editor and frontend requests, and activate a PorterWP licence for each production domain.
A component-shaped block
Keep the moving parts together.
A PorterWP block folder is deliberately readable. The starter opts into ACF Blocks v3 and places local field JSON beside the block that uses it.
ACF Pro 6.6 or newer is required for the starter’s ACF Blocks v3 scaffold. Projects that do not use ACF-backed features can continue to use Porter’s other theme tools.
sample-block/
acf-json/
group_sample.json
assets/
css/block.css
js/block.js
block.json
class.php
template.php
Built for extension
Start with WordPress, then add only what the project needs.
Query Loop helpers
Apply theme-specific query rules to an identified core Query Loop or build on the premium public filter system without replacing the block’s query globally.
Theme lifecycle helpers
Use project PHP for rewrite rules, content status behaviour, template helpers and other site decisions. PorterWP provides stable integration points and retains existing template and subclass APIs.
Start from a known structure