Pular para o conteúdo principal

Build your first Blueprint

Vamos construir um Blueprint elementar que

  1. Cria um novo site WordPress
  2. Define o título do site como "Meu primeiro Blueprint"
  3. Instala o tema Adventurer
  4. Instala o plugin Hello Dolly do diretório de plugins do WordPress
  5. Instala um plugin customizado
  6. Altera o conteúdo do site

1. Crie um novo site WordPress

Comece criando um arquivo blueprint.json com o seguinte conteúdo:

{}

Pode parecer que nada está acontecendo, mas este Blueprint já inicia um site WordPress com a versão principal mais recente.

  Executar Blueprint  

Autocompletar

Se você usar uma IDE, como VS Code ou PHPStorm, pode usar o Blueprint JSON Schema para uma experiência de desenvolvimento Blueprint com autocompletar. Adicione a seguinte linha no topo do seu arquivo blueprint.json:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json"
}

Veja como fica no VS Code:

Autocompletion visualized

2. Defina o título do site como "Meu primeiro Blueprint"

Blueprints consistem em uma série de etapas que definem como construir um site WordPress. Antes de escrever a primeira etapa, declare uma lista vazia de etapas:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": []
}

Este Blueprint não é muito emocionante. Cria o mesmo site padrão que o Blueprint vazio acima. Vamos mudar isso!

O WordPress armazena o título do site na opção blogname. Adicione sua primeira etapa e defina essa opção como "Meu primeiro Blueprint":

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": [
{
"step": "setSiteOptions",
"options": {
"blogname": "My first Blueprint"
}
}
]
}

  Executar Blueprint  

A etapa setSiteOptions especifica as opções do site no banco de dados do WordPress. O objeto options contém os pares chave-valor a serem definidos. Neste caso, você alterou o valor da chave blogname para "Meu primeiro Blueprint". Você pode ler mais sobre todas as etapas disponíveis em Blueprint Steps API Reference.

Atalhos

Você pode especificar algumas etapas usando uma sintaxe de atalho. Por exemplo, você poderia escrever a etapa setSiteOptions assim:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"siteOptions": {
"blogname": "My first Blueprint"
}
}

A sintaxe de atalho e a sintaxe de etapa correspondem uma à outra. Cada etapa especificada com a sintaxe de atalho é automaticamente adicionada no início do array steps em ordem arbitrária. Qual você deve escolher? Use atalhos quando a brevidade for sua principal preocupação, use etapas quando precisar de mais controle sobre a ordem de execução.

3. Instale o tema Adventurer

Adventurer é um tema de código aberto disponível no diretório de temas do WordPress. Vamos instalá-lo usando a etapa installTheme:

{
"siteOptions": {
"blogname": "My first Blueprint"
},
"steps": [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "adventurer"
}
}
]
}

  Executar Blueprint  

O site agora deve se parecer com a captura de tela abaixo:

Site with the adventurer theme

Recursos

O themeData define um recurso e faz referência a um arquivo externo necessário para concluir a etapa. O Playground suporta diferentes tipos de recursos, incluindo

  • url,
  • wordpress.org/themes,
  • wordpress.org/plugins,
  • vfs (sistema de arquivos virtual), ou
  • literal.

O exemplo usa o recurso wordpress.org/themes, que requer um slug idêntico ao usado no diretório de temas do WordPress:

Neste caso, https://wordpress.org/themes/<slug>/ se torna https://wordpress.org/themes/adventurer/.

observação

Saiba mais sobre os recursos suportados em Blueprint Resources API Reference.

4. Instale o plugin Hello Dolly

Um plugin clássico do WordPress que exibe letras aleatórias da música "Hello, Dolly!" no painel de administração. Vamos instalá-lo usando a etapa installPlugin:

{
"siteOptions": {
"blogname": "My first Blueprint"
},
"steps": [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "adventurer"
}
},
{
"step": "installPlugin",
"pluginData": {
"resource": "wordpress.org/plugins",
"slug": "hello-dolly"
}
}
]
}

  Executar Blueprint  

O plugin Hello Dolly agora está instalado e ativado.

Como o themeData, o pluginData define uma referência a um arquivo externo necessário para a etapa. O exemplo usa o recurso wordpress.org/plugins para instalar o plugin com o slug correspondente do diretório de plugins do WordPress.

5. Instale um plugin customizado

Vamos instalar um plugin customizado do WordPress que adiciona uma mensagem ao painel de administração:

<?php
/*
Plugin Name: "Hello" on the Dashboard
Description: A custom plugin to showcase WordPress Blueprints
Version: 1.0
Author: WordPress Contributors
*/

function my_custom_plugin() {
echo '<h1>Hello from My Custom Plugin!</h1>';
}

add_action('admin_notices', 'my_custom_plugin');

Você pode usar o installPlugin, mas isso requer criar um arquivo ZIP. Vamos começar com algo diferente para ver se o plugin funciona:

  1. Crie um diretório wp-content/plugins/hello-from-the-dashboard usando a etapa mkdir.
  2. Escreva um arquivo plugin.php usando a etapa writeFile.
  3. Ative o plugin usando a etapa activatePlugin.

Veja como fica em um Blueprint:

