FAQ
Frequently Asked
Questions
Everything you need to know about PizzaLayer — from first install to advanced developer usage.
PizzaLayer is a free WordPress plugin that lets you add an interactive pizza builder to any WordPress site. Customers can select crust, sauce, cheese, toppings, drizzle, and cut style — seeing a live layered visual as they build. It ships with six fully designed templates and a comprehensive admin system for managing all pizza components.
Yes — the PizzaLayer core plugin is completely free and released under GPL-2.0. It can be used on unlimited sites with no restrictions. PizzaLayerPro is a paid extension that adds WooCommerce integration, live pricing, and cart submission. Both plugins are open source.
Download the plugin zip from the download page and install via Plugins → Add New → Upload Plugin in WordPress. After activation, a PizzaLayer menu appears in the admin sidebar. A setup guide walks you through adding your first ingredients and publishing a builder.
A fully interactive demo is available at pizzeria.pizzalayer.com. It showcases all six templates with real ingredient data so you can see exactly how the builder looks and behaves before installing.
PizzaLayer is currently distributed directly through pizzalayer.com. The source code is also publicly available on GitHub. A WordPress.org submission may come in a future release.
After activating the plugin, go to PizzaLayer in your WordPress admin and add at least one item to each component type (Crust, Sauce, Cheese, and at least one Topping). Then create or edit any page, insert the PizzaLayer Gutenberg block or add the [pizzalayer] shortcode, and publish. The builder will immediately render with your configured ingredients.
PizzaLayer includes six fully designed frontend templates: Colorbox, Metro, NightPie, Fornaia, PocketPie, and Scaffold. Each has its own visual style, layout, color system, and CSS. You can see all six on the live demo.
Yes. Each template follows a six-file architecture: pztp-template-info.php, pztp-containers-menu.php, pztp-containers-presentation.php, pztp-template-css.php, pztp-template-custom.php, plus template.css and custom.js.
Duplicate an existing template folder, rename all functions with a unique namespace prefix, and wrap them in function_exists() guards to prevent collisions. Layout lives in CSS, not PHP structure, making customization straightforward.
In the PizzaLayer admin, go to Settings and choose your default template from the dropdown. You can also override it per-embed using the shortcode attribute: [pizzalayer template="nightpie"]. Dark mode can also be toggled globally via the pizzalayer_setting_dark_mode setting.
Yes. All six templates include full dark mode support. You can enable dark mode globally from the PizzaLayer Settings screen, and the admin interface includes its own dark mode styling as well.
Each template has a distinct personality: Colorbox uses bold color blocks with high contrast; Metro is clean and card-based with a modern grid; NightPie features a dark, dramatic aesthetic; Fornaia has a warm, rustic Italian feel; PocketPie is compact and mobile-optimized; and Scaffold is a minimal, unstyled developer base for building a fully custom look. Visit the live demo to compare them side by side.
Yes. The shortcode [pizzalayer template="metro"] lets you set any template on a per-embed basis, regardless of the global default set in Settings. Different pages on the same site can use different templates simultaneously.
Two methods are available:
[pizzalayer] anywhere shortcodes are supported. Optional attributes include template, id, and size.Yes. Each builder instance gets a unique ID. The JavaScript uses an instance factory pattern with scoped state objects, and a getActiveCanvas() method checks visibility to route rendering correctly to the right instance — so multiple builders coexist without conflict.
Yes. The shortcode works in any environment that supports WordPress shortcodes, including Elementor, Divi, Beaver Builder, and classic themes. The Gutenberg block works natively in the WordPress block editor.
The [pizzalayer] shortcode supports several optional attributes:
template — override the global template (e.g., template="fornaia")id — specify a custom instance ID for targeting with JavaScriptsize — adjust the display size of the builderExample: [pizzalayer template="metro" id="my-builder"]
Yes. All templates are fully responsive. The PocketPie template is specifically designed with mobile-first layouts in mind, but all six templates are tested and functional on phones and tablets.
Yes, via the REST API. The endpoint at /wp-json/pizzalayer/v1/render returns rendered builder HTML that can be loaded into any page via JavaScript. This powers headless WordPress setups and allows embedding the builder in non-WordPress front-ends.
No — WooCommerce is not required for the free plugin. PizzaLayer works as a standalone visual builder for display purposes, menu presentations, or custom integrations.
WooCommerce is only required if you install PizzaLayerPro, which adds live pricing and cart submission.
PizzaLayerPro is a paid extension that adds full WooCommerce integration to the free PizzaLayer plugin — including live per-ingredient pricing, cart submission, a custom "Pizza" product type, a product configurator meta box, rich order details panels, and checkout bar templates. It is GPL-licensed like the core plugin. Learn more and get PizzaLayerPro →
PizzaLayerPro registers a custom WooCommerce "Pizza" product type. You configure base pricing and per-ingredient prices through the product configurator meta box inside WooCommerce. The frontend updates the running total live as the customer builds — price changes are calculated per layer in real time.
Each order item stores full pizza meta: crust, sauce, cheese, toppings, drizzle, and cut. These appear in the WooCommerce order admin view via a dedicated PizzaLayer order details panel, so staff can see exactly what was ordered at a glance.
Yes. PizzaLayerPro installs alongside your existing WooCommerce setup and adds a new "Pizza" product type without touching other product types or existing products.
Yes — PizzaLayerPro is an extension of the free PizzaLayer plugin. Both must be installed and activated. Pro adds WooCommerce functionality on top of the core builder; it does not replace it.
Yes — licenses include updates for the duration of the license period. Updates are released regularly as the plugin evolves. Licensing terms and site limits are available on the Pro page.
A 14-day refund is available if the plugin does not work as described and the issue cannot be resolved. Contact support within 14 days of purchase with details about the problem.
The admin includes dedicated screens for every pizza component — toppings, crusts, sauces, cheeses, drizzles, and cuts — each with image upload, ordering controls, and visibility toggles. A Settings screen controls the default template, dark mode, and other global options. A Dashboard provides an at-a-glance overview with notices for any configuration issues.
Each ingredient uses WordPress menu order. In the admin list screens, drag items to reorder them or enter a numeric order value. The builder reflects the saved order instantly on the frontend.
Yes. PizzaLayer includes export functionality that generates a downloadable file of your configured ingredients and settings, useful for migrating between environments or creating backups.
Yes. Every ingredient in every component type has a visibility toggle. Hidden ingredients are excluded from the frontend builder but remain in the admin so you can re-enable them later — useful for seasonal toppings or temporary menu changes.
Each ingredient in the admin has a dedicated image upload field that uses the standard WordPress media library. For best results, use transparent PNG images for toppings and cheese layers, since they are composited on top of each other in the live builder canvas.
PizzaLayer uses six Custom Post Types, one for each component: Crusts, Sauces, Cheeses, Toppings, Drizzles, and Cuts. Each type has its own admin list screen with independent ordering and visibility controls.
Yes. PizzaLayer exposes a REST endpoint at /wp-json/pizzalayer/v1/render that returns rendered pizza builder HTML. This is used internally for live previews and is available for headless integrations and external tooling.
Yes — PizzaLayer uses apply_filters() hooks at key extension points including ingredient data, rendered output, JS localization data, and settings bridging between the base plugin and Pro. Check the developer documentation for the full hook reference.
Templates use an instance factory pattern: NP.createInstance(instanceId) returns a scoped state object per embed. Instances are exposed globally via window[varName]. The PizzaStack rendering engine is shared between NightPie and Fornaia templates. PizzaLayerPro uses an IIFE pattern with 'use strict' and exposes a window.PizzaLayerProBuilder public API for external control.
Settings are stored individually using an OPTIONS constant map. Settings->register() is called directly (not inside add_action('init')) to ensure hooks fire at the correct time. Frontend CSS variables are injected via wp_add_inline_style and JS data via wp_localize_script. A global pztpro_get_setting() helper is available in Pro.
PizzaLayer dispatches custom DOM events as customers interact with the builder. You can listen for selection changes, layer updates, and builder ready states. These events are namespaced per instance, making it straightforward to hook in custom JavaScript — for analytics, conditional UI changes, or third-party integrations — without modifying plugin files.
Place your custom template folder outside the plugin directory — in your theme or a separate plugin. Register it by hooking into the PizzaLayer template discovery filter. Since the plugin scans registered paths for templates, your custom template will persist through updates. Follow the six-file architecture and use a unique function namespace with function_exists() guards to avoid collisions.
Yes. Each builder instance exposes its state object via window[instanceVarName]. You can read the active selections (crust, sauce, toppings, etc.) at any time and call public methods to programmatically set or reset selections. The getActiveCanvas() method is useful when multiple instances are on the same page.
All PHP functions in a template should use a unique prefix and be wrapped in function_exists() guards. For example: if ( ! function_exists( 'mytemplate_render_menu' ) ) { function mytemplate_render_menu() { ... } }. This is the same pattern used in all six built-in templates.
Generally yes. Because ingredient data is passed to JavaScript via wp_localize_script at render time, full-page caching works fine. If you update ingredients frequently and the frontend isn't reflecting changes, clear your page cache. The REST API endpoint always returns fresh data and is not affected by page caching.
[pizzalayer] or the Gutenberg block is placed in the page content and the page is published.The most common cause is a missing or broken image URL. In the PizzaLayer admin, open the ingredient and confirm an image is attached. If the media library item was deleted, re-upload and re-assign the image. For the layered canvas, transparent PNG files work best — opaque images will block layers beneath them.
This is typically a JavaScript conflict with another plugin or theme script. Open your browser's developer console and look for errors. Common culprits include jQuery version mismatches or scripts loading in the wrong order. Try disabling other plugins one at a time to isolate the conflict.
PizzaLayer can be network-activated on WordPress Multisite. Each sub-site maintains its own independent set of ingredients and settings — there is no network-level ingredient sharing across sub-sites, but each site's admin has full control over its own builder configuration.
Delete all ingredients from each component screen in the PizzaLayer admin for a clean slate. For a complete reset including settings, deactivate and delete the plugin, then reinstall. Note that this removes all stored ingredient data — use the export feature first if you want a backup.
PizzaLayer is released under the GPL-2.0 license, the same license WordPress itself uses. You are free to use, modify, and distribute the plugin — including on client sites — with no restrictions. PizzaLayerPro is also GPL-licensed.
Yes, with no restrictions. You can install and configure PizzaLayer on any number of client sites at no cost. If a client needs WooCommerce ordering functionality, PizzaLayerPro is required in addition to the free plugin.
The Support Center has documentation, guides, and a ticket system for getting help. You can also contact directly for questions not covered in the docs. Response times are typically same-day for most inquiries.
Yes. The PizzaLayer source code is publicly available at github.com/IslandSunDesign/PizzaLayer. You can browse the code, report issues, or contribute improvements via pull request.
PizzaLayer is built and maintained by Ryan Bishop through Island Sun Design, a web design and WordPress development studio based in Hilo, Hawaii. Custom development work — new templates, third-party integrations, white-label builds — is available through Island Sun Design.
Browse the support center for detailed guides, or reach out directly — response times are typically same-day.
If PizzaLayer doesn't quite fit your workflow out of the box, custom development work is available — new templates, third-party integrations, custom pricing logic, white-label builds, or a fully tailored ordering experience. Handled personally by Ryan Bishop through Island Sun Design.