{"id":233753,"date":"2023-02-21T13:12:00","date_gmt":"2023-02-21T10:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233753"},"modified":"2022-11-11T12:12:39","modified_gmt":"2022-11-11T09:12:39","slug":"tutorial-de-tema-wordpress-para-iniciantes-parte-7-configuracao-do-tema-e-imagens-em-destaque","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/tutorial-de-tema-wordpress-para-iniciantes-parte-7-configuracao-do-tema-e-imagens-em-destaque\/","title":{"rendered":"Tutorial de Tema WordPress para Iniciantes \u2013 Parte 7: Configura\u00e7\u00e3o do Tema e Imagens em Destaque"},"content":{"rendered":"\n<p>Esta li\u00e7\u00e3o do tutorial do tema WordPress para iniciantes continua adicionando o c\u00f3digo b\u00e1sico necess\u00e1rio para a configura\u00e7\u00e3o do tema. Aprendemos a adicionar suportes a temas e, como resultado, a funcionalidade de imagem em destaque do WordPress \u00e9 ativada. Nesta li\u00e7\u00e3o, tamb\u00e9m corrigiremos o t\u00edtulo da primeira p\u00e1gina aplicando nosso primeiro filtro.<\/p>\n<p>Trabalharemos principalmente no <code>functions.php<\/code>arquivo que adicionamos na <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-6-a-themes-functions-file\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">li\u00e7\u00e3o anterior<\/a>. No final, adicionaremos o c\u00f3digo para a sa\u00edda de imagens em destaque dentro de nossos modelos.<\/p>\n<h2>Configura\u00e7\u00e3o do tema<\/h2>\n<p>Todos os temas precisam de algum c\u00f3digo para configur\u00e1-lo, dizendo ao WordPress para ativar determinadas funcionalidades. Isso inclui a ativa\u00e7\u00e3o de menus, widgets, tradu\u00e7\u00e3o e assim por diante. Isso geralmente \u00e9 feito em uma &#8220;fun\u00e7\u00e3o de tema de configura\u00e7\u00e3o&quot;, geralmente ligada a um gancho convenientemente chamado <code>after_setup_theme<\/code>. Para algumas coisas espec\u00edficas, precisamos usar o gancho de inicializa\u00e7\u00e3o do WordPress chamado <code>init<\/code>.<\/p>\n<h3>Escrevendo o c\u00f3digo de configura\u00e7\u00e3o de tema necess\u00e1rio para<code>after_setup_theme<\/code><\/h3>\n<p>Vamos configurar uma &#8220;fun\u00e7\u00e3o de tema de configura\u00e7\u00e3o&#8221; em nosso <code>functions.php<\/code>, ligado a <code>after_setup_theme<\/code>:<\/p>\n<pre><code>add_action('after_setup_theme', 'wptutorial_setup_theme');\nfunction wptutorial_setup_theme() {\n\u00a0\n}<\/code><\/pre>\n<p>Dentro desta fun\u00e7\u00e3o, adicionaremos v\u00e1rias fun\u00e7\u00f5es de configura\u00e7\u00e3o comuns e \u00fateis para temas do WordPress. Por favor, coloque todas as partes de c\u00f3digo a seguir dentro de sua fun\u00e7\u00e3o de configura\u00e7\u00e3o.<\/p>\n<p>Primeiro, precisamos definir uma largura m\u00e1xima de imagens e incorpora\u00e7\u00f5es (como v\u00eddeos). Isso garante que, quando os autores inserem imagens grandes nas postagens, as imagens permane\u00e7am dentro de uma certa largura. Eu configurei para 840 pixels (porque quero espa\u00e7o para a barra lateral), mas voc\u00ea pode ajustar isso ao seu gosto.<\/p>\n<pre><code>$GLOBALS['content_width'] = 840;<\/code><\/pre>\n<p>Tamb\u00e9m devemos informar ao WordPress que o tema \u00e9 traduz\u00edvel e onde pode procurar os arquivos de tradu\u00e7\u00e3o. Entrarei na tradu\u00e7\u00e3o do tema WordPress em detalhes na <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-8-translation-of-your-theme\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pr\u00f3xima etapa<\/a> desta s\u00e9rie de tutoriais de temas.<\/p>\n<pre><code>load_theme_textdomain('wptutorial', get_stylesheet_directory(). '\/lang');<\/code><\/pre>\n<p>Observe o uso de uma nova fun\u00e7\u00e3o para obter o diret\u00f3rio do seu tema, <code>get_stylesheet_directory()<\/code>. Isso \u00e9 muito semelhante ao <code>get_stylesheet_directory_uri()<\/code>que encontramos na \u00faltima etapa, mas aqui precisamos do caminho relativo, n\u00e3o da URL.<\/p>\n<p>Em seguida, precisamos adicionar alguns &#8220;suportes de tema&#8221;, que est\u00e1 ativando a funcionalidade do WordPress que n\u00e3o est\u00e1 ativada como padr\u00e3o.<\/p>\n<pre><code>add_theme_support('automatic-feed-links');\nadd_theme_support('post-thumbnails');\nadd_theme_support('html5', [\n    'search-form',\n    'comment-form',\n    'comment-list',\n    'gallery',\n    'caption',\n]);\nadd_theme_support('custom-logo', [\n    'height'      =&gt; 100,\n    'width'       =&gt; 300,\n    'flex-width'  =&gt; true,\n    'flex-height' =&gt; false,\n]);\nadd_theme_support('customize-selective-refresh-widgets');<\/code><\/pre>\n<p>Isso foi um monte de <code>add_theme_support<\/code>chamadas! Como o nome indica, <code>add_theme_support<\/code>diz ao WordPress para ativar recursos que n\u00e3o s\u00e3o ativados por padr\u00e3o. Por exemplo, imagens em destaque (&#8216;p\u00f3s-miniaturas&#8217;), suporte para tags HTML5 e recurso de logotipo personalizado do WordPress no Personalizador (ajuste a imagem de logotipo desejada, se desejar!).<\/p>\n<p>Existem muitos outros recursos interessantes, ent\u00e3o recomendo que voc\u00ea d\u00ea uma olhada na <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_theme_support\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documenta\u00e7\u00e3o do add_theme_support<\/a>. Por exemplo, h\u00e1 um relativamente novo, <code>title-tag<\/code>, que lida com a tag de t\u00edtulo. Eu a deixei de fora neste tutorial, pois j\u00e1 adicionamos a tag de t\u00edtulo <code>header.php<\/code>manualmente.<\/p>\n<p>Lembre-se de que, se voc\u00ea adicionar suporte para <code>title-tag<\/code>, dever\u00e1 remover a tag de t\u00edtulo do arquivo de cabe\u00e7alho para evitar a duplica\u00e7\u00e3o de tags de t\u00edtulo.<\/p>\n<p>Finalmente, adicionamos alguns <code>add_theme_support<\/code>para o novo Gutenberg no WordPress. Adicionaremos suporte para se\u00e7\u00f5es amplas, ativando a funcionalidade de estilos de bloco e suporte para incorpora\u00e7\u00f5es responsivas:<\/p>\n<pre><code>add_theme_support('wp-block-styles');\nadd_theme_support('align-wide');\nadd_theme_support('responsive-embeds');<\/code><\/pre>\n<h3>O resultado final<\/h3>\n<p>Aqui est\u00e1 a fun\u00e7\u00e3o de configura\u00e7\u00e3o final em nosso <code>functions.php<\/code>:<\/p>\n<pre><code>add_action('after_setup_theme', 'wptutorial_setup_theme');\nfunction wptutorial_setup_theme() {\n    $GLOBALS['content_width'] = 840;\n    \/\/ Make your theme ready for translation\n    load_theme_textdomain('wptutorial', get_stylesheet_directory(). '\/lang');\n    \/\/ Add theme support for WordPress functionality\n    add_theme_support('automatic-feed-links');\n    add_theme_support('title-tag');\n    add_theme_support('post-thumbnails');\n    add_theme_support('html5', [\n        'search-form',\n        'comment-form',\n        'comment-list',\n        'gallery',\n        'caption',\n    ]);\n    add_theme_support('custom-logo', [\n        'height'      =&gt; 100,\n        'width'       =&gt; 300,\n        'flex-width'  =&gt; true,\n        'flex-height' =&gt; false,\n    ]);\n    add_theme_support('customize-selective-refresh-widgets');\n    \/\/ Add theme support for Gutenberg specific functionality\n    add_theme_support('wp-block-styles');\n    add_theme_support('align-wide');\n    add_theme_support('responsive-embeds');\n}<\/code><\/pre>\n<p>Depois de salvar, agora voc\u00ea poder\u00e1 adicionar imagens em destaque \u00e0s postagens no admin! Vamos adicionar mais uma corre\u00e7\u00e3o de tema em nosso <code>functions.php<\/code>antes de adicionarmos imagens em destaque aos nossos modelos; lembre-se que <code>wp_title<\/code>em nosso <code>header.php<\/code>padr\u00e3o n\u00e3o pode ecoar nada no frontpage? Vamos consertar isso.<\/p>\n<h2>Adicionando um filtro a<code>wp_title<\/code><\/h2>\n<p>Vamos adicionar nossa primeira fun\u00e7\u00e3o de modifica\u00e7\u00e3o de filtro adequada, usando <code>add_filter()<\/code>. O filtro que vamos usar tem o mesmo nome da fun\u00e7\u00e3o que usamos para o WordPress buscar dinamicamente o t\u00edtulo da p\u00e1gina; <code>wp_title<\/code>. O que vamos corrigir \u00e9 garantir que o t\u00edtulo n\u00e3o fique vazio na p\u00e1gina inicial \u2013 o que \u00e9 padr\u00e3o no WordPress. Quando estiver na p\u00e1gina inicial, queremos que ela seja preenchida com o nome do site WordPress.<\/p>\n<p>Lembre-se de <strong>sempre retornar<\/strong> a vari\u00e1vel filtrada em suas fun\u00e7\u00f5es de filtro! Todos os filtros modificam uma vari\u00e1vel, e se voc\u00ea n\u00e3o retornar nada, a vari\u00e1vel fica indefinida. Isso pode causar muitos problemas. Para mais detalhes sobre filtros, d\u00ea uma olhada no meu <a href=\"http:\/\/awhitepixel.com\/blog\/all-about-hooks-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">post explicando tudo sobre ganchos e filtros<\/a>.<\/p>\n<h3>Saber quando personalizar o t\u00edtulo<\/h3>\n<p>S\u00f3 queremos personalizar a vari\u00e1vel title se estivermos na primeira p\u00e1gina. Para todas as outras p\u00e1ginas, queremos deix\u00e1-lo em paz (basta devolv\u00ea-lo como est\u00e1). Mas como sabemos quando estamos na primeira p\u00e1gina?<\/p>\n<p>Podemos tirar proveito das <a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tags condicionais do WordPress<\/a>, que s\u00e3o um monte de fun\u00e7\u00f5es \u00fateis que retornam true ou false com base em uma condi\u00e7\u00e3o. Estes s\u00e3o mais comumente usados \u200b\u200bpara perguntar se estamos em uma determinada p\u00e1gina ou modelo. Podemos simplesmente perguntar &#8220;Estamos na primeira p\u00e1gina?&#8221;. Se este m\u00e9todo retornar true, somente ent\u00e3o modificaremos a vari\u00e1vel title.<\/p>\n<p>Vale a pena notar que existem duas tags condicionais para a p\u00e1gina inicial, ou seja, <code>is_home()<\/code>e <code>is_front_page().<\/code>Estas diferem dependendo da sua configura\u00e7\u00e3o de &#8220;Leitura&#8221; \u2013 se sua p\u00e1gina inicial est\u00e1 ou n\u00e3o mostrando as postagens mais recentes ou est\u00e1 definida como uma p\u00e1gina fixa. Se voc\u00ea seguir este tutorial com uma nova instala\u00e7\u00e3o do WordPress com a configura\u00e7\u00e3o padr\u00e3o, voc\u00ea usar\u00e1 <code>is_front_page()<\/code>.<\/p>\n<h3>Obtendo o nome do site WordPress<\/h3>\n<p>Agora sabemos qual filtro usar e como garantir que s\u00f3 mudemos o t\u00edtulo se estivermos no lugar certo. Mas qual deveria ser o t\u00edtulo? Normalmente, o t\u00edtulo da p\u00e1gina inicial seria o nome do seu site WordPress. Mas como obtemos essa informa\u00e7\u00e3o?<\/p>\n<p>Para recuperar informa\u00e7\u00f5es sobre a instala\u00e7\u00e3o atual do WordPress, usamos a <code>bloginfo()<\/code>fun\u00e7\u00e3o. Como par\u00e2metro pedimos para retornar o nome do site, o que \u00e9 feito configurando o par\u00e2metro para &#8216; <code>name<\/code>&#8216;. E porque este \u00e9 um filtro e precisamos devolv\u00ea-lo, n\u00e3o echo, usamos seu m\u00e9todo irm\u00e3o <code>get_bloginfo()<\/code>. A chamada <code>bloginfo()<\/code>sempre ecoar\u00e1 a sa\u00edda.<\/p>\n<pre><code>add_filter('wp_title', 'wptutorial_title_filter');\nfunction wptutorial_title_filter($title) {\n    if (is_front_page()) {\n        return get_bloginfo('name');\n    }\n    return $title;\n}<\/code><\/pre>\n<p>Se voc\u00ea atualizar sua p\u00e1gina inicial, ver\u00e1 que o nome do seu site aparece na <code>&lt;title&gt;<\/code>tag (e na guia do navegador)! Nosso filtro afeta apenas a p\u00e1gina inicial, portanto, quaisquer outras p\u00e1ginas, como postagem \u00fanica, ainda devem retornar o mesmo que antes; o t\u00edtulo da postagem.<\/p>\n<h2>Sa\u00edda de imagens em destaque em arquivos de modelo<\/h2>\n<p>Anteriormente, quando configuramos os suportes do tema, adicionamos suporte para imagens em destaque. Com isso ativado, agora podemos produzir essas imagens em nossos modelos. Vamos fazer isso agora!<\/p>\n<p>Abra <code>index.php<\/code>e encontre um lugar para eles dentro do loop. Eu escolhi coloc\u00e1-lo ap\u00f3s o t\u00edtulo, mas cabe a voc\u00ea onde voc\u00ea quer. Voc\u00ea usa a fun\u00e7\u00e3o <code>the_post_thumbnail()<\/code>para produzir a imagem. \u00c9 recomend\u00e1vel primeiro verificar se a postagem ainda definiu uma imagem em destaque, o que fazemos usando <code>has_post_thumbnail()<\/code>.<\/p>\n<pre><code>...\n    &lt;h2&gt;&lt;a href=\"&lt;?php the_permalink(); ?&gt;\" title=\"&lt;?php the_title(); ?&gt;\"&gt;&lt;?php the_title(); ?&gt;&lt;\/a&gt;&lt;\/h2&gt;\n    &lt;?php if (has_post_thumbnail()) {\n        the_post_thumbnail();\n    } ?&gt;\n    &lt;?php the_excerpt(); ?&gt;\n...<\/code><\/pre>\n<p>Se sua postagem n\u00e3o tiver uma imagem em destaque, voc\u00ea n\u00e3o ver\u00e1 nada sendo exibido ap\u00f3s o t\u00edtulo. No entanto, se voc\u00ea definir uma imagem em destaque em uma de suas postagens, <code>the_post_thumbnail()<\/code>geraria uma <code>&lt;img&gt;<\/code>tag com a imagem escolhida. Esta fun\u00e7\u00e3o aceita alguns par\u00e2metros adicionais. Por exemplo, voc\u00ea pode definir qual tamanho de imagem deseja usar e controlar os atributos adicionados \u00e0 imagem. Como de costume, encorajo voc\u00ea a dar uma olhada r\u00e1pida na <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/the_post_thumbnail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documenta\u00e7\u00e3o<\/a> e ajustar ao seu gosto.<\/p>\n<h2>Documenta\u00e7\u00e3o sobre os m\u00e9todos usados<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_action<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/load_theme_textdomain\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">load_theme_textdomain<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/get_stylesheet_directory\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_stylesheet_directory<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_theme_support\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_theme_support<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_filter\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_filter<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/is_front_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">is_front_page<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_bloginfo\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_bloginfo<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/has_post_thumbnail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">has_post_thumbnail<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/the_post_thumbnail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">the_post_thumbnail<\/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>Esta li\u00e7\u00e3o continua adicionando o c\u00f3digo b\u00e1sico necess\u00e1rio para configurar um tema WordPress. Aprendemos a adicionar suportes de temas e filtrar o t\u00edtulo da primeira p\u00e1gina.<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[930,898,898,722,722,837,1110,806,806,837,930,846,846,867,867],"tags":[1170],"class_list":["post-233753","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-assuntos","category-codigo-2","category-desenvolvedor","category-guia-para-iniciantes","category-n-a","category-php-8","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233753","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=233753"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233753\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233753"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}