{"id":233886,"date":"2023-02-23T09:46:00","date_gmt":"2023-02-23T06:46:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233886"},"modified":"2022-11-11T12:59:39","modified_gmt":"2022-11-11T09:59:39","slug":"tutorial-de-tema-wordpress-para-iniciantes-parte-9-menus-e-areas-de-widget","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/tutorial-de-tema-wordpress-para-iniciantes-parte-9-menus-e-areas-de-widget\/","title":{"rendered":"Tutorial de Tema WordPress para Iniciantes \u2013 Parte 9: Menus e \u00c1reas de Widget"},"content":{"rendered":"\n<p>Esta li\u00e7\u00e3o aborda como adicionar dois recursos principais do WordPress ao nosso tema; menus e \u00e1reas de widgets. Aprendemos como registrar um local para o menu de navega\u00e7\u00e3o principal de um site e produzir o menu em nossos modelos, al\u00e9m de permitir a adi\u00e7\u00e3o de widgets em nossa barra lateral e \u00e1rea de rodap\u00e9.<\/p>\n<p>Voc\u00ea deve ter notado que nem &quot;Menus&quot; nem &quot;Widgets&quot; est\u00e3o acess\u00edveis no menu &quot;Apar\u00eancia&quot; no painel de administra\u00e7\u00e3o. Isso ocorre porque nosso tema ainda n\u00e3o suporta isso. Vamos corrigir isso nesta li\u00e7\u00e3o &#8211; come\u00e7ando com menus .<\/p>\n<h2>Menus do WordPress<\/h2>\n<p>H\u00e1 duas partes na adi\u00e7\u00e3o de menus em seu tema. Primeiro voc\u00ea precisa definir um ou mais locais de menu em seu arquivo <code>functions.php<\/code>. Um exemplo \u00e9 um menu principal que estar\u00e1 no cabe\u00e7alho de todas as p\u00e1ginas. A segunda parte \u00e9 adicionar algum c\u00f3digo no local em que voc\u00ea deseja que o menu seja gerado. Por exemplo, <code>header.php<\/code>no local em que voc\u00ea deseja colocar o menu principal.<\/p>\n<h3>Registrando um local de menu<\/h3>\n<p>Neste tutorial, adicionaremos um local de menu para a navega\u00e7\u00e3o principal do site e colocaremos sua sa\u00edda em nosso arquivo <code>header.php<\/code>. Vamos come\u00e7ar registrando a localiza\u00e7\u00e3o em <code>functions.php<\/code>, o que \u00e9 feito usando a fun\u00e7\u00e3o <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">register_nav_menu<\/a> :<\/p>\n<pre><code>add_action('init', 'wptutorial_register_menu');\nfunction wptutorial_register_menu() {\n    register_nav_menu('main-nav', __('Main Navigation', 'wptutorial'));\n}<\/code><\/pre>\n<p>Precisamos nos conectar ao gancho <code>init<\/code>, que o WordPress decidiu ser um bom &#8220;ponto de verifica\u00e7\u00e3o&quot; para registrar locais de menu. Dentro de nossa fun\u00e7\u00e3o chamamos <code>register_nav_menu()<\/code>que aceita um m\u00ednimo de dois par\u00e2metros; o identificador do menu, que \u00e9 um slug exclusivo que voc\u00ea usar\u00e1 como identificador ao renderizar o menu, e o nome vis\u00edvel do menu que aparece no painel de administra\u00e7\u00e3o. Observe que eu envolvi o nome <code>__()<\/code>para torn\u00e1-lo traduz\u00edvel, como aprendemos 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\">etapa anterior<\/a>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0df88967.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-151855-61e4d0df88967.png\" alt=\"Tutorial de Tema WordPress para Iniciantes \u2013 Parte 9: Menus e \u00c1reas de Widget\" ><\/a><\/p>\n<p>Se voc\u00ea atualizar seu painel de administra\u00e7\u00e3o, agora voc\u00ea deve ver um novo item de submenu em &#8220;Apar\u00eancia&#8221;; &#8220;Menus&#8221;. Parab\u00e9ns, seu tema agora suporta a cria\u00e7\u00e3o de menus!<\/p>\n<p>Se voc\u00ea n\u00e3o est\u00e1 familiarizado com a cria\u00e7\u00e3o e administra\u00e7\u00e3o de menus no WordPress, <a href=\"https:\/\/wordpress.org\/support\/article\/appearance-menus-screen\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">este \u00e9 um bom guia<\/a> para voc\u00ea.<\/p>\n<p>Crie um novo menu em &#8220;Apar\u00eancia &gt; Menus&#8221; \u2013 ele pode conter o que voc\u00ea quiser, acabei de adicionar os posts fict\u00edcios que criei no meu WordPress.<\/p>\n<p>Depois de salvar seu primeiro menu, uma nova se\u00e7\u00e3o chamada &quot;Configura\u00e7\u00f5es do menu&quot; aparecer\u00e1 abaixo da \u00e1rea de edi\u00e7\u00e3o do menu, permitindo que voc\u00ea escolha um local para esse menu. Deve listar um local dispon\u00edvel, que \u00e9 o que fizemos; &quot;Navega\u00e7\u00e3o Principal&quot;.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0e03b2f8.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-151855-61e4d0e03b2f8.png\" alt=\"Tutorial de Tema WordPress para Iniciantes \u2013 Parte 9: Menus e \u00c1reas de Widget\" ><\/a><\/p>\n<p>Marque a op\u00e7\u00e3o &quot;Navega\u00e7\u00e3o principal&quot; e clique em Salvar. Agora, seu menu rec\u00e9m-criado est\u00e1 conectado ao local e ser\u00e1 exibido automaticamente onde quer que voc\u00ea adicione o c\u00f3digo para gerar esse local de menu. Vamos fazer isso agora.<\/p>\n<h3>Sa\u00edda de um local de menu em um modelo<\/h3>\n<p>Abra <code>header.php<\/code>e onde voc\u00ea quiser que a sa\u00edda do menu esteja, adicione uma chamada para <code>wp_nav_menu()<\/code>. Esta fun\u00e7\u00e3o aceita um monte de argumentos em uma matriz para realmente personalizar a sa\u00edda do menu. Mais importante, precisamos do par\u00e2metro que informa para buscar o local da &#8220;Navega\u00e7\u00e3o Principal&#8221;. Para fazer isso, adicionamos o argumento &#8216; <code>theme_location<\/code>&#8216; e o configuramos para o handle do nosso menu; &#8216; <code>main-nav<\/code>&#8216;.<\/p>\n<p>Eu adicionei a sa\u00edda do menu logo ap\u00f3s o in\u00edcio da <code>&lt;body&gt;<\/code>tag, mas se voc\u00ea desenvolveu seus modelos com HTML, decida por si mesmo onde deseja que o menu apare\u00e7a.<\/p>\n<pre><code>...\n&lt;body &lt;?php body_class(); ?&gt;&gt;\n    &lt;nav class=\"main-nav\"&gt;&lt;?php wp_nav_menu(['theme_location' =&gt; 'main-nav']); ?&gt;&lt;\/nav&gt;<\/code><\/pre>\n<p>Atualize seu frontend e voc\u00ea dever\u00e1 ver o menu que voc\u00ea criou no admin como uma lista n\u00e3o ordenada no in\u00edcio do modelo.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0e11c102.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-151855-61e4d0e11c102.png\" alt=\"Tutorial de Tema WordPress para Iniciantes \u2013 Parte 9: Menus e \u00c1reas de Widget\" ><\/a><\/p>\n<p>Como de costume, encorajo voc\u00ea a se aprofundar um pouco mais nos par\u00e2metros da documenta\u00e7\u00e3o <code>wp_nav_menu<\/code>do <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress Codex<\/a> e brincar com a forma como deseja que a sa\u00edda seja. Por exemplo: voc\u00ea pode fazer com que n\u00e3o saia em uma lista HTML, voc\u00ea pode limitar os itens de menu a apenas certos n\u00edveis (para evitar submenus) e muito mais.<\/p>\n<p>Se voc\u00ea est\u00e1 curioso sobre a parte de estilo; d\u00ea uma olhada nas classes que o WordPress adiciona automaticamente a cada item de menu. Voc\u00ea poder\u00e1 adicionar facilmente estilos para o item de menu ativo, itens que possuem itens filhos, item pai de um item filho ativo, etc.<\/p>\n<p>Nota: Qualquer usu\u00e1rio de tema sempre pode criar v\u00e1rios menus e optar por exibi-los fora dos locais registrados de um tema usando widgets. No entanto, para fazer isso, seu tema precisa definir algumas \u00e1reas de widgets! Vamos fazer isso a seguir.<\/p>\n<h2>\u00c1reas de widgets<\/h2>\n<p>As \u00e1reas de widget funcionam de maneira bastante semelhante na forma como os menus funcionam. Voc\u00ea registra um local (para widgets, voc\u00ea define uma \u00e1rea onde o usu\u00e1rio do tema pode colocar widgets), e onde quer que o local\/\u00e1rea apare\u00e7a em seus modelos, voc\u00ea adiciona um pouco de c\u00f3digo que se refere ao ID do identificador fornecido em seu C\u00f3digo de Registo.<\/p>\n<p>Vamos definir uma \u00e1rea de widget em nossa barra lateral e outra no rodap\u00e9. \u00c9 comum que os temas forne\u00e7am v\u00e1rias \u00e1reas de widget no rodap\u00e9 para dividi-las bem em colunas, mas neste tutorial adicionaremos apenas uma ao rodap\u00e9.<\/p>\n<p>As \u00e1reas de widgets s\u00e3o chamadas de &#8220;barras laterais&#8221; no c\u00f3digo do WordPress, mas n\u00e3o \u00e9 exclusivamente para a barra lateral direita dos velhos tempos em sites. Parece que algum nome herdado ficou de uma \u00e9poca em que os sites geralmente tinham apenas uma \u00e1rea de widget na barra lateral. N\u00e3o pense que &#8220;barras laterais&#8221; s\u00f3 podem se referir a barras laterais reais.<\/p>\n<h3>Registrar \u00e1reas de widgets<\/h3>\n<p>Come\u00e7amos registrando duas \u00e1reas de widgets em nosso arquivo <code>functions.php<\/code>. Usamos a fun\u00e7\u00e3o <code>register_sidebar<\/code>para registrar nossas sidebars, hooked on <code>widgets_init<\/code>hook, que o WordPress definiu como o melhor hook para registrar \u00e1reas de widgets (e widgets personalizados).<\/p>\n<pre><code>add_action('widgets_init', 'wptutorial_register_sidebar');\nfunction wptutorial_register_sidebar() {\n    register_sidebar([\n        'name' =&gt; __('Sidebar Widget Area', 'wptutorial'),\n        'id' =&gt; 'sidebar-area'\n    ]);\n    register_sidebar([\n        'name' =&gt; __('Footer Widget Area', 'wptutorial'),\n        'id' =&gt; 'footer-area'\n    ]);\n}<\/code><\/pre>\n<p>A <code>register_sidebar()<\/code>fun\u00e7\u00e3o aceita v\u00e1rios argumentos, no m\u00ednimo voc\u00ea precisa do argumento &#8216;id&#8217; e &#8216;name&#8217;. Existem par\u00e2metros dispon\u00edveis para definir como voc\u00ea deseja que os wrappers HTML do widget sejam gerados.<\/p>\n<p>Atualize seu painel de administra\u00e7\u00e3o e agora voc\u00ea deve ver o item de menu &#8220;Widgets&#8221; aparecer em &#8220;Apar\u00eancia&#8221;. No painel de administra\u00e7\u00e3o &#8220;Widgets&#8221; voc\u00ea pode ver duas \u00e1reas de widgets dispon\u00edveis na \u00e1rea direita; que \u00e9 a nossa &#8220;\u00c1rea de widget da barra lateral&#8221; e &#8220;\u00c1rea de widget de rodap\u00e9&#8221;.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151855-61e4d0e22862e.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-151855-61e4d0e22862e.png\" alt=\"Tutorial de Tema WordPress para Iniciantes \u2013 Parte 9: Menus e \u00c1reas de Widget\" ><\/a><\/p>\n<p>Coloque um widget aleat\u00f3rio em nossa Barra Lateral ou \u00c1rea de Widget de Rodap\u00e9, apenas para que voc\u00ea possa v\u00ea-lo em a\u00e7\u00e3o.<\/p>\n<h3>Sa\u00edda de uma \u00e1rea de widget em um modelo<\/h3>\n<p>A \u00faltima parte \u00e9 a sa\u00edda das \u00e1reas de widgets para nossos modelos. Para isso usamos a fun\u00e7\u00e3o <code>dynamic_sidebar()<\/code>e fornecemos o handle como par\u00e2metro. Abra <code>sidebar.php<\/code>e adicione o seguinte dentro das <code>&lt;aside&gt;<\/code>tags:<\/p>\n<pre><code>&lt;aside class=\"sidebar\"&gt;\n    &lt;ul&gt;&lt;?php dynamic_sidebar('sidebar-area'); ?&gt;&lt;\/ul&gt;\n&lt;\/aside&gt;<\/code><\/pre>\n<p>Observe que eu o envolvi dentro de uma tag de lista n\u00e3o ordenada (<code>&lt;ul&gt;<\/code>). Isso ocorre porque, como sa\u00edda padr\u00e3o, <code>dynamic_sidebar<\/code>todos os widgets agrupados em <code>&lt;li&gt;<\/code>itens. Eu encorajo voc\u00ea a brincar com os par\u00e2metros de sa\u00edda se voc\u00ea n\u00e3o gosta de widgets sendo uma lista.<\/p>\n<p>Quanto ao rodap\u00e9, n\u00f3s o adicionamos no in\u00edcio de <code>footer.php<\/code>, envolto em uma <code>&lt;footer&gt;<\/code>tag (se desejar).<\/p>\n<pre><code>    &lt;footer&gt;\n        &lt;ul&gt;&lt;?php dynamic_sidebar('footer-area'); ?&gt;&lt;\/ul&gt;\n    &lt;\/footer&gt;\n    &lt;?php wp_footer(); ?&gt;\n...<\/code><\/pre>\n<p>\u00c9 isso para menus e \u00e1reas de widgets. Seu tema agora tem a flexibilidade do usu\u00e1rio para criar um novo menu e usar um widget para exibi-lo na barra lateral ou no rodap\u00e9. Na <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-10-fleshing-out-templates\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pr\u00f3xima li\u00e7\u00e3o<\/a> desta s\u00e9rie de tutoriais vamos criar mais templates para o nosso tema.<\/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\/register_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">registrar_nav_menu<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_nav_menu<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_sidebar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">registrar_sidebar<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/dynamic_sidebar\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">barra lateral_din\u00e2mica<\/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 aborda como adicionar menus de navega\u00e7\u00e3o registrando a localiza\u00e7\u00e3o do menu e tamb\u00e9m registrando e colocando uma \u00e1rea de widget no WordPress.<\/p>\n","protected":false},"author":1,"featured_media":224072,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[930,898,898,753,722,722,837,1110,753,837,930,846,846,867,867],"tags":[1170],"class_list":["post-233886","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-assuntos","category-codigo-2","category-codigo-aberto","category-desenvolvedor","category-guia-para-iniciantes","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\/233886","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=233886"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233886\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/224072"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}