{
// ...
"steps": [
// ...
{
"step": "mkdir",
"path": "/wordpress/wp-content/plugins/hello-from-the-dashboard"
},
{
"step": "writeFile",
"path": "/wordpress/wp-content/plugins/hello-from-the-dashboard/plugin.php",
"data": "<?php\n/*\nPlugin Name: \"Hello\" on the Dashboard\nDescription: A custom plugin to showcase WordPress Blueprints\nVersion: 1.0\nAuthor: WordPress Contributors\n*/\n\nfunction my_custom_plugin() {\n echo '<h1>Hello from My Custom Plugin!</h1>';\n}\n\nadd_action('admin_notices', 'my_custom_plugin');"
},
{
"step": "activatePlugin",
"pluginPath": "hello-from-the-dashboard/plugin.php"
}
]
}

A última coisa a fazer é fazer o login do usuário como administrador. Você pode fazer isso com um atalho da etapa login:

{
"login": true,
"steps": {
// ...
}
}

Aqui está o Blueprint completo:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"login": true,
"siteOptions": {
"blogname": "My first Blueprint"
},
"steps": [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "adventurer"
}
},
{
"step": "installPlugin",
"pluginData": {
"resource": "wordpress.org/plugins",
"slug": "hello-dolly"
}
},
{
"step": "mkdir",
"path": "/wordpress/wp-content/plugins/hello-from-the-dashboard"
},
{
"step": "writeFile",
"path": "/wordpress/wp-content/plugins/hello-from-the-dashboard/plugin.php",
"data": "<?php\n/*\nPlugin Name: \"Hello\" on the Dashboard\nDescription: A custom plugin to showcase WordPress Blueprints\nVersion: 1.0\nAuthor: WordPress Contributors\n*/\n\nfunction my_custom_plugin() {\n echo '<h1>Hello from My Custom Plugin!</h1>';\n}\n\nadd_action('admin_notices', 'my_custom_plugin');"
},
{
"step": "activatePlugin",
"pluginPath": "hello-from-the-dashboard/plugin.php"
}
]
}

  Executar Blueprint  

Veja como fica quando você navega para o painel:

Site with the custom plugin

Crie um plugin e compacte-o

Codificar arquivos PHP como JSON pode ser útil para testes rápidos, mas é inconveniente e difícil de ler. Em vez disso, crie um arquivo com o código do plugin, comprima-o e use o arquivo ZIP como resource na etapa installPlugin para instalá-lo (o caminho na URL deve corresponder ao do seu repositório GitHub):

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"login": true,
"siteOptions": {
"blogname": "My first Blueprint"
},
"steps": [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "adventurer"
}
},
{
"step": "installPlugin",
"pluginData": {
"resource": "wordpress.org/plugins",
"slug": "hello-dolly"
}
},
{
"step": "installPlugin",
"pluginData": {
"resource": "url",
"url": "https://raw.githubusercontent.com/wordpress/blueprints/trunk/docs/assets/hello-from-the-dashboard.zip"
}
}
]
}

Você pode encurtar ainda mais esse Blueprint usando a sintaxe de atalho:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"login": true,
"siteOptions": {
"blogname": "My first Blueprint"
},
"plugins": ["hello-dolly", "https://raw.githubusercontent.com/wordpress/blueprints/trunk/docs/assets/hello-from-the-dashboard.zip"],
"steps": [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "adventurer"
}
}
]
}

  Executar Blueprint  

6. Altere o conteúdo do site

Por fim, vamos excluir o conteúdo padrão do site e importar um novo de um arquivo de exportação do WordPress (WXR).

Exclua o conteúdo antigo

Não há uma etapa Blueprint para excluir o conteúdo padrão, mas você pode fazer isso com um trecho de código PHP:

<?php
require '/wordpress/wp-load.php';

// Delete all posts and pages
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => array('post', 'page'),
'post_status' => 'any'
));

foreach ($posts as $post) {
wp_delete_post($post->ID, true);
}

Para executar esse código durante a configuração do site, use a etapa runPHP:

{
// ...
"steps": [
// ...
{
"step": "runPHP",
"code": "<?php\nrequire '/wordpress/wp-load.php';\n\n$posts = get_posts(array(\n 'numberposts' => -1,\n 'post_type' => array('post', 'page'),\n 'post_status' => 'any'\n));\n\nforeach ($posts as $post) {\n wp_delete_post($post->ID, true);\n}"
}
]
}

Importe o novo conteúdo

Vamos usar a etapa importWxr para importar um arquivo de exportação do WordPress (WXR) que ajuda a testar temas do WordPress. O arquivo está disponível no repositório WordPress/theme-test-data, e você pode acessá-lo através de seu endereço raw.githubusercontent.com: https://raw.githubusercontent.com/WordPress/theme-test-data/master/themeunittestdata.wordpress.xml.

Veja como fica o Blueprint final:

{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"login": true,
"siteOptions": {
"blogname": "My first Blueprint"
},
"plugins": ["hello-dolly", "https://raw.githubusercontent.com/wordpress/blueprints/trunk/docs/assets/hello-from-the-dashboard.zip"],
"steps": [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "adventurer"
}
},
{
"step": "runPHP",
"code": "<?php\nrequire '/wordpress/wp-load.php';\n\n$posts = get_posts(array(\n 'numberposts' => -1,\n 'post_type' => array('post', 'page'),\n 'post_status' => 'any'\n));\n\nforeach ($posts as $post) {\n wp_delete_post($post->ID, true);\n}"
},
{
"step": "importWxr",
"file": {
"resource": "url",
"url": "https://raw.githubusercontent.com/WordPress/theme-test-data/master/themeunittestdata.wordpress.xml"
}
}
]
}

  Executar Blueprint  

E pronto. Parabéns por criar seu primeiro Blueprint! 🥳