{"id":233461,"date":"2023-02-14T14:38:00","date_gmt":"2023-02-14T11:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233461"},"modified":"2023-02-20T18:31:17","modified_gmt":"2023-02-20T15:31:17","slug":"como-criar-um-bloco-personalizado-do-wordpress-gutenberg-serie-de-tutoriais","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/como-criar-um-bloco-personalizado-do-wordpress-gutenberg-serie-de-tutoriais\/","title":{"rendered":"Como criar um bloco personalizado do WordPress Gutenberg: s\u00e9rie de tutoriais"},"content":{"rendered":"\n<p>Esta \u00e9 uma s\u00e9rie de tutoriais detalhados sobre como criar seus pr\u00f3prios blocos personalizados do WordPress Gutenberg. \u00c9 para voc\u00ea que \u00e9 desenvolvedor de temas ou plugins e est\u00e1, assim como eu, frustrado com a falta de documenta\u00e7\u00e3o. A maior parte do que aprendi quando se trata de desenvolver no novo mundo Javascript do WordPress \u00e9 por tentativa e erro, experimentando vigorosamente e lendo tudo relacionado que encontrei. E ent\u00e3o pensei que poderia reunir tudo o que aprendi at\u00e9 agora em um grande tutorial.<\/p>\n<p>Atrav\u00e9s de 10 partes este tutorial tem como objetivo ensin\u00e1-lo a escrever seus pr\u00f3prios blocos personalizados. N\u00e3o importa para que servem, come\u00e7ando no b\u00e1sico e trabalhando em recursos mais complexos. Eu recomendo que voc\u00ea escreva tudo sozinho em vez de copiar e colar o c\u00f3digo. Essa \u00e9 a melhor maneira de aprender! Siga a s\u00e9rie da etapa 1 a 10, pois construiremos no topo do bloco \u00e0 medida que avan\u00e7amos.<\/p>\n<h2>O que voc\u00ea precisa saber antes de come\u00e7armos<\/h2>\n<p>Antes de mergulharmos nas etapas; uma ren\u00fancia. H\u00e1 algumas coisas que voc\u00ea j\u00e1 deve saber de antem\u00e3o sobre o que esta s\u00e9rie \u00e9 e o que n\u00e3o \u00e9.<\/p>\n<h3>As linguagens de programa\u00e7\u00e3o<\/h3>\n<p>Voc\u00ea precisa saber Javascript \u2013 isso \u00e9 um dado adquirido. N\u00e3o h\u00e1 necessidade de ser um especialista, mas este n\u00e3o \u00e9 um tutorial de Javascript. Quanto \u00e0 vers\u00e3o Javascript ECMAScript; voc\u00ea pode escrever em ES5 e n\u00e3o se preocupar em compilar seu c\u00f3digo com Babel e outras coisas. No entanto, esta s\u00e9rie \u00e9 escrita com c\u00f3digo ES6 e ESNext. N\u00e3o se preocupe \u2013 a etapa 1 \u00e9 dedicada a gui\u00e1-lo na configura\u00e7\u00e3o de um ambiente de desenvolvimento pronto para codificar no ESNext com todas as suas novas sintaxes.<\/p>\n<p>Como voc\u00ea provavelmente sabe, o Gutenberg \u00e9 baseado no <a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">React JS<\/a>. Esta s\u00e9rie tamb\u00e9m n\u00e3o \u00e9 um tutorial do React, e pressup\u00f5e o conhecimento b\u00e1sico do React e como ele funciona. Novamente, n\u00e3o h\u00e1 necessidade de ser um especialista. Como o React j\u00e1 existe h\u00e1 algum tempo, existem muitos bons tutoriais, documenta\u00e7\u00e3o e recursos dedicados a ensinar o React. Ent\u00e3o, eu recomendo pesquisar estes primeiro.<\/p>\n<p>Esta s\u00e9rie \u00e9 focada em aprender as partes Javascript, React e JSX e n\u00e3o se preocupa com estilo \/ CSS. Como o objetivo do seu bloco pode ser drasticamente diferente, optei por n\u00e3o focar no estilo e fornecer apenas HTML muito b\u00e1sico. Cabe a voc\u00ea adicionar seu estilo e a sa\u00edda HTML necess\u00e1ria para fazer seu bloco renderizar exatamente como voc\u00ea precisa.<\/p>\n<h3>A idade deste tutorial<\/h3>\n<p>E, finalmente, considere a \u00e9poca em que esta s\u00e9rie foi escrita. Gutenberg ainda \u00e9 muito novo, mas est\u00e1 mudando drasticamente e sendo aprimorado.<\/p>\n<p>Se voc\u00ea encontrar isso em um futuro distante, algum c\u00f3digo pode ser preterido ou substitu\u00eddo por m\u00e9todos melhores. Este guia foi escrito e finalizado no WordPress vers\u00e3o 5.2.3 (final do ano de 2019).<\/p>\n<h2>O que voc\u00ea vai aprender<\/h2>\n<p>Nas primeiras partes nos concentramos no b\u00e1sico. Configuramos um ambiente de desenvolvimento com a compila\u00e7\u00e3o em execu\u00e7\u00e3o do nosso c\u00f3digo. E o b\u00e1sico de como registrar um bloco e as partes PHP necess\u00e1rias dele tamb\u00e9m. Aprenderemos sobre a enorme biblioteca de componentes e m\u00e9todos dispon\u00edveis para n\u00f3s no WordPress Gutenberg.<\/p>\n<p>Continuando, aprenderemos como adicionar se\u00e7\u00f5es e configura\u00e7\u00f5es para nosso bloco na barra lateral do editor (Inspetor), bem como personalizar a barra de ferramentas. Ao longo do caminho, abordaremos muitos tipos de entrada diferentes e como usar o componente de Gutenberg para eles. E \u00e9 claro que aprenderemos como salvar, atualizar e enviar as informa\u00e7\u00f5es salvas para o nosso bloco \u2013 e como isso funciona nos bastidores.<\/p>\n<p>No final, veremos coisas mais avan\u00e7adas, como blocos din\u00e2micos e como usar o PHP para renderizar a sa\u00edda do bloco. E, finalmente, como fazer consultas de postagem dentro do editor \u2013 permitindo que o usu\u00e1rio selecione uma postagem de uma lista para renderiza\u00e7\u00e3o.<\/p>\n<h3>\u00cdndice<\/h3>\n<p>Abaixo voc\u00ea encontrar\u00e1 links diretos para cada parte da s\u00e9rie.<\/p>\n<ul>\n<li>\n<p><strong><a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-gutenberg-blocks-part-1-setting-up-the-development-environment\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parte 1: Configurando o Ambiente de Desenvolvimento<\/a><\/strong><br \/>\nNa primeira parte desta s\u00e9rie de tutoriais sobre como criar blocos personalizados do Gutenberg, precisamos configurar nosso ambiente de desenvolvimento. Precisamos de um lugar onde possamos escrever nosso c\u00f3digo em sintaxes ES6\/ESNext e compil\u00e1-lo em qualquer lugar.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-gutenberg-blocks-part-2-registering-a-block\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parte 2: Registrando um Bloco<\/a><br \/>\nNesta parte vamos escrever Javascript para registrar e configurar nosso bloco personalizado. Ao final vamos registrar o script com PHP e fazer o c\u00f3digo PHP necess\u00e1rio para que o WordPress o reconhe\u00e7a como um novo bloco.<\/p>\n<\/li>\n<li>\n<p><strong><a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-gutenberg-blocks-part-3-props-and-wordpress-components\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parte 3: Props e Componentes do WordPress<\/a><\/strong><br \/>\nNo passo anterior aprendemos como registrar um bloco customizado, tanto em Javascript quanto em PHP. Nesta etapa, aprenderemos como usar os componentes do WordPress para adicionar diferentes tipos de campos e configura\u00e7\u00f5es.<\/p>\n<\/li>\n<li>\n<p><strong><a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-gutenberg-blocks-part-4-attributes\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parte 4: Atributos<\/a><\/strong><br \/>\nNesta parte veremos como definir atributos, buscar seus valores e atualiz\u00e1-los. Com os atributos, podemos aceitar a entrada do editor, salv\u00e1-la e produzi-la da maneira que escolhermos.<\/p>\n<\/li>\n<li>\n<p><strong><a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-gutenberg-blocks-part-5-adding-inspector-settings\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parte 5: Adicionando Configura\u00e7\u00f5es do Inspetor<\/a><\/strong><br \/>\nNesta etapa, focaremos no que o WordPress (pelo menos em c\u00f3digo) chama de Inspetor \u2013 a barra lateral do lado direito do editor. Abordaremos alguns novos componentes que fazem sentido colocar na barra lateral e como lidar com eles.<\/p>\n<\/li>\n<li>\n<p><strong><a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-wordpress-gutenberg-blocks-part-6-adding-toolbars\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parte 6: Adicionando Barras de Ferramentas<\/a><\/strong><br \/>\nNeste post vamos aprender como adicionar as barras de ferramentas do WordPress ao nosso bloco, ou seja, para alinhamento e alinhamento de blocos. Tamb\u00e9m aprenderemos a adicionar nossas pr\u00f3prias barras de ferramentas com nossos pr\u00f3prios bot\u00f5es para fazer a\u00e7\u00f5es personalizadas.<\/p>\n<\/li>\n<li>\n<p><strong><a href=\"https:\/\/awhitepixel.com\/blog\/how-to-create-custom-wordpress-gutenberg-blocks-part-7-creating-your-own-components\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Parte 7: Criando seus pr\u00f3prios componentes<\/a><\/strong><br \/>\nAt\u00e9 agora, nesta s\u00e9rie de tutoriais, escrevemos todo o c\u00f3digo dentro<code>registerBlockType()<\/code>da<code>edit<\/code>fun\u00e7\u00e3o do. \u00c9 totalmente poss\u00edvel e geralmente recomendado atribuir a edi\u00e7\u00e3o a um componente separado. Ao fazer isso, podemos utilizar funcionalidades como o estado do componente e os m\u00e9todos do ciclo de vida.<\/p>\n<\/li>\n<li>\n<p><strong><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/criar-bloco-personalizado-do-gutenberg-parte-8-suporte-a-traducao\/\" title=\"Parte 8: Tradu\u00e7\u00e3o do seu Bloco\">Parte 8: Tradu\u00e7\u00e3o do seu Bloco<\/a><\/strong><br \/>\nNesta parte vamos focar em como traduzir os textos e valores do nosso bloco. Usamos o WP-CLI para gerar os arquivos necess\u00e1rios para que o Gutenberg possa carregar nossas tradu\u00e7\u00f5es ao alternar o idioma do WordPress.<\/p>\n<\/li>\n<li>\n<p><strong><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/criar-bloco-personalizado-do-gutenberg-parte-9-blocos-dinamicos-e-renderizacao-do-php\/\" title=\"Parte 9: Blocos Din\u00e2micos\">Parte 9: Blocos Din\u00e2micos<\/a><\/strong><br \/>\nAt\u00e9 agora renderizamos a sa\u00edda do bloco em Javascript. No entanto, com conte\u00fado din\u00e2mico, como postagens recentes ou exibir uma postagem, pode exigir que renderizemos a sa\u00edda do bloco em PHP.<\/p>\n<\/li>\n<li>\n<p><strong><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/criar-bloco-personalizado-do-gutenberg-parte-10-buscando-postagens-e-componentes-de-ordem-superior\/\" title=\"Parte 10: Buscando postagens e componentes de ordem superior\">Parte 10: Buscando postagens e componentes de ordem superior<\/a><\/strong><br \/>\nNa parte final, aprenderemos como usar componentes de ordem superior e, portanto, como realizar uma consulta de postagem de dentro do editor e fornecer um m\u00e9todo para selecionar postagens.<\/p>\n<\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Um tutorial completo e detalhado de 10 etapas para iniciantes em Gutenberg sobre como criar seu pr\u00f3prio bloco WordPress Gutenberg personalizado.<\/p>\n","protected":false},"author":1,"featured_media":153476,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,898,722,722,837,941,941,920,1110,920,806,806,816,816,837,846,846,867,867],"tags":[1170],"class_list":{"0":"post-233461","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-codigo-2","9":"category-desenvolvedor","11":"category-guia-para-iniciantes","12":"category-gutenberg-8","14":"category-outro","15":"category-n-a","17":"category-php-8","19":"category-plug-ins","22":"category-tutoriais","24":"category-wordpress-8","26":"tag-affiai-pt-pt"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=233461"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233461\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/153476"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}