diff --git a/packages/docs/site/docs/blueprints/08-examples.md b/packages/docs/site/docs/blueprints/08-examples.md index bf409832744..58aecb10e30 100644 --- a/packages/docs/site/docs/blueprints/08-examples.md +++ b/packages/docs/site/docs/blueprints/08-examples.md @@ -96,6 +96,22 @@ wp_insert_post(array( ] }} /> +## Run Symfony without WordPress + +Blueprints can also skip the WordPress download and boot a standalone PHP app. +This example loads a bundled Symfony app with Composer dependencies already +installed, so it starts without cloning a Git repository or running a Node/Sass +build in the browser. + +The app demonstrates Symfony attribute routes, autowired services, Twig, and +HttpClient. Its landing page also explains where to open the Playground file +browser and Blueprint viewer. + + + ## Enable an option on the Gutenberg Experiments page Here: Switch on the "new admin views" feature. diff --git a/packages/docs/site/docs/main/guides/php-frameworks.md b/packages/docs/site/docs/main/guides/php-frameworks.md index cf2f12bc16b..9c2771b8136 100644 --- a/packages/docs/site/docs/main/guides/php-frameworks.md +++ b/packages/docs/site/docs/main/guides/php-frameworks.md @@ -59,7 +59,7 @@ Here is the complete embed: "step": "unzip", "zipFile": { "resource": "url", - "url": "https://wordpress.github.io/blueprints/blueprints/symfony-package-radar/symfony-package-radar.zip?v=html-api-2026-06-08" + "url": "https://wordpress.github.io/blueprints/blueprints/symfony-package-radar/symfony-package-radar.zip?v=wp-php-toolkit-html-2026-06-09" }, "extractToPath": "/app" } diff --git a/packages/docs/site/src/components/Blueprints/BlueprintExample.mdx b/packages/docs/site/src/components/Blueprints/BlueprintExample.mdx index ce7f5e6cab6..b0ad650543b 100644 --- a/packages/docs/site/src/components/Blueprints/BlueprintExample.mdx +++ b/packages/docs/site/src/components/Blueprints/BlueprintExample.mdx @@ -3,9 +3,19 @@ import CodeBlock from '@theme/CodeBlock';
{!props.justButton && ( - - {props.display || JSON.stringify(props.blueprint, null, '\t')} + + {props.display || + props.blueprintUrl || + JSON.stringify(props.blueprint, null, '\t')} )} - {!props.noButton && } + {!props.noButton && ( + + )}
diff --git a/packages/docs/site/src/components/Blueprints/BlueprintRunButton.tsx b/packages/docs/site/src/components/Blueprints/BlueprintRunButton.tsx index 4fb976535b0..0f2c5186b38 100644 --- a/packages/docs/site/src/components/Blueprints/BlueprintRunButton.tsx +++ b/packages/docs/site/src/components/Blueprints/BlueprintRunButton.tsx @@ -1,8 +1,8 @@ import React from 'react'; -export function BlueprintRunButton({ blueprint }) { +export function BlueprintRunButton({ blueprint, blueprintUrl }) { const [isRunning, setIsRunning] = React.useState(false); - if (!blueprint) { + if (!blueprint && !blueprintUrl) { return null; } if (!isRunning) { @@ -17,9 +17,15 @@ export function BlueprintRunButton({ blueprint }) { ); } - const url = `https://playground.wordpress.net/?mode=seamless#${btoa( - typeof blueprint === 'string' ? blueprint : JSON.stringify(blueprint) - )}`; + const url = blueprintUrl + ? `https://playground.wordpress.net/?mode=seamless&blueprint-url=${encodeURIComponent( + blueprintUrl + )}` + : `https://playground.wordpress.net/?mode=seamless#${btoa( + typeof blueprint === 'string' + ? blueprint + : JSON.stringify(blueprint) + )}`; return (