{"id":231999,"date":"2023-01-04T12:38:00","date_gmt":"2023-01-04T09:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231999"},"modified":"2022-11-10T07:10:22","modified_gmt":"2022-11-10T04:10:22","slug":"sobre-funcoes-e-plugins-obrigatorios","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/sobre-funcoes-e-plugins-obrigatorios\/","title":{"rendered":"Sobre fun\u00e7\u00f5es e plugins obrigat\u00f3rios"},"content":{"rendered":"\n<p>Eu tenho trabalhado em um pequeno projeto, mais uma aplica\u00e7\u00e3o web do que um site, que exigiu o desenvolvimento de um tema personalizado e uma funcionalidade bem acoplada, mas muito espec\u00edfica.<\/p>\n<p>Este \u00e9 um projeto muito focado (sobre o qual provavelmente falarei em algum momento no futuro), mas ao trabalhar nele, ele me for\u00e7ou a voltar um pouco ao aspecto de desenvolvimento de temas do desenvolvimento do WordPress.<\/p>\n<p>N\u00e3o, n\u00e3o estou fazendo nenhum design \u2013 felizmente \u2013 mas estou tendo que trabalhar em customiza\u00e7\u00f5es de temas de uma perspectiva funcional. Ao fazer isso, por\u00e9m, me fez revisitar o necess\u00e1rio <code>functions.php<\/code>e algumas considera\u00e7\u00f5es que nunca tive antes.<\/p>\n<p>Al\u00e9m disso, isso me fez olhar mais profundamente para o uso <code>mu-plugins<\/code>e perguntar quando eles s\u00e3o necess\u00e1rios e por que eu n\u00e3o os usei mais no passado (ou mesmo quando realmente seria necess\u00e1rio us\u00e1-los).<\/p>\n<p>Ent\u00e3o vou me tornar um pouco po\u00e9tico sobre isso.<\/p>\n<pre><code>TL;DR<\/code><\/pre>\n<p>Quando eu estava desenvolvendo o tema, <code>functions.php<\/code>era usado para duas coisas (o que \u00e9 problem\u00e1tico por si s\u00f3), mas ainda assim:<\/p>\n<ol>\n<li>para ativar ou desativar recursos em temas,<\/li>\n<li>para definir a funcionalidade espec\u00edfica do tema.<\/li>\n<\/ol>\n<p>O <a href=\"https:\/\/developer.wordpress.org\/themes\/basics\/theme-functions\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Theme Developer Handbook<\/a> diz:<\/p>\n<blockquote>\n<p>O <code>functions.php<\/code>arquivo \u00e9 onde voc\u00ea adiciona recursos exclusivos ao seu tema WordPress. Ele pode ser usado para se conectar \u00e0s principais fun\u00e7\u00f5es do WordPress para tornar seu tema mais modular, extens\u00edvel e funcional.<\/p>\n<p>Fun\u00e7\u00f5es do Tema, Manual do Desenvolvedor de Temas<\/p>\n<\/blockquote>\n<p>E eu entendo, mas da minha perspectiva e como o WordPress evoluiu, acho que <code>functions.php<\/code>deveria ser dedicado \u00e0 funcionalidade espec\u00edfica do tema em termos de coisas que se conectam diretamente ao n\u00facleo, como:<\/p>\n<ul>\n<li>funcionalidade do personalizador,<\/li>\n<li>funcionalidade do menu,<\/li>\n<li>registro de roteiro e estilo,<\/li>\n<li>e assim por diante.<\/li>\n<\/ul>\n<p>Mas se houver algo que precise ser executado durante um dos ganchos e for mais ao longo das linhas da l\u00f3gica espec\u00edfica do dom\u00ednio, isso <strong>n\u00e3o<\/strong> pertencer\u00e1 a esse arquivo.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e52f7b3b5.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-158759-61e6e52f7b3b5.png\" alt=\"Sobre fun\u00e7\u00f5es e plugins obrigat\u00f3rios\" ><\/a><\/p>\n<p>No entanto, isso levanta uma quest\u00e3o: onde reside a funcionalidade espec\u00edfica do dom\u00ednio?<\/p>\n<h3>Insira os plug-ins obrigat\u00f3rios<\/h3>\n<p>Eu sei que ver coisas como <code>inc<\/code>diret\u00f3rios est\u00e3o se tornando mais comuns, mas n\u00e3o estou preocupado com isso quando falo sobre desenvolvimento de temas, especialmente quando o desenvolvimento de temas n\u00e3o \u00e9 meu foco e essa estrutura de diret\u00f3rios espec\u00edfica n\u00e3o \u00e9 meu estilo.<\/p>\n<p>De qualquer forma, quando se trata de solu\u00e7\u00f5es altamente especializadas (onde uma solu\u00e7\u00e3o \u00e9 uma combina\u00e7\u00e3o de apresenta\u00e7\u00e3o e funcionalidade fortemente focada), come\u00e7o a pensar em <code>mu-plugins<\/code>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158759-61e6e536dbfe7.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-158759-61e6e536dbfe7.png\" alt=\"Sobre fun\u00e7\u00f5es e plugins obrigat\u00f3rios\" ><\/a><\/p>\n<p>E a raz\u00e3o pela qual eu n\u00e3o penso em um plugin padr\u00e3o do WordPress \u00e9 porque eles geralmente s\u00e3o projetados para funcionar com qualquer tema e adicionar funcionalidades. N\u00e3o \u00e9 assim com <code>mu-plugins<\/code>.<\/p>\n<blockquote>\n<p>Plugins obrigat\u00f3rios (tamb\u00e9m conhecidos como mu-plugins) s\u00e3o plugins instalados em um diret\u00f3rio especial dentro da pasta de conte\u00fado e que s\u00e3o ativados automaticamente em todos os sites da instala\u00e7\u00e3o.<\/p>\n<p><a href=\"https:\/\/wordpress.org\/support\/article\/must-use-plugins\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Plugins obrigat\u00f3rios<\/a>, WordPress.org<\/p>\n<\/blockquote>\n<p>Ent\u00e3o aqui est\u00e1 o meu processo de pensamento:<\/p>\n<ol>\n<li>Os temas s\u00e3o para apresenta\u00e7\u00e3o<\/li>\n<li>Plugins s\u00e3o para funcionalidade.<\/li>\n<li>Os plug-ins s\u00e3o projetados para serem usados \u200b\u200bindependentemente de um tema e em toda a extens\u00e3o de um site.<\/li>\n<li>Os plug-ins obrigat\u00f3rios s\u00e3o plug-ins ativados e em uso por padr\u00e3o<\/li>\n<li>Portanto, a l\u00f3gica espec\u00edfica do dom\u00ednio para uma solu\u00e7\u00e3o especializada deve residir em um plug-in de uso obrigat\u00f3rio.<\/li>\n<\/ol>\n<p>Claro, pode-se argumentar que alguns temas podem exigir funcionalidades obrigat\u00f3rias, mas isso ainda n\u00e3o se encaixa com a ideia de que a funcionalidade deve residir em um plug-in obrigat\u00f3rio?<\/p>\n<p>Independentemente disso, a abordagem que tenho seguido \u00e9 esta:<\/p>\n<ol>\n<li>A funcionalidade que associa especificamente os recursos do tema ao n\u00facleo do WordPress entra em <code>functions.php<\/code>.<\/li>\n<li>Funcionalidade que \u00e9 l\u00f3gica de dom\u00ednio, mas requer que toda a solu\u00e7\u00e3o funcione reside em um arquivo <code>mu-plugin<\/code>.<\/li>\n<\/ol>\n<p>Neste ponto <a href=\"https:\/\/tommcfarlin.com\/from-self-employment-to-employment-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">da minha carreira<\/a>, n\u00e3o fa\u00e7o muito trabalho focado em nada al\u00e9m do back-end, mas nas raras oportunidades que tenho para expandir o trabalho que estou fazendo, acho que ainda estou tentando ser t\u00e3o anal\u00edtico e atencioso sobre a forma como estou construindo o projeto.<\/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>Fun\u00e7\u00f5es e plug-ins de uso obrigat\u00f3rio s\u00e3o coisas que merecem considera\u00e7\u00e3o, especialmente ao criar solu\u00e7\u00f5es altamente especializadas.<\/p>\n","protected":false},"author":1,"featured_media":158760,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[898,722,920,806,846,867],"tags":[1170],"class_list":["post-231999","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-outro","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\/231999","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=231999"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/231999\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/158760"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=231999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=231999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=231999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}