Gutenberg Tudo que você precisa saber sobre o editor mais recente do WordPress
Gutenberg é um novo editor para o WordPress que será totalmente substitua o editor atual ativado pelo TinyMCE. É um projeto ambicioso que alterará o WordPress de várias maneiras e afetaria usuários regulares e desenvolvedores, especificamente aqueles que dependem da tela do editor para trabalhar no WordPress. Aqui está como parece.
Gutenberg também introduz um novo paradigma no WordPress chamado “Quadra”.
“Quadra” é o termo abstrato usado para descrever unidades de marcação que são compostos do conteúdo ou layout de uma página da web. A ideia combina conceitos do que no WordPress hoje alcançamos com códigos de acesso, HTML personalizado e incorporação de informações em uma única API consistente e experiência do usuário.
Configurando o Projeto
Sabendo o fato de que Gutenberg é construído sobre o React, alguns desenvolvedores estão preocupados que o barreira é muito alta para desenvolvedores iniciantes no desenvolvimento de Gutenberg.
Configurar o React.js pode ser demorado e confuso se você estiver apenas começando a usá-lo. Você precisará de, pelo menos, transformador JSX, Babel, dependendo do seu código, você pode precisar de alguns plug-ins do Babel e um Bundler como Webpack, Rollup ou Parcel.
Felizmente, algumas pessoas na comunidade do WordPress aumentaram e estão tentando tornar o desenvolvimento de Gutenberg o mais fácil possível para todos seguirem. Hoje, temos uma ferramenta que irá gerar um clichê de Gutenberg podemos começar a escrever o código imediatamente em vez de ficar confuso com as ferramentas e as configurações.
Criar bloco Guten
o criar-bloco-guten
é um projeto iniciado por Ahmad Awais. É um kit de ferramentas de configuração zero (# 0CJS
) que lhe permitirá desenvolver o bloco de Gutenberg com algumas pilhas modernas predefinidas, incluindo React, Webpack, ESNext, Babel, ESLint e Sass. Siga as instruções para começar a criar o bloco Guten.
Usando o ES5 (ECMAScript 5)
Usando todas essas ferramentas para criar um simples “Olá Mundo” bloco pode parecer demais. Se você gosta de manter suas pilhas magras, você pode realmente desenvolver um bloco de Gutenberg usando um bom e simples ECMAScript 5 com o qual você já esteja familiarizado. Se você tem WP-CLI 1.5.0 instalado no seu computador, você pode simplesmente correr ...
bloco de andaime wp[--título = ] [--dashicon = ] [--category = ] [--theme] [--plugin = ] [--força]
… para gerar o clichê do bloco de Gutenberg para o seu plugin ou tema. Esta abordagem é mais sensata, particularmente, para plugins e temas existentes que você desenvolveu antes da era de Gutenberg..
Em vez de criar um novo plugin para acomodar os blocos de Gutenberg, você pode querer integrar os blocos aos seus plugins ou temas. E para tornar este tutorial fácil de seguir para todos, estaremos usando o ECMAScript 5 com o WP-CLI.
Registrando um novo bloco
O Gutenberg é atualmente desenvolvido como um plugin e será integrado ao WordPress 5.0 sempre que a equipe achar que está pronto. Então, por enquanto, você precisará instalá-lo a partir do Página de plugins em wp-admin
. Depois de instalá-lo e ativá-lo, execute o seguinte comando no Terminal ou no Prompt de Comando, se estiver em uma máquina Windows.
wp scaffold block series --title = "Série HTML5" - tema
Este comando irá gerar um bloco para o tema atualmente ativo. Nosso bloco consistirá dos seguintes arquivos:
. UMA¢??  ??¢??  ??¢??? série âà 'à â??  ??¢??  ??¢??? block.js âà 'à â??  ??¢??  ??¢??? editor.css âà 'à â??  ??¢??  ??¢??? style.css â??  ??¢??  ??¢??? series.php
Vamos carregar o arquivo principal dos nossos blocos no funções.php
do nosso tema:
if (function_exists ('register_block_type')) requeria get_template_directory (). '/blocks/series.php';
Observe que nós incluímos o carregamento do arquivo com um condicional. Isso garante compatibilidade com a versão anterior do WordPress que o nosso bloco só é carregado quando Gutenberg está presente. O nosso bloco deve agora estar disponível na interface do Gutenberg.
É assim que parece quando inserimos o bloco.
APIs do Gutenberg
O Gutenberg introduz dois conjuntos de APIs para registrar um novo bloco. Se olharmos para o series.php
, nós encontraremos o seguinte código que registra nosso novo bloco. Isso também carrega a folha de estilo e JavaScripts no front-end e o editor.
register_block_type ('twentyseventeen / series', matriz ('editor_script' => 'série-bloco-editor', 'editor_style' => 'série-bloco-editor', 'estilo' => 'série-bloco',));
Como podemos ver acima, nosso bloco é nomeado twentyseventeen / series
, o nome do bloco deve ser único e ter namespaces para evitar a colisão com os outros blocos trazidos pelos outros plugins.
além disso, O Gutenberg fornece um conjunto de novas APIs JavaScript para interagir com o “Quadra” interface no editor. Como a API é bastante abundante, vamos nos concentrar em alguns detalhes que eu acho que você deveria saber para obter um bloco de Gutenberg simples, mas funcional..
wp.blocks.registerBlockType
Primeiro, estaremos investigando wp.blocks.registerBlockType
. Esta função é usada para registrar um novo “Quadra” ao editor de Gutenberg. Requer dois argumentos. O primeiro argumento é o nome do bloco que deve seguir o nome registrado no register_block_type
função no lado do PHP. O segundo argumento é um Objeto que define as propriedades do bloco como título, categoria e algumas funções para renderizar a interface do bloco.
var registerBlockType = wp.blocks.registerBlockType; registerBlockType ('twentyseventeen / series', title: __ ('Série HTML5'), categoria: 'widgets', palavras-chave: ['html'], edit: função (props) , save: function (props) );
wp.element.createElement
Esta função permite criar o elemento dentro do “Quadra” no editor de postagem. o wp.element.createElement
função é basicamente uma abstração do Reagir createElement ()
função, portanto, aceita o mesmo conjunto de argumentos. O primeiro argumento toma o tipo do elemento, por exemplo, um parágrafo, um período
, ou um div
como mostrado abaixo:
wp.element.createElement ('div');
Podemos alias a função em uma variável então é mais curto para escrever. Por exemplo:
var el = wp.element.createElement; el ('div');
Se vocês prefiro usar a nova sintaxe do ES6, você também pode fazer assim:
const createElement: el = wp.element; el ('div');
Nós também podemos adicione os atributos do elemento tais como o classe
nome ou identidade
no segundo parâmetro da seguinte forma:
var el = wp.element.createElement; el ('div', 'class': 'série-html5', 'id': 'série-html-post-id-001');
o div
que criamos não faria sentido sem o conteúdo. Podemos adicione o conteúdo no argumento do terceiro parâmetro:
var el = wp.element.createElement; el ('p', 'classe': 'série-html5', 'id': 'série-html-post-id-001', 'Este artigo faz parte da nossa "Série de tutoriais HTML5 / CSS3" - dedicado para ajudar a torná-lo um melhor designer e / ou desenvolvedor Clique aqui para ver mais artigos da mesma série ');
wp.components
o wp.components
contém uma colecção de, como o nome indica, os componentes de Gutenberg. Esses componentes são tecnicamente componentes personalizados React, que incluem o Button, o Popover, o Spinner, o Tooltip e um monte de outros. Podemos reutilizar esses componentes em nosso próprio bloco. No exemplo a seguir, adicionamos um componente de botão.
var Button = wp.components.Button; el (Button, 'class': 'download-button',, 'Download');
Atributos
Os Atributos são a maneira de armazenar os dados em nosso Bloco, esses dados podem ser como o conteúdo, as cores, os alinhamentos, a URL, etc. Podemos obter os atributos das Propriedades passadas no editar()
função, da seguinte forma:
edit: função (props) var content = props.attributes.seriesContent; return el ('div', 'classe': 'série-html5', 'id': 'série-html-post-id-001', conteúdo);
Para atualizar os atributos, usamos o setAttributes ()
função. Normalmente, alteramos o conteúdo em determinadas ações, como quando um botão é clicado, uma entrada é preenchida, uma opção é selecionada, etc. No exemplo a seguir, usamos para adicionar um cair pra trás conteúdo do nosso bloco no caso de algo inesperado aconteceu ao nosso seriesContent
Atributo.
edit: function (props) if (tipo prop.attributes.seriesContent === 'indefinido' ||! props.attributes.seriesContent) props.setAttribute (seriesContent: 'Olá, mundo! Aqui está o conteúdo de fallback.' ) var content = props.attributes.seriesContent; return [el ('div', 'classe': 'série-html5', 'id': 'série-html-post-id-001', conteúdo),];
Salvando o Bloco
o Salve ()
função funciona de forma semelhante ao editar()
, exceto que define o conteúdo do nosso bloco para salvar no banco de dados de postagem. Salvar o conteúdo do bloco é bastante simples, como podemos ver abaixo:
save: function (props) if (! props ||! props.attributes.seriesContent) retorno; var content = props.attributes.seriesContent; return [el ('div', 'classe': 'série-html5', 'id': 'série-html-post-id-001', conteúdo),];
Qual é o próximo?
Gutenberg vai mudar o ecossistema WordPress para melhor (ou possivelmente o pior). Ele permite que os desenvolvedores adotar uma nova maneira de desenvolver plugins e temas do WordPress. Gutenberg é só um começo. Logo o “Quadra” O paradigma será expandido para outras áreas do WordPress, como as APIs de configurações e os Widgets.
Aprenda JavaScript profundamente; é a única maneira de entrar em Gutenberg e permanecer relevante para o futuro no setor de WordPress. Se você já está familiarizado com o básico do JavaScript, as peculiaridades, as funções, as ferramentas, os produtos e os defeitos, tenho certeza de que você vai se atualizar com o Gutenberg.
Como mencionado, o Gutenberg expõe uma abundância de APIs, o suficiente para fazer quase qualquer coisa no seu Block. Você pode escolher se deseja codifique seu bloco com um JavaScript simples, JavaScript com sintaxe ES6, React ou até Vue.
Ideias e Inspirações
Eu criei um Bloco Gutenberg muito (muito) simples que você pode encontrar no repositório da nossa conta do Github. Além disso, eu também reúno vários repositórios de onde você pode inspirar na construção de um bloco mais complexo..
- Gutenblocks - Uma coleção de blocos por Mathieu Viet escrito em JavaScript com sintaxe ES5
- Jetpack Gutenblocks Project - uma coleção de blocos agrupados em Jetpack
- Uma lista de exemplos de implementação do Gutenberg incluindo o Vue.js
Referência Adicional
- Repositório Oficial de Gutenberg
- Manual do Gutenberg