{"id":230016,"date":"2022-11-16T19:35:00","date_gmt":"2022-11-16T16:35:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230016"},"modified":"2022-11-09T19:43:35","modified_gmt":"2022-11-09T16:43:35","slug":"modelos-wordpress-para-iniciantes-como-e","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/modelos-wordpress-para-iniciantes-como-e\/","title":{"rendered":"Modelos WordPress para Iniciantes: Como \u00e9"},"content":{"rendered":"\n<p>Quando comecei a pensar em templates no WordPress, pensei em dois aspectos:<\/p>\n<ol>\n<li>conte\u00fado especificamente para <a href=\"https:\/\/tommcfarlin.com\/register\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">membros<\/a> ,<\/li>\n<li>conte\u00fado que pode ser dividido em um \u00fanico post.<\/li>\n<\/ol>\n<p>Mas quanto mais eu pensava sobre isso, mais percebia que poderia (e provavelmente deveria) ser explicado ao longo de alguns posts.<\/p>\n<p>Ent\u00e3o, vou detalhar o estado atual dos modelos do WordPress e, em seguida, maneiras pr\u00e1ticas de organizar, digamos, nossos plugins para que usemos PHP padr\u00e3o.<\/p>\n<p>Depois disso, em uma s\u00e9rie futura, examinarei o que significa usar outros mecanismos de modelagem (PHP e JavaScript no trabalho que fazemos).<\/p>\n<p>Para come\u00e7ar, por\u00e9m, quero dar uma olhada em como muitas vezes vemos modelos escritos no contexto de temas e plugins do WordPress.<\/p>\n<h2>Modelos WordPress para Iniciantes<\/h2>\n<p>Dependendo da sua experi\u00eancia com o WordPress e outros sistemas baseados em PHP, sua defini\u00e7\u00e3o de template ser\u00e1 diferente da de outra pessoa.<\/p>\n<p>Ent\u00e3o para tentar criar uma defini\u00e7\u00e3o comum que estarei utilizando ao longo desta s\u00e9rie de posts ser\u00e1 utilizado <a href=\"https:\/\/codex.wordpress.org\/Templates\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">o WordPress Codex:<\/a><\/p>\n<blockquote>\n<p>Modelos s\u00e3o os arquivos que controlam como seu site WordPress ser\u00e1 exibido na Web.<\/p>\n<\/blockquote>\n<p>A p\u00e1gina continua falando sobre como ele funciona em conjunto com o banco de dados e outros ativos, e recomendo ler sobre isso se voc\u00ea n\u00e3o estiver familiarizado com ele.<\/p>\n<p>No entanto, a defini\u00e7\u00e3o acima funciona bem para como pretendo avan\u00e7ar pensando nisso.<\/p>\n<h3>1 Como \u00e9 (agora)<\/h3>\n<p>Quando se trata de pensar em modelos do WordPress, acho que ajuda considerar um \u00fanico modelo com c\u00f3digo <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2c02b22272f645076f7f735bd61a4034#file-00-content-container-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">parecido com este:<\/a><\/p>\n<pre><code>&lt;div id=\"content-container\"&gt;\n\n  &lt;p&gt;\n    Oh! The garbage chute was a really wonderful idea. What an incredible smell you've discovered! Let's get out of here! \n    Get away from there... No! wait! Will you forget it? I already tried it. It's magnetically sealed! Put that \n    thing away! You're going to get us all killed.\n  &lt;\/p&gt;\n\n  &lt;h2&gt;List of Post Titles For Acme Post Type&lt;\/h2&gt;\n  &lt;?php\n  $args = array(\n    'post_status'    =&gt; 'publish',\n    'post_type'      =&gt; 'acme',\n    'posts_per_page' =&gt; '10'\n  );\n  $custom_query = new WP_Query( $args );\n\n  if ($custom_query-&gt;have_posts()) {\n    echo '&lt;ul&gt;';\n    while ($custom_query-&gt;have_posts()) {\n      $custom_query-&gt;the_post();\n      echo '&lt;li&gt;'. get_the_title(). '&lt;\/li&gt;';\n    }\n    echo '&lt;\/ul&gt;';\n    wp_reset_postdata();\n  }\n  ?&gt;\n\n  &lt;p&gt;\n    Absolutely, Your Worship. Look, I had everything under control until you led us down here. You know, it's not \n    going to take them long to figure out what happened to us. It could be worst... It's worst. \n    There's something alive in here! That's your imagination. Something just moves past my leg! \n    Look! Did you see that? What? Help!\n  &lt;\/p&gt;\n\n&lt;\/div&gt;&lt;!-- #content-container --&gt;<\/code><\/pre>\n<p>O ponto do c\u00f3digo acima \u00e9 que voc\u00ea v\u00ea \u00e9 que ele mistura PHP e HTML.<\/p>\n<p>Al\u00e9m disso, \u00e9 importante observar que cada um desses arquivos \u00e9 estilizado usando CSS e pode ter um comportamento adicional controlado por JavaScript. Para isso, voc\u00ea pode conceituar assim:<\/p>\n<p>Isso representa um \u00fanico modelo misturando HTML e PHP em um \u00fanico modelo. E esse modelo \u00e9 ent\u00e3o estilizado com CSS e controlado com JavaScript.<\/p>\n<p>Tudo isso funciona em conjunto para fornecer o que o usu\u00e1rio v\u00ea.<\/p>\n<h3>2 A organiza\u00e7\u00e3o do desenvolvedor gera desempenho?<\/h3>\n<p>Mas o modo como isso funciona \u00e9 meio confuso e, embora possa parecer bom para o usu\u00e1rio, levanta algumas quest\u00f5es:<\/p>\n<ul>\n<li>\u00c9 t\u00e3o perform\u00e1tico quanto poderia ser?<\/li>\n<li>Qu\u00e3o f\u00e1cil \u00e9 para um desenvolvedor manter?<\/li>\n<li>Qual \u00e9 o processo de constru\u00e7\u00e3o?<\/li>\n<li>como os ativos s\u00e3o mantidos e organizados?<\/li>\n<\/ul>\n<p>Claro, a maior parte do que voc\u00ea est\u00e1 lendo acima \u00e9 muito centrada no desenvolvedor, mas acho que quando um c\u00f3digo \u00e9 organizado de tal forma que \u00e9 f\u00e1cil para os desenvolvedores trabalharem com ele, muitas vezes pode ser ainda mais r\u00e1pido para o usu\u00e1rio.<\/p>\n<p>O que isso significa, no entanto?<\/p>\n<ul>\n<li>Apresentamos Sass?<\/li>\n<li>Minimizamos o JavaScript?<\/li>\n<li>Como combinamos esses ativos e os importamos?<\/li>\n<li>E as consultas PHP personalizadas que acontecem no contexto de cada modelo?<\/li>\n<\/ul>\n<p>E embora as primeiras coisas sejam importantes e valham a pena (e eu posso cobrir em uma s\u00e9rie depois disso), separar a l\u00f3gica de dentro de um modelo, mesmo sem um mecanismo de modelagem, pode ajudar a tornar o c\u00f3digo mais centrado no desenvolvedor.<\/p>\n<p>Isso torna as coisas mais r\u00e1pidas para o usu\u00e1rio? N\u00e3o necessariamente. Mas isso nos ajuda a dar o primeiro passo para fazer exatamente isso.<\/p>\n<h2>Vamos nos reorganizar<\/h2>\n<p>No pr\u00f3ximo post desta s\u00e9rie, vou detalhar o conte\u00fado que estamos acostumados a ver nos templates do WordPress atrav\u00e9s de um exemplo e come\u00e7ar a reorganiz\u00e1-lo para que fique melhor organizado de forma que as t\u00e9cnicas possam ser usadas em diferentes projetos.<\/p>\n<p>Isso significa mover as coisas para suas fun\u00e7\u00f5es (ou mesmo dentro de suas classes e, portanto, suas fun\u00e7\u00f5es) e como podemos cham\u00e1-las de dentro do contexto de nossos modelos.<\/p>\n<p>Em \u00faltima an\u00e1lise, isso levar\u00e1 a um c\u00f3digo mais f\u00e1cil de ler, melhor separa\u00e7\u00e3o de interesses e nos levar\u00e1 a maneiras de alterar a forma como os dados s\u00e3o injetados em um modelo.<\/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>Os modelos s\u00e3o a maneira como os dados s\u00e3o exibidos para o usu\u00e1rio, mas como podemos usar os modelos do WordPress e melhorar sua organiza\u00e7\u00e3o para usu\u00e1rios e desenvolvedores?<\/p>\n","protected":false},"author":1,"featured_media":223990,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[930,898,846,867],"tags":[1170],"class_list":["post-230016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-assuntos","category-codigo-2","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/230016","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=230016"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/230016\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/223990"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=230016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=230016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=230016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}