Skip to main content
PizzaTierPro is here — full WooCommerce ordering, available now. Get Pro
Developer Reference

Build on
top of it.

Documentation at the code level for theme and plugin authors: the REST endpoints, the JavaScript event API, the PHP filter hooks, how templates are structured, and the ground rules that keep any contribution PHP 7.4-safe and ready for WordPress.org.

Pitching in on GitHub

PizzaTier is GPL-2.0 and happy to take contributions. The repo spells out the coding standards, the pull-request flow, and the manual QA checklist. Bug reports, PRs, and new templates are all welcome.

Developer Articles

API & Architecture Reference

15 coding-level guides. For end-user setup help, see the Support Center.

Api Cpt

Understanding CPT Slugs and Ingredient Types

How PizzaTier's six Custom Post Types work: pizzatier_toppings, pizzatier_crusts, pizzatier_sauces, pizzatier_cheeses, pizzatier_drizzles, and pizzatier_cuts. Slug constants, register_post_type() arguments, and capability mapping.

Jan 12, 2026 Read more
Api Rest

REST API Endpoint Reference

Full reference for the /wp-json/pizzatier/v1/render endpoint — parameters, response format, authentication, and usage examples for headless builds.

Jan 22, 2026 Read more
Templates Api Advanced

Creating a Custom Template

Developer guide to building a PizzaTier template from scratch. Covers the six-file architecture, function namespacing with function_exists guards, CSS isolation, and JS instance pattern.

Feb 1, 2026 Read more
Api Hooks

Using PHP Filter Hooks

Reference guide for all apply_filters() hooks including ingredient data, rendered output, and Pro settings passing between PizzaTierPro and the base plugin.

Feb 5, 2026 Read more
Api Js

JS Events API Reference

Developer reference for the JavaScript events API — available events, instance methods via NP.createInstance(), and the window.PizzaTierProBuilder public API exposed by PizzaTierPro.

Feb 18, 2026 Read more
Api Js Advanced

The window.PizzaTierAPI Contract

Every template must register window.PizzaTierAPI exposing getState() that returns a normalized flat layers[] array. Required for PizzaTierPro cart integration and any custom JS that reads builder state. Includes shape spec and event-vs-polling tradeoffs.

Mar 20, 2026 Read more
Templates Api Advanced

Six-File Template Architecture

Deep dive into the file layout of a PizzaTier template: render.php, assets.php, settings.php, style.css, script.js, and meta.json. Function prefixing (pzt_yourname_), function_exists() guards, and how the loader discovers templates.

Mar 22, 2026 Read more
Api Rest Advanced

Headless PizzaTier with the REST Render Endpoint

Server-side rendering and headless integration patterns. POST a state payload to /pizzatier/v1/render and receive an HTML fragment or JSON. Covers auth, caching headers, and rate limit guidance.

Mar 24, 2026 Read more
Templates Blocks Advanced

Building a Block-Based Template

How to ship a Gutenberg-block-enabled template variant. Block registration, inner-block patterns, and how server-side render() falls back to the same render.php used by the shortcode.

Mar 26, 2026 Read more
Api Hooks Advanced

Hooking the Render Pipeline

Modify what gets rendered without forking a template. apply_filters() entry points covering ingredient lists, the canvas markup, the wrapper, and per-layer image URLs. Includes a worked example replacing the default crust filter.

Mar 28, 2026 Read more
Js Api Advanced

Reading Builder State from External JS

Patterns for reading live builder state from external JavaScript without coupling to a specific template. Polling at 120ms (the Pro approach), the recommended event listeners, and avoiding double-dispatch bugs across multiple instances.

Mar 30, 2026 Read more
Api Advanced

PHP 7.4 Compatibility Constraints

Why the codebase targets PHP 7.4 and what you can't use when contributing or building extensions: no union types, no match expressions, no named arguments, no str_starts_with()/str_ends_with(). Recommended polyfills.

Apr 1, 2026 Read more
Api Advanced Woocommerce

Namespacing Classes That Extend WooCommerce Globals

Why classes extending WC_Product must be declared in the true global namespace using bracketed namespace syntax, not the plugin's PSR-4 namespace. The Pro Pizza product type as a worked example.

Apr 3, 2026 Read more
Api Advanced

Asset Enqueue Timing: wp_add_inline_style()

wp_add_inline_style() requires the target handle to already be enqueued; calling it on a registered-but-not-enqueued handle causes WordPress to flush raw CSS without <style> tags. How to order enqueue calls correctly for inline data.

Apr 5, 2026 Read more
Contributing Advanced

Contributing to PizzaTier on GitHub

Coding standards, PR workflow, the manual QA checklist, and the lint scripts run on every change. PHP lint + JS brace-balance + a Cypress smoke pass before merge.

Apr 7, 2026 Read more

Before you open a PR

A few rules the codebase
holds you to.

🐘

PHP 7.4 Target

Skip union types, match expressions, named arguments, and str_starts_with() / str_ends_with(). Plenty of shops run on shared hosting pinned to 7.4, where newer syntax dies the moment the file loads.

📦

WP.org Compliance

Pull every <script> and <style> block out into a properly enqueued file. Hand dynamic PHP data over with wp_localize_script() or wp_add_inline_script() — never echo it straight into the markup.

🧬

Cross-Plugin Contract

Every template has to publish window.PizzaTierAPI, and getState() must return a flat, normalized layers[] array. Pro reads it on a 120ms poll, since events on their own don't hold up consistently across all the templates.