{
	"$schema": "https://playground.wordpress.net/blueprint-schema.json",
	"landingPage": "/product/custom-printed-tee/",
	"preferredVersions": {
		"php": "8.2",
		"wp": "latest"
	},
	"phpExtensionBundles": [
		"kitchen-sink"
	],
	"features": {
		"networking": true
	},
	"steps": [
		{
			"step": "installPlugin",
			"pluginData": {
				"resource": "wordpress.org/plugins",
				"slug": "woocommerce"
			}
		},
		{
			"step": "installPlugin",
			"pluginData": {
				"resource": "wordpress.org/plugins",
				"slug": "addon-boss"
			}
		},
		{
			"step": "installTheme",
			"themeData": {
				"resource": "wordpress.org/themes",
				"slug": "kadence"
			}
		},
		{
			"step": "login",
			"username": "admin"
		},
		{
			"step": "runPHP",
			"code": "<?php require_once '/wordpress/wp-load.php'; update_option( 'woocommerce_coming_soon', 'no' ); update_option( 'blogname', 'AddOnBoss Demo' ); update_option( 'woocommerce_currency', 'GBP' ); $p = new WC_Product_Simple(); $p->set_name( 'Custom Printed Tee' ); $p->set_slug( 'custom-printed-tee' ); $p->set_regular_price( '14.00' ); $p->set_stock_status( 'instock' ); $p->set_short_description( 'One tee, printed your way. Pick a colour, set the print size, add a name if you want one, and the price follows every choice you make.' ); $p->set_description( '<p>Every shirt is printed to order in our studio, one at a time. Choose one of twelve shirt colours, decide how big the print should run, and add a name or a short line of text. Metallic and neon inks are mixed on site.</p><p>Tell us the day you need it by and it leaves us confirmed for that date. Most orders are printed within three working days.</p>' ); $pid = $p->save(); if ( function_exists( 'addon_boss_save_option_set' ) && function_exists( 'addon_boss_save_product_option_config' ) ) { $colour = addon_boss_save_option_set( array( 'name' => 'Shirt colour', 'options' => array( array( 'key' => 'op_white', 'label' => 'White', 'swatch' => '#f4f4f0', 'delta' => 0 ), array( 'key' => 'op_black', 'label' => 'Black', 'swatch' => '#1f2430', 'delta' => 0 ), array( 'key' => 'op_heather', 'label' => 'Heather grey', 'swatch' => '#b9bcbf', 'delta' => 0 ), array( 'key' => 'op_navy', 'label' => 'Navy', 'swatch' => '#1f2a44', 'delta' => 0 ), array( 'key' => 'op_royal', 'label' => 'Royal blue', 'swatch' => '#1e4fa0', 'delta' => 0 ), array( 'key' => 'op_red', 'label' => 'Red', 'swatch' => '#c0392b', 'delta' => 0 ), array( 'key' => 'op_forest', 'label' => 'Forest green', 'swatch' => '#1e5631', 'delta' => 0 ), array( 'key' => 'op_burgundy', 'label' => 'Burgundy', 'swatch' => '#6d1f2c', 'delta' => 0 ), array( 'key' => 'op_olive', 'label' => 'Olive', 'swatch' => '#6b7f3f', 'delta' => 0 ), array( 'key' => 'op_teal', 'label' => 'Teal', 'swatch' => '#0f766e', 'delta' => 0 ), array( 'key' => 'op_yellow', 'label' => 'Yellow', 'swatch' => '#e7c122', 'delta' => 0 ), array( 'key' => 'op_sand', 'label' => 'Sand', 'swatch' => '#d8c9a3', 'delta' => 0 ) ) ) ); $size = addon_boss_save_option_set( array( 'name' => 'Print size', 'options' => array( array( 'key' => 'op_chest', 'label' => 'Small chest print', 'delta' => 0 ), array( 'key' => 'op_front', 'label' => 'Big front print', 'delta' => 3.5 ), array( 'key' => 'op_both', 'label' => 'Front and back', 'delta' => 6 ) ) ) ); $finish = addon_boss_save_option_set( array( 'name' => 'Finishing touches', 'multi' => true, 'max' => 2, 'options' => array( array( 'key' => 'op_label', 'label' => 'Inside neck label', 'delta' => 1.5 ), array( 'key' => 'op_fold', 'label' => 'Folded with ribbon', 'delta' => 2.5 ), array( 'key' => 'op_loop', 'label' => 'Hanging loop', 'delta' => 1 ) ) ) ); $product = wc_get_product( $pid ); addon_boss_save_product_option_config( $product, array( array( 'row_type' => 'group', 'label' => 'Your shirt', 'children' => array( array( 'set' => $colour, 'required' => true ), array( 'set' => $size, 'required' => true ) ) ), array( 'row_type' => 'group', 'label' => 'Your print', 'children' => array( array( 'row_type' => 'field', 'field' => array( 'label' => 'Name or text to print', 'type' => 'text', 'fee' => 4, 'maxlength' => 20 ) ), array( 'row_type' => 'field', 'field' => array( 'label' => 'Ink colour', 'type' => 'select', 'options' => array( array( 'label' => 'Black' ), array( 'label' => 'White' ), array( 'label' => 'Red' ), array( 'label' => 'Orange' ), array( 'label' => 'Yellow' ), array( 'label' => 'Kelly green' ), array( 'label' => 'Forest green' ), array( 'label' => 'Sky blue' ), array( 'label' => 'Royal blue' ), array( 'label' => 'Navy' ), array( 'label' => 'Purple' ), array( 'label' => 'Pink' ), array( 'label' => 'Metallic gold', 'fee' => 2.5 ), array( 'label' => 'Metallic silver', 'fee' => 2.5 ), array( 'label' => 'Neon yellow', 'fee' => 1.5 ), array( 'label' => 'Neon pink', 'fee' => 1.5 ) ) ) ), array( 'set' => $finish ) ) ), array( 'row_type' => 'group', 'label' => 'When you need it', 'children' => array( array( 'row_type' => 'field', 'field' => array( 'label' => 'Needed by', 'type' => 'date', 'required' => true ) ), array( 'row_type' => 'field', 'field' => array( 'label' => '', 'type' => 'html', 'content' => 'Printed to order in three working days. Tell us your date and we confirm it when the order lands.' ) ) ) ) ) ); $product->save(); } require_once ABSPATH . 'wp-admin/includes/media.php'; require_once ABSPATH . 'wp-admin/includes/file.php'; require_once ABSPATH . 'wp-admin/includes/image.php'; $tmp = download_url( 'https://demo.bossmage.com/wp-content/uploads/2026/09/tshirt-white.png' ); if ( ! is_wp_error( $tmp ) ) { $aid = media_handle_sideload( array( 'name' => 'tshirt-white.png', 'tmp_name' => $tmp ), 0 ); if ( ! is_wp_error( $aid ) ) { set_post_thumbnail( $pid, $aid ); } }"
		}
	]
}
