{"id":233622,"date":"2023-02-18T13:07:00","date_gmt":"2023-02-18T10:07:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233622"},"modified":"2022-11-11T00:41:50","modified_gmt":"2022-11-10T21:41:50","slug":"tutorial-de-tema-wordpress-para-iniciantes-parte-3-conteudo-dinamico","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/tutorial-de-tema-wordpress-para-iniciantes-parte-3-conteudo-dinamico\/","title":{"rendered":"Tutorial de Tema WordPress para Iniciantes \u2013 Parte 3: Conte\u00fado Din\u00e2mico"},"content":{"rendered":"\n<p>Nesta li\u00e7\u00e3o do tutorial do tema WordPress para iniciantes, aprenderemos sobre ganchos no WordPress e adicionaremos alguns ganchos em nosso tema que s\u00e3o necess\u00e1rios para que um tema funcione corretamente com o WordPress e plugins. Tamb\u00e9m come\u00e7aremos a acessar conte\u00fado din\u00e2mico do WordPress em nosso cabe\u00e7alho, como obter automaticamente o t\u00edtulo da p\u00e1gina atual.<\/p>\n<p>Primeiro precisamos aprender um pouco sobre hooks no WordPress. Hooks s\u00e3o uma funcionalidade central com a qual voc\u00ea precisa se familiarizar. Eu n\u00e3o sou f\u00e3 de apenas mostrar um monte de c\u00f3digo no qual voc\u00ea precisa copiar + colar sem saber o que ele realmente faz. Se voc\u00ea est\u00e1 seguindo este tutorial, voc\u00ea quer aprender isso corretamente, certo?<\/p>\n<p>N\u00e3o se preocupe, vou mant\u00ea-lo curto por enquanto. Vamos aprender mais sobre isso mais tarde neste tutorial.<\/p>\n<h2>Ganchos no WordPress<\/h2>\n<p>Resumidamente; como o WordPress executa todo o c\u00f3digo para carregar e renderizar uma p\u00e1gina, existem certos &#8220;pontos de verifica\u00e7\u00e3o&quot; \u2013 que chamamos de ganchos. Esses pontos s\u00e3o onde o WordPress permite que os desenvolvedores modifiquem ou adicionem seu pr\u00f3prio c\u00f3digo. O WordPress definiu um monte de &#8220;pontos de verifica\u00e7\u00e3o&#8221; onde, cada um com um nome exclusivo. Se voc\u00ea souber o nome, poder\u00e1 adicionar seu pr\u00f3prio c\u00f3digo nesses pontos de verifica\u00e7\u00e3o. E, assim, dizer facilmente ao WordPress para executar seu c\u00f3digo quando atingir esse ponto de verifica\u00e7\u00e3o como parte de seu processo.<\/p>\n<p>Existem dois tipos de ganchos; a\u00e7\u00f5es e filtros. <strong>A\u00e7\u00f5es<\/strong> s\u00e3o pontos no c\u00f3digo onde voc\u00ea pode adicionar c\u00f3digo personalizado, por exemplo, produzir algo ou fazer algo para seus pr\u00f3prios prop\u00f3sitos. <strong>Filtros<\/strong> s\u00e3o pontos no c\u00f3digo onde voc\u00ea pode modificar uma determinada vari\u00e1vel antes que ela seja usada ou gerada. Eles s\u00e3o muito semelhantes, mas os filtros s\u00e3o anexados a uma vari\u00e1vel espec\u00edfica e as a\u00e7\u00f5es n\u00e3o.<\/p>\n<p>Plugins, temas e o pr\u00f3prio WordPress podem &#8220;ligar&#8221; seu c\u00f3digo usando <code>add_action()<\/code>a\u00e7\u00f5es e <code>add_filter()<\/code>filtros. Essas duas fun\u00e7\u00f5es dizem ao WordPress para executar o c\u00f3digo viciado sempre que a execu\u00e7\u00e3o atingir esses ganchos.<\/p>\n<p>Para definir ganchos voc\u00ea usa <code>do_action()<\/code>para a\u00e7\u00f5es e <code>apply_filters()<\/code>filtros.<\/p>\n<p>Para quem estiver interessado em saber mais, tenho um outro <a href=\"http:\/\/awhitepixel.com\/blog\/all-about-hooks-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">post que entra em detalhes sobre hooks<\/a> no WordPress.<\/p>\n<p>Um tema WordPress deve incluir alguns ganchos (a\u00e7\u00f5es) importantes espec\u00edficos. Esses ganchos permitem que o WordPress, plugins e nosso pr\u00f3prio tema se conectem e fa\u00e7am coisas cr\u00edticas. Vejamos os ganchos cr\u00edticos que precisamos adicionar.<\/p>\n<h2>Os ganchos de cabe\u00e7alho e rodap\u00e9 do tema<\/h2>\n<p>Todos os temas do WordPress devem ter dois ganchos nos modelos. Uma a\u00e7\u00e3o deve ser colocada no cabe\u00e7alho (dentro da <code>&lt;head&gt;<\/code>tag) e outra no rodap\u00e9 (logo antes de fechar a <code>&lt;\/body&gt;<\/code>tag). Esses dois ganchos s\u00e3o absolutamente necess\u00e1rios para que o WordPress, seu tema e qualquer plugin possam adicionar seus scripts e c\u00f3digos de estilos ao seu tema.<\/p>\n<p>Os ganchos que precisamos s\u00e3o <code>wp_head<\/code>e <code>wp_footer<\/code>para o cabe\u00e7alho e o rodap\u00e9, respectivamente.<\/p>\n<p>Normalmente, quando queremos executar um gancho, chamar\u00edamos <code>do_action(&lt;hook name&gt;)<\/code>. Mas porque esses dois ganchos s\u00e3o t\u00e3o cr\u00edticos, o WordPress os simplificou para n\u00f3s, colocando-os em uma simples chamada de fun\u00e7\u00e3o. Portanto, para esses dois ganchos, voc\u00ea pode simplesmente usar <code>wp_head()<\/code>e <code>wp_footer()<\/code>. Em segundo plano, esses dois executam o <code>do_action()<\/code>.<\/p>\n<p>Vamos adicionar esses dois ganchos (chamadas de fun\u00e7\u00e3o) aos nossos modelos de cabe\u00e7alho e rodap\u00e9 e ver o que acontece.<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n    &lt;head&gt;\n        &lt;meta charset=\"utf-8\"&gt;\n        &lt;title&gt;A White Pixel Theme&lt;\/title&gt;\n\u00a0\n        &lt;?php wp_head(); ?&gt;\n    &lt;\/head&gt;\n&lt;body&gt;<\/code><\/pre>\n<pre><code>        &lt;?php wp_footer(); ?&gt;\n    &lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Clique em atualizar no seu frontend. Se voc\u00ea estiver logado, agora voc\u00ea deve ver a barra de administra\u00e7\u00e3o do WordPress aparecer! Isso significa que o WordPress agora pode adicionar com sucesso seus scripts e estilos ao seu tema.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152824-61e4fb80a88c0.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-152824-61e4fb80a88c0.png\" alt=\"Tutorial de Tema WordPress para Iniciantes \u2013 Parte 3: Conte\u00fado Din\u00e2mico\" ><\/a><\/p>\n<p>Voc\u00ea pode verificar sua fonte HTML e ver que seu cabe\u00e7alho agora cont\u00e9m um pouco de c\u00f3digo. Este \u00e9 o c\u00f3digo que voc\u00ea n\u00e3o adicionou ao seu tema. Como voc\u00ea pode ver, o pr\u00f3prio WordPress est\u00e1 usando os ganchos que adicionamos para fazer suas pr\u00f3prias coisas.<\/p>\n<p>Vamos passar dos ganchos e come\u00e7ar a ver como podemos buscar dinamicamente o conte\u00fado do WordPress e produzi-lo em nosso cabe\u00e7alho.<\/p>\n<h2>Conte\u00fado din\u00e2mico no cabe\u00e7alho<\/h2>\n<p>Vamos dizer ao WordPress para definir dinamicamente o t\u00edtulo do documento (para a <code>&lt;title&gt;<\/code>tag). Para isso vamos usar uma fun\u00e7\u00e3o, (que por sinal tem um filtro), chamada <code>wp_title()<\/code>. Como aprendemos acima, por <code>wp_title()<\/code>ser um filtro, voc\u00ea, WordPress ou plugins podem modificar a sa\u00edda. Adicionaremos um filtro a isso posteriormente neste tutorial.<\/p>\n<p>A fun\u00e7\u00e3o <code>wp_title()<\/code>recebe <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">v\u00e1rios argumentos<\/a> que voc\u00ea pode ajustar ao seu gosto, mas por enquanto adicionarei uma string vazia para que ela exiba apenas o t\u00edtulo da p\u00e1gina em que estamos.<\/p>\n<p>Mude sua <code>&lt;title&gt;<\/code>tag <code>header.php<\/code>para isso:<\/p>\n<pre><code>&lt;title&gt;&lt;?php wp_title(''); ?&gt;&lt;\/title&gt;<\/code><\/pre>\n<p>Os interessados \u200b\u200bdevem ter notado que a primeira p\u00e1gina n\u00e3o gerar\u00e1 um t\u00edtulo. Este \u00e9 o comportamento padr\u00e3o do WordPress que corrigiremos mais adiante neste tutorial (faremos isso com a ajuda do filtro). Se voc\u00ea visitar uma \u00fanica postagem ou p\u00e1gina, dever\u00e1 obter o t\u00edtulo da postagem.<\/p>\n<p>O WordPress tem uma fun\u00e7\u00e3o bacana que gera dinamicamente um monte de classes para a <code>&lt;body&gt;<\/code>tag dependendo da p\u00e1gina em que estamos; chamado <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class<\/a>. Atualize a <code>&lt;body&gt;<\/code>tag <code>header.php<\/code>para isso:<\/p>\n<pre><code>&lt;body &lt;?php body_class(); ?&gt;&gt;<\/code><\/pre>\n<p>Atualize e d\u00ea uma olhada em todas as classes adicionadas \u00e0 <code>&lt;body&gt;<\/code>tag. D\u00ea uma olhada em diferentes p\u00e1ginas (frontpage, single, categoria). Todas essas classes s\u00e3o muito \u00fateis para estilizar e diferenciar diferentes partes semelhantes. Voc\u00ea provavelmente usar\u00e1 alguns deles em seu CSS.<\/p>\n<p>Para seguir as boas pr\u00e1ticas de HTML, devemos tamb\u00e9m informar sobre o idioma do site no HTML. Para isso usamos uma fun\u00e7\u00e3o do WordPress para obter o idioma de Configura\u00e7\u00f5es; <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/language_attributes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">language_attributes<\/a>.<\/p>\n<pre><code>&lt;html &lt;?php language_attributes(); ?&gt;&gt;<\/code><\/pre>\n<p>E, finalmente, gostaria de adicionar algumas meta tags e outras que n\u00e3o s\u00e3o espec\u00edficas do WordPress, mas seguem pr\u00e1ticas comuns de web design. Esta \u00e9 a <code>header.php<\/code>apar\u00eancia do arquivo completo:<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html class=\"no-js\" &lt;?php language_attributes(); ?&gt;&gt;\n&lt;head&gt;\n    &lt;meta charset=\"utf-8\"&gt;\n    &lt;meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"&gt;\n\u00a0\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;&lt;?php wp_title(''); ?&gt;&lt;\/title&gt;\n\u00a0\n    &lt;?php wp_head(); ?&gt;\n&lt;\/head&gt;\n&lt;body &lt;?php body_class(); ?&gt;&gt;<\/code><\/pre>\n<p>Para a pr\u00f3xima etapa deste tutorial, vamos sair <code>header.php<\/code>e mergulhar <code>index.php<\/code>para aprender como buscar conte\u00fado mais din\u00e2mico, como postagens.<\/p>\n<h2>Documenta\u00e7\u00e3o sobre os m\u00e9todos usados<\/h2>\n<ul>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_head\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_head<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_footer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_footer<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_title\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_title<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/body_class\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">body_class<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/language_attributes\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">language_attributes<\/a><\/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>Nesta li\u00e7\u00e3o, voc\u00ea aprender\u00e1 sobre ganchos no WordPress e como acessar e produzir conte\u00fado din\u00e2mico do WordPress no cabe\u00e7alho.<\/p>\n","protected":false},"author":1,"featured_media":224746,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[930,898,898,722,722,837,920,1110,920,837,930,846,846,867,867],"tags":[1170],"class_list":["post-233622","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-assuntos","category-codigo-2","category-desenvolvedor","category-guia-para-iniciantes","category-outro","category-n-a","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233622","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=233622"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233622\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224746"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233622"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233622"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233622"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}