{"id":231202,"date":"2022-12-15T15:03:00","date_gmt":"2022-12-15T12:03:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231202"},"modified":"2022-12-15T15:03:24","modified_gmt":"2022-12-15T12:03:24","slug":"widgets-do-wordpress-refatoracao-parte-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/widgets-do-wordpress-refatoracao-parte-1\/","title":{"rendered":"Widgets do WordPress: Refatora\u00e7\u00e3o, Parte 1"},"content":{"rendered":"\n<p><strong><a href=\"https:\/\/wordpress.mediadoma.com\/pt-pt\/widgets-do-wordpress-comecando-com-padroes\/\" title=\"A \u00faltima postagem\">A \u00faltima postagem<\/a><\/strong> incluiu muitas informa\u00e7\u00f5es sobre como configurar ferramentas de qualidade de c\u00f3digo em seu <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/wordpress-development-environment\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ambiente de desenvolvimento WordPress<\/a><\/strong>, mas elas s\u00e3o necess\u00e1rias se formos fazer muita refatora\u00e7\u00e3o.<\/p>\n<blockquote>\n<p>Mas, como mencionei no in\u00edcio deste post, colocar ferramentas de qualidade de c\u00f3digo primeiro nos fornece uma base que podemos usar \u00e0 medida que refatoramos o clich\u00ea (o que claramente precisamos fazer, dada a quantidade de vermelho mostrada pelo GrumPHP).<\/p>\n<\/blockquote>\n<p>Honestamente, eu vejo isso como necess\u00e1rio se voc\u00ea estiver fazendo qualquer tipo de desenvolvimento, da\u00ed a necessidade de mostrar como configur\u00e1-los.<\/p>\n<p>Independentemente disso, o post anterior mostra quanto trabalho cortamos para n\u00f3s, certo?<\/p>\n<p>Agora vamos come\u00e7ar com a refatora\u00e7\u00e3o do <strong><a href=\"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress Widget Boilerplate<\/a><\/strong>.<\/p>\n<p>Isso n\u00e3o apenas melhorar\u00e1 a qualidade do c\u00f3digo, mas tamb\u00e9m nos guiar\u00e1 por alguns princ\u00edpios orientados a objetos que podemos aplicar ao construir nossos widgets e podemos aplicar em futuros esfor\u00e7os de desenvolvimento do WordPress.<\/p>\n<h2>The WordPress Widget Boilerplate: Refatora\u00e7\u00e3o, Parte 1<\/h2>\n<p>Talvez a coisa mais empolgante para mim seja trazer esse reposit\u00f3rio para os padr\u00f5es modernos. Se voc\u00ea observar o <strong><a href=\"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">branch master no GitHub<\/a><\/strong> no momento deste post (ou o hist\u00f3rico do reposit\u00f3rio posteriormente), ver\u00e1 que ele tem seis anos.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161542-61e724d06f9bc.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161542-61e724d06f9bc.png\" alt=\"Widgets do WordPress: Refatora\u00e7\u00e3o, Parte 1\"><\/a><\/p>\n<p>Essa coisa tem seis anos (no momento deste post).<\/p>\n<p>Isso \u00e9 muito tempo em anos de Internet, n\u00e3o \u00e9?<\/p>\n<p>De qualquer forma, em nossos esfor\u00e7os de refatora\u00e7\u00e3o, faremos algumas coisas:<\/p>\n<ul>\n<li>criando uma ramifica\u00e7\u00e3o a partir da qual trabalhar antes de mescl\u00e1-la novamente na ramifica\u00e7\u00e3o mestre,<\/li>\n<li>implementando uma maneira mais coesa de organizar arquivos,<\/li>\n<li>atualizar os padr\u00f5es de codifica\u00e7\u00e3o para seguir o que est\u00e1 mais alinhado com o PSR,<\/li>\n<li>e mais.<\/li>\n<\/ul>\n<p>Eu coloco isso agora porque provavelmente n\u00e3o vamos chegar a tudo isso neste post, mas vamos cobrir muito terreno. Dito isso, vamos come\u00e7ar.<\/p>\n<h3>1 Criando um Ramo de Desenvolvimento<\/h3>\n<p>Supondo que voc\u00ea tenha uma c\u00f3pia do reposit\u00f3rio de em sua m\u00e1quina local, que voc\u00ea deve ter ap\u00f3s o \u00faltimo post, a primeira coisa que precisamos fazer \u00e9 criar um branch para fazer nosso trabalho.<\/p>\n<p>\u00c9 uma pr\u00e1tica recomendada n\u00e3o trabalhar no branch master. Em vez disso, o mestre deve sempre ser usado para implantar a vers\u00e3o est\u00e1vel mais recente do c\u00f3digo.<\/p>\n<p>Para isso, digite o seguinte comando no seu terminal:<\/p>\n<pre><code>$ git checkout -b develop<\/code><\/pre>\n<p>Isso criar\u00e1 uma nova ramifica\u00e7\u00e3o local. Ele ainda n\u00e3o foi enviado ao GitHub ou ao seu reposit\u00f3rio remoto (onde quer que voc\u00ea o esteja mantendo).<\/p>\n<p>A seguir, digite o seguinte comando:<\/p>\n<pre><code>$ git push --set-upstream origin develop<\/code><\/pre>\n<p>Isso enviar\u00e1 a ramifica\u00e7\u00e3o de desenvolvimento para o reposit\u00f3rio remoto. Feito isso, voc\u00ea poder\u00e1 ver todas as altera\u00e7\u00f5es que implementamos na \u00faltima postagem em seu reposit\u00f3rio remoto.<\/p>\n<p>Se voc\u00ea estiver usando o GitHub, deve ser algo assim:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161542-61e724d38c4f4.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161542-61e724d38c4f4.png\" alt=\"Widgets do WordPress: Refatora\u00e7\u00e3o, Parte 1\"><\/a><\/p>\n<p>Se voc\u00ea estiver usando outro servi\u00e7o, ele ainda deve ser semelhante. Ou seja, a estrutura de diret\u00f3rios deve ser a mesma, mas a apar\u00eancia no navegador varia.<\/p>\n<h4>Uma Nota sobre o Ramo<\/h4>\n<p>Lembre-se, o prop\u00f3sito deste ramo \u00e9 que fa\u00e7amos todo o nosso trabalho. Dessa forma, n\u00e3o estamos interferindo no branch master do qual muitas pessoas ir\u00e3o extrair.<\/p>\n<p>Para ser claro, talvez ningu\u00e9m vai tirar isso. Talvez eles v\u00e3o. Independentemente disso, essas pr\u00e1ticas apresentadas aqui visam mostrar como executar um projeto usando ferramentas de controle de origem e qualidade de c\u00f3digo para que voc\u00ea possa criar projetos melhores para voc\u00ea, sua empresa e muito mais.<\/p>\n<h3>2 Reorganizando Arquivos<\/h3>\n<p>A primeira coisa que devemos fazer \u00e9 reorganizar os arquivos, para que imitem uma estrutura mais moderna. Farei o meu melhor para justificar as decis\u00f5es que estou tomando para o projeto enquanto fazemos isso; no entanto, sinta-se \u00e0 vontade para tomar liberdades com a forma como deseja faz\u00ea-lo.<\/p>\n<p>As decis\u00f5es que eu tomo v\u00e3o afetar o Boilerplate prim\u00e1rio. O que voc\u00ea optar por fazer afetar\u00e1 como voc\u00ea poder\u00e1 us\u00e1-lo em seu trabalho di\u00e1rio ou como voc\u00ea optar\u00e1 por avan\u00e7ar com o projeto como um todo.<\/p>\n<h3>Atualizando diret\u00f3rios<\/h3>\n<p>Uma das coisas que tento fazer \u00e9 dividir meus diret\u00f3rios, para que fiquem o mais claros poss\u00edvel. Isso significa que eu tento fazer o seguinte:<\/p>\n<ul>\n<li>crie um diret\u00f3rio de <strong>ativos<\/strong> para JavaScript e folhas de estilo,<\/li>\n<li>crie um diret\u00f3rio <strong>src<\/strong> para todos os arquivos PHP,<\/li>\n<li>crie um diret\u00f3rio de <strong>idioma<\/strong> para arquivos de internacionaliza\u00e7\u00e3o,<\/li>\n<li>mantenha todos os outros arquivos na raiz do reposit\u00f3rio, para que seja f\u00e1cil para outros seguirem junto com o README fornecido.<\/li>\n<\/ul>\n<p>Para fazer isso, vou primeiro remover e mover algumas coisas. Eu tentei organizar isso em uma ordem espec\u00edfica:<\/p>\n<ol>\n<li>Vou remover o arquivo <strong>README.txt<\/strong>. Este arquivo \u00e9 usado como um modelo README padr\u00e3o se voc\u00ea for enviar c\u00f3digo para o WordPress Plugin Repository, mas n\u00e3o \u00e9 necess\u00e1rio para o que eu quero para o Boilerplate.<\/li>\n<li>Vou renomear <strong>plugin.php<\/strong> para <strong>Plugin<em><\/em><\/strong> .php<em><\/em> para seguir as conven\u00e7\u00f5es do PSR.<\/li>\n<li>Tamb\u00e9m vou renomear <strong>lang<\/strong> para <strong>idiomas.<\/strong><\/li>\n<li>Vou criar um diret\u00f3rio de <strong>ativos<\/strong> e mover e, em seguida, mover os diret\u00f3rios <strong>css<\/strong> e <strong>js<\/strong> para esse diret\u00f3rio. Vou criar um subdiret\u00f3rio <strong>dev<\/strong> em cada um desses diret\u00f3rios onde podemos trabalhar em arquivos Sass e JavaScript unminified (ambos vir\u00e3o mais tarde na s\u00e9rie).<\/li>\n<li>Depois disso, vou criar um diret\u00f3rio <strong>src<\/strong> e mover a folha de estilo de <strong>visualiza\u00e7\u00f5es<\/strong> para esse diret\u00f3rio.<\/li>\n<li>Eu tamb\u00e9m renomearei <strong>views<\/strong> para <strong>Views<\/strong> e tamb\u00e9m colocarei em mai\u00fasculas os arquivos contidos nela.<\/li>\n<li>Finalmente, vou mover tudo para a raiz do diret\u00f3rio. Isso significa que <strong>o widget-boilerplate<\/strong> desaparecer\u00e1 e todos os arquivos residir\u00e3o no diret\u00f3rio raiz do reposit\u00f3rio.<\/li>\n<\/ol>\n<p>S\u00e3o muitos passos, mas s\u00e3o pequenos. Eu gosto de descrev\u00ea-los primeiro para que fique claro o que acontecer\u00e1 no restante desta se\u00e7\u00e3o.<\/p>\n<h4>Remova o README<\/h4>\n<p>Para fazer isso, basta digitar o seguinte comando em seu terminal na raiz do diret\u00f3rio <strong>widget-boilerplate<\/strong> :<\/p>\n<pre><code>$ rm readme.txt<\/code><\/pre>\n<p>Isso remover\u00e1 o arquivo. Se voc\u00ea digitar o seguinte comando no seu terminal:<\/p>\n<pre><code>$ git status<\/code><\/pre>\n<p>Voc\u00ea deve ver algo assim:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161542-61e724d77468a.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161542-61e724d77468a.png\" alt=\"Widgets do WordPress: Refatora\u00e7\u00e3o, Parte 1\"><\/a><\/p>\n<p>Eu sou um f\u00e3 de garantir que as v\u00e1rias altera\u00e7\u00f5es que s\u00e3o enviadas sejam claras e concisas, para que seja mais f\u00e1cil revert\u00ea-las uma de cada vez. Ent\u00e3o vamos em frente e confirmar e empurrar essa mudan\u00e7a.<\/p>\n<p>Digite o seguinte:<\/p>\n<pre><code>$ git rm README.txt\n$ git add. $ git commit -n -m \"Removing the original README.txt template.\"\n$ git push<\/code><\/pre>\n<p>Isso dir\u00e1 ao Git para remover o arquivo, adicionar a \u00fanica altera\u00e7\u00e3o ao conjunto de altera\u00e7\u00f5es, confirm\u00e1-lo sem executar nenhuma ferramenta de qualidade de c\u00f3digo (porque n\u00e3o precisamos fazer isso agora; caso contr\u00e1rio, ele falhar\u00e1) e o enviar\u00e1 por push para o branch de <strong>desenvolvimento<\/strong> do reposit\u00f3rio remoto .<\/p>\n<p>Agora que temos isso feito, vamos em frente e renomear alguns arquivos.<\/p>\n<h4>Renomeando arquivos<\/h4>\n<p>Enquanto estamos nisso, n\u00e3o vamos apenas renomear o arquivo <strong>plugin<em><\/em><\/strong> .php<em><\/em>, mas tamb\u00e9m os outros arquivos PHP. Esses s\u00e3o arquivos que podem ser agrupados logicamente no mesmo changeset, ent\u00e3o faz sentido ir em frente e fazer isso.<\/p>\n<p>Ent\u00e3o, no seu terminal, digite os seguintes comandos:<\/p>\n<pre><code>$ mv plugin.php Plugin.php\n$ mv views\/admin.php views\/Admin.php\n$ mv views\/widget.php views\/Widget.php<\/code><\/pre>\n<p>Ao fazer isso, ainda n\u00e3o fizemos nenhuma altera\u00e7\u00e3o nos arquivos, ent\u00e3o n\u00e3o h\u00e1 nada para confirmar. Vamos avan\u00e7ar com a renomea\u00e7\u00e3o de diret\u00f3rios.<\/p>\n<h4>Criar diret\u00f3rios; Renomear diret\u00f3rios<\/h4>\n<p>Assim como fizemos com os arquivos, vamos em frente e criar um novo diret\u00f3rio de <strong>ativos<\/strong>. No seu terminal, digite o seguinte comando:<\/p>\n<pre><code>$ mkdir assets<\/code><\/pre>\n<p>Em seguida, queremos mover os diret\u00f3rios <strong>css<\/strong> e <strong>js<\/strong> para esse diret\u00f3rio, ent\u00e3o digite o seguinte no terminal tamb\u00e9m:<\/p>\n<pre><code>$ mv css assets\n$ mv js assets<\/code><\/pre>\n<p>E vamos renomear o diret\u00f3rio <strong>lang para<\/strong> <strong>Languages<\/strong> \u200b\u200bdigitando o seguinte comando:<\/p>\n<pre><code>$ mv lang Languages<\/code><\/pre>\n<p>Por fim, vamos renomear <strong>view<\/strong> para <strong>Views:<\/strong><\/p>\n<pre><code>$ mv views Views<\/code><\/pre>\n<p>Neste ponto, fizemos todo o poss\u00edvel com os arquivos atualmente no diret\u00f3rio principal. No entanto, ainda precisamos preparar subdiret\u00f3rios para nossos ativos pr\u00e9-processados.<\/p>\n<p>Antes de fazer isso, por\u00e9m, \u00e9 um bom h\u00e1bito executar uma r\u00e1pida verifica\u00e7\u00e3o de <strong>status do git<\/strong> para ver o que existe que pode ser adicionado a um changeset. Se o seu reposit\u00f3rio for como o meu, \u00e9 prov\u00e1vel que voc\u00ea veja algo como o seguinte:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161542-61e724da758f2.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161542-61e724da758f2.png\" alt=\"Widgets do WordPress: Refatora\u00e7\u00e3o, Parte 1\"><\/a><\/p>\n<p>Nesse caso, acho que n\u00e3o h\u00e1 problema em adicionar tudo em um \u00fanico conjunto de altera\u00e7\u00f5es com um coment\u00e1rio indicando que renomeamos e movemos os arquivos.<\/p>\n<p>Voc\u00ea pode diferir e se assim for, tudo bem. Seus comandos ser\u00e3o um pouco diferentes dos meus, mas aqui est\u00e1 o que tenho para o meu commit:<\/p>\n<pre><code>$ git add. $ git commit -n -m \"Creating new directories; Renaming files.\"\n$ git push<\/code><\/pre>\n<p>Agora, vamos aos subdiret\u00f3rios para nossos arquivos pr\u00e9-processados.<\/p>\n<h4>Criar subdiret\u00f3rios<\/h4>\n<p>No diret\u00f3rio CSS, crie um subdiret\u00f3rio chamado <strong>dev<\/strong> e crie um arquivo vazio chamado <strong>admin.scss<\/strong> e <strong>widget.scss<\/strong>, pois trabalharemos com esses arquivos posteriormente na s\u00e9rie.<\/p>\n<p>Em seguida, adicione um diret\u00f3rio <strong>dev<\/strong> ao diret\u00f3rio JavaScript e adicione o arquivo <strong>admin.js vazio e os arquivos<\/strong> <strong>widget.js<\/strong> a esses arquivos. Se voc\u00ea quiser, pode mover os arquivos pr\u00e9-existentes para os diret\u00f3rios <strong>dev<\/strong>, pois esses s\u00e3o os arquivos que usaremos como base para nossos arquivos de desenvolvimento.<\/p>\n<p>Essa \u00e9 uma etapa opcional; no entanto, fui em frente e fiz isso porque \u00e9 assim que prefiro trabalhar. Aqui est\u00e1 o conjunto de comandos que eu executei.<\/p>\n<p>Do diret\u00f3rio <strong>css<\/strong> \u2026<\/p>\n<pre><code>$ mkdir dev\n$ mv admin.css admin.scss &amp;&amp; mv widget.css widget.scss\n$ mv *.scss dev<\/code><\/pre>\n<p>Acima, criei o diret\u00f3rio <strong>dev<\/strong> para minhas folhas de estilo, renomeei-as para arquivos Sass e as movi para o diret\u00f3rio <strong>dev<\/strong>.<\/p>\n<p>Antes de prosseguir, agora \u00e9 um bom momento para fazer uma verifica\u00e7\u00e3o de <strong>status do git<\/strong> e confirmar as altera\u00e7\u00f5es relacionadas \u00e0s folhas de estilo:<\/p>\n<pre><code>$ git add. $ git commit -n -m \"Renaming and moving stylesheets into a dev directory.\"\n$ git push<\/code><\/pre>\n<p>Agora, no diret\u00f3rio <strong>js<\/strong> \u2026<\/p>\n<pre><code>$ mkdir dev\n$ mv *.js dev<\/code><\/pre>\n<p>Como n\u00e3o precisamos alterar o tipo de arquivo dos arquivos associados, podemos simplesmente mov\u00ea-los para o novo diret\u00f3rio.<\/p>\n<p>Finalmente, vamos fazer a mesma coisa e ver se h\u00e1 alguma mudan\u00e7a que podemos fazer atrav\u00e9s de uma verifica\u00e7\u00e3o r\u00e1pida de <strong>status do git<\/strong> (que deve haver). Aqui est\u00e1 uma lista dos comandos que executei para confirmar e enviar minhas altera\u00e7\u00f5es:<\/p>\n<pre><code>$ git add. $ git commit -n -m \"Adding a JavaScript dev directory and moving the development files.\"\n$ git push<\/code><\/pre>\n<p>Estamos quase terminando. Tudo o que resta a fazer \u00e9 mover certos diret\u00f3rios para a raiz do reposit\u00f3rio e renomear o diret\u00f3rio principal para <strong>src<\/strong>. Ent\u00e3o vamos fazer isso agora.<\/p>\n<h3>Mover diret\u00f3rios para a raiz<\/h3>\n<p>Essencialmente, precisamos mover tudo, exceto o arquivo de plug-in e o diret\u00f3rio <strong>Views<\/strong>, para fora do diret\u00f3rio <strong>widget-boilerplate<\/strong>, e precisamos renomear <strong>widget-boilerplate<\/strong> para <strong>src<\/strong>.<\/p>\n<p>Parece simples, certo? \u00c9 bem direto. De dentro do diret\u00f3rio <strong>widget-boilerplate<\/strong> :<\/p>\n<pre><code>$ mv assets .. &amp;&amp; mv languages ..\n$ cd ..\n$ mv widget-boilerplate src<\/code><\/pre>\n<p>Em seguida, confirmarei a altera\u00e7\u00e3o no GitHub usando o seguinte:<\/p>\n<pre><code>$ git add. $ git commit -n -m \"Reorganizing the directory structure.\"\n$ git push<\/code><\/pre>\n<p>Agora temos uma estrutura de diret\u00f3rio muito mais moderna configurada. Voc\u00ea pode v\u00ea-lo aqui <strong><a href=\"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\/tree\/develop\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">no meu ramo de desenvolvimento<\/a><\/strong>.<\/p>\n<h3>Uma palavra sobre POO<\/h3>\n<p>E agora que temos tudo isso no lugar, podemos come\u00e7ar a escrever c\u00f3digo. Mas n\u00e3o se engane: uma parte da programa\u00e7\u00e3o orientada a objetos tamb\u00e9m \u00e9 an\u00e1lise orientada a objetos e design orientado a objetos.<\/p>\n<p>O que fizemos neste post \u00e9 essencialmente aplicar um projeto arquitet\u00f4nico orientado a objetos baseado na an\u00e1lise de como o plugin se encaixa.<\/p>\n<p>A pr\u00f3xima parte, por\u00e9m, \u00e9 atualizar o c\u00f3digo para se livrar de todo o vermelho que vimos ao farejar nosso c\u00f3digo.<\/p>\n<h2>Na pr\u00f3xima postagem<\/h2>\n<p>O objetivo principal do pr\u00f3ximo post \u00e9 continuar atualizando os padr\u00f5es de codifica\u00e7\u00e3o para que possamos resolver todos os problemas lan\u00e7ados pelo nosso IDE ou por meio das ferramentas de qualidade de c\u00f3digo que estamos executando na linha de comando.<\/p>\n<p>Devemos tamb\u00e9m ter um reposit\u00f3rio muito mais limpo e organizado, e estarmos prontos para mesclar nosso trabalho de volta ao branch master.<\/p>\n<p>Por enquanto, por\u00e9m, certifique-se de ter um bom controle sobre tudo acima antes de prosseguir, pois \u00e9 necess\u00e1rio entender o restante do trabalho que temos pela frente.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Isso n\u00e3o apenas melhorar\u00e1 a qualidade do c\u00f3digo, mas tamb\u00e9m nos guiar\u00e1 por alguns princ\u00edpios orientados a objetos que podemos aplicar ao construir nossos widgets do WordPress.<\/p>\n","protected":false},"author":1,"featured_media":235111,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,722,867],"tags":[1170],"class_list":["post-231202","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/231202","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=231202"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/231202\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/235111"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=231202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=231202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=231202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}