Fornecer conteúdo para sua demonstração com o Playground
Uma das coisas que você pode fazer para oferecer uma boa demonstração com o WordPress Playground é carregar conteúdo padrão que destaque melhor os recursos do seu plugin ou tema. Esse conteúdo pode incluir imagens ou outros recursos.
Há vários passos de Blueprint e estratégias para importar conteúdo (ou gerá-lo) na instância do Playground. Este guia apresenta as fontes disponíveis. Para uma comparação específica das importações XML, PHP e ZIP, incluindo vantagens, desvantagens e desempenho medido, consulte Importando conteúdo para o WordPress com Blueprints.
importWxr
Com o passo importWxr, você pode importar conteúdo de um
arquivo .xml WordPress eXtended RSS (WXR) previamente
exportado de uma instalação existente do WordPress.
O passo pode obter anexos, reescrever URLs, incluir ou excluir comentários e
controlar como os autores importados são mapeados para usuários locais. Este
exemplo atribui o conteúdo importado ao usuário admin existente e mantém
desativado o download de anexos:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/wp-admin/edit.php",
"login": true,
"steps": [
{
"step": "importWxr",
"file": {
"resource": "url",
"url": "https://raw.githubusercontent.com/WordPress/blueprints/trunk/blueprints/install-activate-setup-theme-from-gh-repo/blueprint-content.xml"
},
"fetchAttachments": false,
"rewriteUrls": true,
"importComments": true,
"authorsMode": "default-author",
"defaultAuthorUsername": "admin"
}
]
}
Executar Blueprint Ver blueprint.json
Defina authorsMode como create para criar usuários locais para os autores
importados ou como map e forneça authorsMap quando os usuários
correspondentes já existirem. Você também pode fornecer urlMapping para
substituições explícitas de URLs antigas por novas.
Para baixar a mídia referenciada pela exportação, defina fetchAttachments como
true e ative a rede do Blueprint. As URLs de mídia originais ainda precisam
estar disponíveis:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"features": {
"networking": true
},
"steps": [
{
"step": "importWxr",
"file": {
"resource": "url",
"url": "https://example.com/wordpress-export.xml"
},
"fetchAttachments": true
}
]
}
Quando as URLs originais dos anexos não estiverem disponíveis, uma opção é
enviar as imagens ao repositório que hospeda o Blueprint e substituir os
caminhos no arquivo .xml exportado. Em um repositório público do GitHub, use
uma URL bruta como
https://raw.githubusercontent.com/{repo}/{branch}/{image_path}.
<!-- wp:image {"lightbox":{"enabled":false},"id":4751,"width":"78px","sizeSlug":"full","linkDestination":"none","align":"center","className":"no-border"} -->
<figure class="wp-block-image aligncenter size-full is-resized no-border">
<img src="https://raw.githubusercontent.com/WordPress/blueprints/trunk/blueprints/install-activate-setup-theme-from-gh-repo/images/avatars.png" alt="" class="wp-image-4751" style="width:78px" />
</figure>
<!-- /wp:image -->
Para uma demonstração autocontida, coloque o arquivo .xml exportado e seus
recursos ao lado de blueprint.json em um
pacote de Blueprint e use um
recurso bundled em vez de uma URL remota.
importWordPressFiles
Com o passo importWordPressFiles, você pode restaurar os
arquivos WordPress de nível superior de um arquivo .zip na pasta raiz da
instância. Por exemplo, se um arquivo contiver wp-content e wp-includes,
esses diretórios substituirão os correspondentes no Playground.
O ZIP pode ser criado a partir de uma instância do Playground com a opção Download as zip no menu de opções do Playground. As exportações atuais incluem um manifesto que permite atualizar as URLs de escopo do Playground após a restauração.
Você pode preparar uma demonstração do seu tema ou plugin WordPress, incluindo
banco de dados, imagens, plugins, temas e configurações, em uma instância do
Playground e exportar um snapshot. O snapshot pode ser restaurado depois com
importWordPressFiles. Este exemplo espera encontrar site.zip ao lado de
blueprint.json em um pacote de Blueprint:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/",
"login": true,
"steps": [
{
"step": "importWordPressFiles",
"wordPressFilesZip": {
"resource": "bundled",
"path": "/site.zip"
}
}
]
}
O passo pode detectar um diretório WordPress completo dentro de uma pasta
externa. Se um arquivo contiver mais de um site ou precisar de um diretório
inicial explícito, defina pathInZip como o diretório que contém os arquivos
WordPress. Mantenha compatíveis as versões do WordPress, PHP, tema e plugin na
origem e no destino. Restaure apenas arquivos ZIP de fontes confiáveis, pois eles
podem conter um banco de dados inteiro e PHP executável.
importThemeStarterContent
Alguns temas têm conteúdo inicial que pode ser publicado para destacar seus recursos.
Com o passo importThemeStarterContent, você pode publicar
o conteúdo inicial de qualquer tema instalado, mesmo que ele não esteja ativo
na instância do Playground:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "twentytwenty"
}
},
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "twentytwentyone"
},
"options": {
"activate": true
}
},
{
"step": "importThemeStarterContent",
"themeSlug": "twentytwenty"
}
]
}
Você também pode publicar o conteúdo inicial de um tema durante sua instalação
com o passo installTheme, definindo a opção
importStarterContent como true:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"steps": [
{
"step": "installTheme",
"themeData": {
"resource": "wordpress.org/themes",
"slug": "twentytwenty"
},
"options": {
"activate": true,
"importStarterContent": true
}
}
]
}
wp-cli
Outra forma de gerar conteúdo para seu tema ou plugin é o
passo wp-cli. Ele executa
comandos WP-CLI como
wp post generate:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/wp-admin/edit.php",
"login": true,
"steps": [
{
"step": "wp-cli",
"command": "wp post generate --count=20 --post_type=post --post_date=1999-01-04"
}
]
}
Você também pode combinar o passo wp-cli com o
passo writeFile para criar posts a partir de conteúdo
existente e importar imagens na instância do Playground:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/?p=4",
"login": true,
"steps": [
{
"step": "writeFile",
"path": "/wordpress/wp-content/postcontent.md",
"data": {
"resource": "url",
"url": "https://raw.githubusercontent.com/wordpress/blueprints/trunk/blueprints/wpcli-post-with-image/postcontent.md"
}
},
{
"step": "wp-cli",
"command": "wp post create --post_title='Welcome to Playground' --post_status='published' /wordpress/wp-content/postcontent.md"
},
{
"step": "writeFile",
"path": "/wordpress/wp-content/Select-storage-method.png",
"data": {
"resource": "url",
"url": "https://raw.githubusercontent.com/wordpress/blueprints/trunk/blueprints/wpcli-post-with-image/Select-storage-method.png"
}
},
{
"step": "wp-cli",
"command": "wp media import wordpress/wp-content/Select-storage-method.png --post_id=4 --title='Select your storage method' --featured_image"
}
]
}
Confira o exemplo “Use wp-cli to add a post with image” da galeria de Blueprints para ver a conexão entre o conteúdo e a imagem destacada.
runPHP
Com o passo runPHP, você pode executar código PHP para
inserir ou configurar dados na instalação do WordPress, por exemplo com a
função wp_insert_post.
Carregue /wordpress/wp-load.php antes de chamar as APIs do WordPress e trate os
erros para que uma falha de configuração não gere silenciosamente uma
demonstração incompleta:
{
"$schema": "https://playground.wordpress.net/blueprint-schema.json",
"landingPage": "/wp-admin/edit.php",
"login": true,
"steps": [
{
"step": "runPHP",
"code": "<?php\nrequire_once '/wordpress/wp-load.php';\n\n$post_id = wp_insert_post(\n\tarray(\n\t\t'post_title' => 'Simple post from PHP',\n\t\t'post_content' => '<!-- wp:paragraph --><p>This is a simple post inserted with wp_insert_post.</p><!-- /wp:paragraph -->',\n\t\t'post_author' => 1,\n\t\t'post_status' => 'publish',\n\t),\n\ttrue\n);\n\nif ( is_wp_error( $post_id ) ) {\n\tthrow new RuntimeException( $post_id->get_error_message() );\n}"
}
]
}
Para pequenos conjuntos de dados determinísticos, runPHP mantém a lógica de
configuração próxima ao Blueprint. Para grandes conjuntos de dados editoriais
ou um site completo já preparado, WXR ou um snapshot ZIP geralmente é mais
fácil de manter. O
guia de comparação de importações
explica as vantagens e desvantagens em detalhes.