{"id":6749,"date":"2018-07-30T15:55:12","date_gmt":"2018-07-30T18:55:12","guid":{"rendered":"https:\/\/blog.hostinger.io\/br-tutoriais\/?p=6749"},"modified":"2025-12-18T11:59:31","modified_gmt":"2025-12-18T14:59:31","slug":"criar-plugin-wordpress","status":"publish","type":"post","link":"\/br\/tutoriais\/criar-plugin-wordpress","title":{"rendered":"Como criar um plugin WordPress: tutorial completo"},"content":{"rendered":"<p>O WordPress tem um cat&aacute;logo gigantesco de plugins com funcionalidades adicionais para a plataforma. Al&eacute;m disso, os plugins podem agregar novos recursos ao seu site WordPress sem que voc&ecirc; precise mudar o c&oacute;digo principal da p&aacute;gina.<\/p><p>Existem milhares de plugins gratuitos e pagos para voc&ecirc; escolher, mas pode haver momentos nos quais voc&ecirc; precisar&aacute; de uma fun&ccedil;&atilde;o espec&iacute;fica que n&atilde;o est&aacute; dispon&iacute;vel. Nesses casos, talvez voc&ecirc; precise criar o seu pr&oacute;prio plugin WordPress.<\/p><p>Neste tutorial, voc&ecirc; aprender&aacute; o passo-a-passo para criar um plugin WordPress. N&oacute;s tamb&eacute;m vamos trazer dicas de boas pr&aacute;ticas para escrever o c&oacute;digo e criar os melhores plugins poss&iacute;veis.<\/p><p>Adicionalmente, cobriremos a diferen&ccedil;a entre um plugin e um tema, explicando como eles funcionam dentro da plataforma do WordPress.<\/p><h2 class=\"wp-block-heading\" id=\"h-o-que-voce-precisa-para-criar-um-plugin-wordpress\"><strong>O Que Voc&ecirc; Precisa Para Criar um Plugin WordPress<\/strong><\/h2><p>Eis a lista do que voc&ecirc; precisar&aacute; para criar um plugin WordPress:<\/p><ul class=\"wp-block-list\">\n<li>Um editor de texto<\/li>\n\n\n\n<li><a href=\"\/br\/tutoriais\/como-configurar-o-cliente-filezilla\">Acesso FTP<\/a> ao seu plano de hospedagem<\/li>\n\n\n\n<li>Uma <a href=\"\/br\/tutoriais\/como-instalar-o-wordpress\">instala&ccedil;&atilde;o WordPress<\/a> ativa<\/li>\n<\/ul><p>Voc&ecirc; precisar&aacute; do editor de texto para escrever o c&oacute;digo do plugin. Alguns <a href=\"\/br\/tutoriais\/melhores-editores-html\/\">editores HTML<\/a> populares incluem o <a href=\"https:\/\/notepad-plus-plus.org\/\" target=\"_blank\" rel=\"noopener\">Notepad++<\/a> e o <a href=\"https:\/\/atom.io\/\" target=\"_blank\" rel=\"noopener\">Atom<\/a>.<\/p><p>Ap&oacute;s instalar o editor de texto, conecte-o ao seu servidor FTP para realizar a modifica&ccedil;&atilde;o de c&oacute;digo.<\/p><p>Em seguida, configure um cliente FTP para fazer o upload do plugin ao seu site. N&oacute;s recomendamos usar o software FileZilla, pois ele &eacute; bastante simples de ser configurado.<\/p><p>Por fim, certifique-se de que voc&ecirc; tem uma instala&ccedil;&atilde;o do WordPress ativa e atualizada. Existem v&aacute;rias maneiras de <a href=\"\/br\/tutoriais\/como-atualizar-o-wordpress\/\">atualizar o WordPress<\/a> caso voc&ecirc; tenha desativado as atualiza&ccedil;&otilde;es autom&aacute;ticas. N&atilde;o se esque&ccedil;a de fazer o <a href=\"\/br\/tutoriais\/como-fazer-backup-do-seu-site-wordpress\">backup dos seus arquivos<\/a> antes de realizar o update para evitar a perda de dados.<\/p><p>Alternativamente, voc&ecirc; pode <a href=\"\/br\/tutoriais\/localhost-wordpress\">instalar o WordPress localmente<\/a>. Este m&eacute;todo n&atilde;o requer um site ativo, tampouco um dom&iacute;nio ou um plano de hospedagem. Dessa forma, voc&ecirc; pode testar o seu plugin sem que seus visitantes vejam as mudan&ccedil;as imediatamente.<\/p><p>Ter conhecimentos b&aacute;sicos de PHP ser&aacute; uma vantagem para o processo de desenvolvimento do seu plugin. Isso porque voc&ecirc; precisar&aacute; escrever fun&ccedil;&otilde;es personalizadas e trabalhar com fun&ccedil;&otilde;es pr&oacute;prias do WordPress. Ou seja: voc&ecirc; ao menos precisar&aacute; ter alguma familiaridade com conven&ccedil;&otilde;es de nomes e estruturas de arquivos na linguagem PHP.<\/p><h2 class=\"wp-block-heading\" id=\"h-plugins-wordpress-x-temas-wordpress\"><strong>Plugins WordPress x Temas WordPress<\/strong><\/h2><p>A funcionalidade de um site WordPress pode ser alterada por meio de plugins e temas.<\/p><p>Temas do WordPress t&ecirc;m um arquivo <strong>functions.php<\/strong> armazenado na pasta <strong>\/wp-includes\/<\/strong>. Ele permite que voc&ecirc; adicione c&oacute;digos personalizados para criar novas fun&ccedil;&otilde;es.<\/p><p>Este m&eacute;todo &eacute; eficaz para altera&ccedil;&otilde;es menores, mas n&atilde;o &eacute; pr&aacute;tico para mudan&ccedil;as maiores, que afetem o site como um todo.<\/p><p>Isso porque as funcionalidades escritas no arquivo <strong>functions.php<\/strong> dependem se o tema est&aacute; ativo ou n&atilde;o. Se voc&ecirc; trocar ou desativar o tema, o WordPress reverter&aacute; as mudan&ccedil;as feitas no arquivo e exibir&aacute; uma mensagem de erro quando o site tentar chamar as fun&ccedil;&otilde;es perdidas.<\/p><p>A n&atilde;o ser que voc&ecirc; use um <em>child theme<\/em>, atualizar o tema tamb&eacute;m substituir&aacute; o arquivo <strong>functions.php<\/strong>, te for&ccedil;ando a restaurar manualmente os c&oacute;digos personalizados.<\/p><p>&Eacute; por isso que criar um plugin personalizado &eacute; t&atilde;o &uacute;til. Ao fazer isso, voc&ecirc; facilita a modifica&ccedil;&atilde;o de aspectos padr&atilde;o do WordPress para que a plataforma se adapte &agrave;s suas necessidades.<\/p><p>Voc&ecirc; pode adicionar plugins a qualquer instala&ccedil;&atilde;o WordPress. Recursos trazidos pelo plugin permanecer&atilde;o funcionais mesmo que voc&ecirc; troque de tema. Al&eacute;m disso, voc&ecirc; poder&aacute; atualizar o WordPress sem perder fun&ccedil;&otilde;es j&aacute; criadas, economizando seu tempo e esfor&ccedil;o.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"\/br\/hospedagem-wordpress\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2024\/06\/BR-New-WP_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-44638\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2024\/06\/BR-New-WP_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2024\/06\/BR-New-WP_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2024\/06\/BR-New-WP_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2024\/06\/BR-New-WP_in-text-banner.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div><h2 class=\"wp-block-heading\" id=\"h-o-que-sao-hooks-wordpress\"><strong>O Que S&atilde;o Hooks WordPress?<\/strong><\/h2><p>Os plugins WordPress interagem com o c&oacute;digo nuclear da plataforma por meio de hooks (ou ganchos). Existem dois tipos de hooks no WordPress:<\/p><ul class=\"wp-block-list\">\n<li><strong>Hooks de a&ccedil;&atilde;o<\/strong> &ndash; adicionam ou removem fun&ccedil;&otilde;es.<\/li>\n\n\n\n<li><strong>Hooks de filtro<\/strong> &ndash; modificam dados produzidos pelas fun&ccedil;&otilde;es.<\/li>\n<\/ul><h3 class=\"wp-block-heading\" id=\"h-acoes-e-hooks-de-acao\"><strong>A&ccedil;&otilde;es e Hooks de A&ccedil;&atilde;o<\/strong><\/h3><p>Uma a&ccedil;&atilde;o &eacute; uma fun&ccedil;&atilde;o PHP chamada por meio de um hook de a&ccedil;&atilde;o espec&iacute;fico sempre que um usu&aacute;rio visita uma p&aacute;gina WordPress. Desenvolvedores web podem adicionar suas pr&oacute;prias fun&ccedil;&otilde;es &agrave; lista de a&ccedil;&otilde;es (ou remover as que j&aacute; existem) adicionando o script de hook de a&ccedil;&atilde;o <strong>wp_head()<\/strong> antes da tag de fechamento (<strong>&lt;\/head&gt;<\/strong>) de qualquer p&aacute;gina.<\/p><p>Os hooks de a&ccedil;&atilde;o s&atilde;o contextuais, o que significa que nem todas as p&aacute;ginas WordPress os chamam. A p&aacute;gina de <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\" target=\"_blank\" rel=\"noopener\">Refer&ecirc;ncia para A&ccedil;&otilde;es de Plugins WordPress<\/a> traz uma lista completa dos hooks de a&ccedil;&atilde;o e os contextos nos quais eles s&atilde;o chamados.<\/p><p><strong>Adicionando Fun&ccedil;&otilde;es a um Hook de A&ccedil;&atilde;o Usando o add_action()<\/strong><\/p><p>Adicionar fun&ccedil;&otilde;es a um hook de a&ccedil;&atilde;o num arquivo de plugin requer chamar a fun&ccedil;&atilde;o <strong>add_action()<\/strong> com ao menos dois par&acirc;metros.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Hook para a a&ccedil;&atilde;o 'init', que &eacute; chamada depois que o WordPress termina de carregar o c&oacute;digo principal\nadd_action( 'init', 'add_Cookie' );\n\/\/ Configura um cookie com o hor&aacute;rio atual do dia\nfunction add_Cookie() {\n setcookie(\"last_visit_time\", date(\"r\"), time()+60*60*24*30, \"\/\");\n}<\/pre><p>O primeiro par&acirc;metro &eacute; o nome do <strong>hook de a&ccedil;&atilde;o<\/strong> ao qual voc&ecirc; quer anexar o callback. J&aacute; o segundo par&acirc;metro cont&eacute;m o nome da <strong>fun&ccedil;&atilde;o<\/strong> que voc&ecirc; pretende executar.<\/p><p>O terceiro par&acirc;metro, opcional, declara a <strong>prioridade<\/strong> da fun&ccedil;&atilde;o. A prioridade padr&atilde;o &eacute; 10, colocando a fun&ccedil;&atilde;o personalizada depois de qualquer uma das nativas.<\/p><p>O quarto par&acirc;metro, tamb&eacute;m opcional, cont&eacute;m o <strong>n&uacute;mero de argumentos<\/strong> ou par&acirc;metros que a fun&ccedil;&atilde;o personalizada pode receber. O valor padr&atilde;o &eacute; 1.<\/p><p><strong>Exemplo: C&oacute;digo de Plugin para Exibir Texto Abaixo do Rodap&eacute; de Cada P&aacute;gina<\/strong><\/p><p>Este exemplo de plugin chama o hook de a&ccedil;&atilde;o <strong>wp_footer()<\/strong> antes da tag de fechamento <strong>&lt;\/body&gt;<\/strong> de cada p&aacute;gina e adiciona uma nova fun&ccedil;&atilde;o, chamada <strong>mfp_Add_Text()<\/strong>. Como ela &eacute; parte de um plugin, a fun&ccedil;&atilde;o continuar&aacute; ativa mesmo caso voc&ecirc; troque de tema.<\/p><p>Salve o exemplo abaixo como um arquivo PHP e fa&ccedil;a o upload dele para a pasta <strong>plugins<\/strong>.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\nNome do Plugin: Adicionar Texto ao Rodap&eacute;\n*\/\n\/\/ Faz o gancho do hook de a&ccedil;&atilde;o 'wp_footer', adiciona a ele a fun&ccedil;&atilde;o 'mfp_Add_Text'\nadd_action(\"wp_footer\", \"mfp_Add_Text\");\n \n\/\/ Define 'mfp_Add_Text'\nfunction mfp_Add_Text()\n{\n  echo \"&lt;p style='color: black;'&gt;Ap&oacute;s o rodap&eacute; ser carregado, meu texto &eacute; adicionado!&lt;\/p&gt;\";\n}<\/pre><p>A captura de tela a seguir mostra o plugin em a&ccedil;&atilde;o ap&oacute;s ser ativado no painel de administra&ccedil;&atilde;o do WordPress:<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"813\" height=\"114\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/plugin-text.png\/public\" alt=\"plugin que adiciona texto ap&oacute;s o rodap&eacute; do site wordpress\" class=\"wp-image-30598\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/plugin-text.png\/w=813,fit=scale-down 813w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/plugin-text.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/plugin-text.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/plugin-text.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 813px) 100vw, 813px\" \/><\/figure><\/div><p>\n\n\n<div><p class=\"important\"><strong>Importante!<\/strong> Na linguagem PHP, seu script inteiro &eacute; analisado antes de ser executado. Escrever uma chamada add_action() no topo do arquivo, na ordem de execu&ccedil;&atilde;o desejada, e depois definir suas fun&ccedil;&otilde;es na mesma ordem tornar&aacute; o arquivo mais f&aacute;cil de ser lido.<\/p><\/div>\n\n\n\n<\/p><p><strong>Removendo Fun&ccedil;&otilde;es de um Hook de A&ccedil;&atilde;o Usando o remove_action()<\/strong><\/p><p>Para remover uma a&ccedil;&atilde;o de um hook de a&ccedil;&atilde;o, escreva uma nova fun&ccedil;&atilde;o chamada <strong>remove_action()<\/strong> e chame a fun&ccedil;&atilde;o que voc&ecirc; escreveu usando o <strong>add_action()<\/strong>.<\/p><p>A fun&ccedil;&atilde;o <strong>remove_action()<\/strong> tamb&eacute;m deve ter ao menos dois par&acirc;metros.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Faz o gancho da a&ccedil;&atilde;o 'init', que &eacute; chamada ap&oacute;s o WordPress carregar seu c&oacute;digo principal, adiciona a fun&ccedil;&atilde;o 'remove_My_Meta_Tags'\nadd_action( 'init', 'remove_My_Meta_Tags' );\n\/\/ Remove a fun&ccedil;&atilde;o 'add_My_Meta_Tags' do hook de a&ccedil;&atilde;o wp_head \nfunction remove_My_Meta_Tags()\n{\n  remove_action( 'wp_head', 'add_My_Meta_Tags');\n}<\/pre><p>O primeiro par&acirc;metro &eacute; o nome do <strong>hook de a&ccedil;&atilde;o<\/strong> ao qual a fun&ccedil;&atilde;o est&aacute; anexada, enquanto o segundo par&acirc;metro cont&eacute;m o nome da <strong>fun&ccedil;&atilde;o<\/strong> que voc&ecirc; quer remover.<\/p><p>O terceiro par&acirc;metro, opcional, declara a <strong>prioridade<\/strong> da fun&ccedil;&atilde;o original. Ela deve ser id&ecirc;ntica &agrave; prioridade originalmente definida quando a a&ccedil;&atilde;o foi adicionada ao hook. Se voc&ecirc; n&atilde;o definiu uma prioridade na fun&ccedil;&atilde;o personalizada, n&atilde;o inclua este par&acirc;metro.<\/p><p>No pr&oacute;ximo exemplo, n&oacute;s vamos impedir que o texto adicional apare&ccedil;a no rodap&eacute; das postagens de segunda-feira.<\/p><p>Uma forma de fazer isso &eacute; usar a fun&ccedil;&atilde;o PHP <strong>date()<\/strong> para obter o dia atual, seguida por tags condicionais para checar se &eacute; segunda-feira. Ap&oacute;s analisar as informa&ccedil;&otilde;es, a p&aacute;gina executar&aacute; a fun&ccedil;&atilde;o <strong>remove_action()<\/strong> em cada postagem publicada nas segundas-feiras.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n \/\/ Faz o gancho da a&ccedil;&atilde;o 'wp_footer', executa a fun&ccedil;&atilde;o 'mfp_Add_Text()'\nadd_action(\"wp_footer\", \"mfp_Add_Text\");\n\/\/ Faz o gancho da a&ccedil;&atilde;o 'wp_head', executa a fun&ccedil;&atilde;o 'mfp_Remove_Text()'\nadd_action(\"wp_head\", \"mfp_Remove_Text\");\n\/\/ Define a fun&ccedil;&atilde;o 'mfp_Add_Text('), que simplesmente reproduz texto simples\nfunction mfp_Add_Text()\n{\n  echo \"&lt;p style='color: #FFF;'&gt;After the footer is loaded, my text is added!&lt;\/p&gt;\";\n}\n\/\/ Define a fun&ccedil;&atilde;o 'mfp_Remove_Text()' para remover a fun&ccedil;&atilde;o anterior da a&ccedil;&atilde;o 'wp_footer'\nfunction mfp_Remove_Text()\n{\n  if (date(\"l\") === \"Monday\") {\n    \/\/ Aponta para a a&ccedil;&atilde;o 'wp_footer', remove dela a fun&ccedil;&atilde;o 'mfp_Add_Text'\n    remove_action(\"wp_footer\", \"mfp_Add_Text\");\n  }\n}<\/pre><h3 class=\"wp-block-heading\" id=\"h-filtros-e-hooks-de-filtro\"><strong>Filtros e Hooks de Filtro<\/strong><\/h3><p>Um filtro &eacute; uma fun&ccedil;&atilde;o PHP chamada por um hook de filtro que modifica dados gerados por fun&ccedil;&otilde;es existentes. Como os hooks de a&ccedil;&atilde;o, os hooks de filtro tamb&eacute;m s&atilde;o contextuais.<\/p><p>A lista completa de hooks de filtro e os contextos nos quais eles s&atilde;o chamados est&atilde;o dispon&iacute;veis na p&aacute;gina de <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Filter_Reference\" target=\"_blank\" rel=\"noopener\">Refer&ecirc;ncia para Filtros de Plugins WordPress<\/a>.<\/p><p><strong>Adicionar Filtros Usando o add_filter()<\/strong><\/p><p>Adicionar uma fun&ccedil;&atilde;o de filtro a um hook de filtro dentro de um arquivo de plugin requer o uso da fun&ccedil;&atilde;o <strong>add_filter()<\/strong> com pelo menos dois par&acirc;metros.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Faz o gancho do hook de a&ccedil;&atilde;o 'the_content' (conte&uacute;do de qualquer postagem), executa a fun&ccedil;&atilde;o 'mfp_Fix_Text_Spacing'\nadd_filter(\"the_content\", \"mfp_Fix_Text_Spacing\");\n\/\/ Corrige automaticamente espa&ccedil;amentos duplos em qualquer postagem\nfunction mfp_Fix_Text_Spacing($the_Post)\n{\n $the_New_Post = str_replace(\"  \", \" \", $the_Post);\n return $the_New_Post;\n}<\/pre><p>O primeiro par&acirc;metro &eacute; o nome do <strong>hook de filtro<\/strong> ao qual voc&ecirc; quer adicionar o callback, enquanto o segundo par&acirc;metro cont&eacute;m o nome da <strong>fun&ccedil;&atilde;o<\/strong> que voc&ecirc; quer executar quando o filtro &eacute; aplicado.<\/p><p>O terceiro par&acirc;metro, opcional, declara a <strong>prioridade<\/strong> da fun&ccedil;&atilde;o. A prioridade padr&atilde;o &eacute; 10, colocando a fun&ccedil;&atilde;o personalizada atr&aacute;s de todas as nativas.<\/p><p>H&aacute; ainda um quarto par&acirc;metro opcional, que indica o <strong>n&uacute;mero de argumentos<\/strong> ou par&acirc;metros que o filtro personalizado pode receber. O valor padr&atilde;o &eacute; 1.<\/p><p><strong>Exemplo: Plugin para Alterar um Trecho de Post<\/strong><\/p><p>O WordPress tem uma fun&ccedil;&atilde;o que captura trechos de postagens, chamado <strong>get_the_excerpt()<\/strong>. Ela tamb&eacute;m &eacute; um hook de filtro. Adicionar este filtro ap&oacute;s capturar o trecho alterar&aacute; o texto em quest&atilde;o antes do site WordPress exibi-lo.<\/p><p>O plugin de exemplo a seguir define uma fun&ccedil;&atilde;o de filtro que captura o trecho como &uacute;nico par&acirc;metro de entrada, adiciona algum texto antes dele e retorna o novo valor todas &agrave;s vezes que o script chama a fun&ccedil;&atilde;o <strong>get_the_excerpt()<\/strong>.<\/p><p>Como o valor de retorno da fun&ccedil;&atilde;o <strong>get_the_excerpt()<\/strong> &eacute; o trecho do texto em si, o plugin automaticamente far&aacute; a entrada do novo valor como o par&acirc;metro <strong>$old_Excerpt<\/strong> da fun&ccedil;&atilde;o quando chamado usando o <strong>add_filter()<\/strong>. A fun&ccedil;&atilde;o definida pelo plugin <strong>deve retornar o novo valor<\/strong>.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\nNome do Plugin: Adicionar Trecho \n*\/\n\/\/ Faz o gancho do hook de filtro get_the_excerpt, executa a fun&ccedil;&atilde;o mfp_Add_Text_To_Excerpt\nadd_filter(\"get_the_excerpt\", \"mfp_Add_Text_To_Excerpt\");\n\/\/ Captura o trecho, adiciona algum texto antes dele e retorna o novo trecho\nfunction mfp_Add_Text_To_Excerpt($old_Excerpt)\n{\n  $new_Excerpt = \"&lt;b&gt;Excerpt: &lt;\/b&gt;\" . $old_Excerpt;\n  return $new_Excerpt;\n}<\/pre><p><strong>Removendo Filtros Usando o remove_filter()<\/strong><\/p><p>Remover um filtro &eacute; muito mais simples que remover uma a&ccedil;&atilde;o, uma vez que o WordPress permite que voc&ecirc; chame a fun&ccedil;&atilde;o <strong>remove_filter()<\/strong> sem definir um novo filtro.<\/p><p>No exemplo a seguir, n&oacute;s vamos remover o trecho adicional do texto se o dia de hoje &eacute; ter&ccedil;a-feira. N&oacute;s usaremos a fun&ccedil;&atilde;o <strong>remove_filter()<\/strong> com pelo menos dois par&acirc;metros.<\/p><p>O primeiro deve conter o hook de filtro ao qual a fun&ccedil;&atilde;o est&aacute; anexada. O segundo par&acirc;metro deve ser o nome do filtro que voc&ecirc; quer remover. Adicione um par&acirc;metro de prioridade caso voc&ecirc; tenha definido um ao criar a fun&ccedil;&atilde;o.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/\/ Faz o gancho do hook de filtro get_the_excerpt, executa a fun&ccedil;&atilde;o mfp_Add_Text_To_Excerpt\nadd_filter(\"get_the_excerpt\", \"mfp_Add_Text_To_Excerpt\");\n\/\/ Se hoje &eacute; ter&ccedil;a-feira, remove o filtro de the_excerpt()\nif (date(\"l\") === \"Thursday\") {\n  remove_filter(\"get_the_excerpt\", \"mfp_Add_Text_To_Excerpt\");\n}\n\/\/ Captura o trecho, adiciona algum texto antes dele e retorna o novo trecho\nfunction mfp_Add_Text_To_Excerpt($old_Excerpt)\n{\n  $new_Excerpt = \"&lt;b&gt;Excerpt: &lt;\/b&gt;\" . $old_Excerpt;\n  return $new_Excerpt;\n}<\/pre><p>Agora que voc&ecirc; tem um conhecimento b&aacute;sico de hooks e filtros, n&oacute;s criaremos um plugin b&aacute;sico para WordPress que adicionar&aacute; uma nova p&aacute;gina com um link no painel de controle para administradores.<\/p><p>\n\n\n\n<div><p class=\"important\"><strong>Importante!<\/strong> Usar um ambiente de testes WordPress para testar novos plugins &eacute; importante para evitar erros que podem causar quedas e falhas. Existem duas formas de criar um ambiente de testes: manualmente ou com um plugin como o WP Staging. Alternativamente, voc&ecirc; pode instalar o WordPress localmente no seu computador.<\/p><\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-passo-1-armazenando-o-plugin\"><strong>Passo 1: Armazenando o Plugin<\/strong><\/h2><p>O primeiro passo para criar um novo plugin &eacute; fazer uma pasta para armazenar seus arquivos. O nome da pasta deve ser &uacute;nico e descritivo. Cheque outros nomes de pastas no diret&oacute;rio <strong>\/wp-content\/plugins\/<\/strong> para se certificar de que o novo nome j&aacute; n&atilde;o est&aacute; em uso.<\/p><p>Use um cliente FTP para se conectar &agrave; sua conta de hospedagem e facilitar o processo de upload de arquivos. V&aacute; at&eacute; a pasta <strong>wp-content -&gt; plugins<\/strong> a partir do diret&oacute;rio principal do WordPress. L&aacute;, crie uma nova pasta chamada <strong>meu-primeiro-plugin<\/strong> na pasta <strong>plugins<\/strong>.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-1.png\/public\" alt=\"criando pasta do meu primeiro plugin no FileZilla\" class=\"wp-image-30592\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-1.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-1.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-1.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><h2 class=\"wp-block-heading\" id=\"h-passo-2-criando-o-primeiro-arquivo\"><strong>Passo 2: Criando o Primeiro Arquivo<\/strong><\/h2><p>O arquivo principal do plugin cont&eacute;m as informa&ccedil;&otilde;es exigidas pelo WordPress para exibir o plugin na lista do painel de controle, onde voc&ecirc; poder&aacute; ativ&aacute;-lo.<\/p><p>Crie um novo arquivo PHP, chamado <strong>meu-primeiro-plugin.php<\/strong>, na pasta criada anteriormente. Este arquivo principal conter&aacute; coment&aacute;rios de cabe&ccedil;alho, com informa&ccedil;&otilde;es adicionais que o WordPress pode ler ou exibir.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"524\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-2.png\/public\" alt=\"criando arquivo php principal do meu primeiro plugin no FileZilla\" class=\"wp-image-30593\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-2.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-2.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-2.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-2.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-2.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-2.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><p>Ap&oacute;s fazer o upload do arquivo, clique nele com o bot&atilde;o direito e selecione a op&ccedil;&atilde;o <strong>&ldquo;Ver\/Editar&rdquo;<\/strong> para adicionar o c&oacute;digo a seguir (isso pode ser feito por meio de um editor HTML):<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\nNome do Plugin: Meu Primeiro Plugin\nDescri&ccedil;&atilde;o: Este &eacute; o meu primeiro plugin! Ele cria um novo link no menu de administra&ccedil;&atilde;o!\nAutor: Seu nome\n*\/<\/pre><p>Voc&ecirc; pode checar este <a href=\"https:\/\/www.php.net\/manual\/pt_BR\/language.basic-syntax.instruction-separation.php\" target=\"_blank\" rel=\"noopener\">manual PHP<\/a> para entender por que a tag de fechamento <strong>?&gt;<\/strong> n&atilde;o &eacute; necess&aacute;ria aqui.<\/p><p>Salve o arquivo. Em seguida, navegue &agrave; se&ccedil;&atilde;o <strong>Plugins<\/strong> do seu painel WordPress. Se o WordPress tiver lido o arquivo corretamente, voc&ecirc; ver&aacute; o <strong>Meu Primeiro Plugin<\/strong> na lista:<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"578\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin.png\/public\" alt=\"meu primeiro plugin no painel de plugins do wordpress\" class=\"wp-image-30595\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><h2 class=\"wp-block-heading\" id=\"h-passo-3-escrevendo-as-funcoes-do-plugin\"><strong>Passo 3: Escrevendo as Fun&ccedil;&otilde;es do Plugin<\/strong><\/h2><p>Antes de come&ccedil;ar a escrever as fun&ccedil;&otilde;es para o plugin, &eacute; altamente recomendado que voc&ecirc; d&ecirc; um prefixo &uacute;nico a todos os arquivos, fun&ccedil;&otilde;es e vari&aacute;veis a ele relacionados. Isso &eacute; importante para evitar conflitos com outros plugins. No nosso exemplo, n&oacute;s usaremos o prefixo <strong>mfp<\/strong>, uma sigla para <strong>My First Plugin.<\/strong><\/p><p>Crie uma nova pasta, chamada <strong>Includes<\/strong>, na pasta principal do plugin. N&oacute;s usaremos essa pasta para armazenar arquivos de suporte usados pelo arquivo principal. Nessa pasta, crie um arquivo PHP e o nomeie como <strong>mfp-functions.php<\/strong>. Abra o arquivo com a tag de in&iacute;cio <strong>&lt;?php<\/strong> na primeira linha.<\/p><p>Este novo arquivo conter&aacute; todas as fun&ccedil;&otilde;es do seu plugin.<\/p><p>N&oacute;s precisamos incluir o <strong>mfp.functions.php<\/strong> no arquivo principal do plugin para que outros arquivos do plugin usem as fun&ccedil;&otilde;es definidas por ele. Use o <strong>require_once<\/strong> para se certificar de que o plugin funcionar&aacute; apenas caso o arquivo functions esteja presente.<\/p><p>Edite o <strong>my-first-plugin.php<\/strong> conforme exibido abaixo. Em seguida, salve-o e fa&ccedil;a o upload do arquivo novamente, sobrescrevendo a vers&atilde;o anterior quando solicitado.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\nNome do Plugin: Meu Primeiro Plugin\nDescri&ccedil;&atilde;o: Este &eacute; o meu primeiro plugin! Ele cria um novo link no menu de administra&ccedil;&atilde;o!\nAutor: Seu nome\n*\/\n\/\/ Inclui o mfp-functions.php, usa o require_once para interromper o script caso o mfp-functions.php n&atilde;o seja encontrado\nrequire_once plugin_dir_path(__FILE__) . 'includes\/mfp-functions.php';<\/pre><p>A fun&ccedil;&atilde;o do WordPress <strong>plugin_dir_path(__FILE__) <\/strong>permite que voc&ecirc; inclua arquivos da pasta de plugins, dando o caminho completo ao diret&oacute;rio que armazena o novo plugin.<\/p><p>Agora, retorne ao arquivo <strong>mfp-functions.php<\/strong> na pasta Includes. Como nosso plugin adicionar&aacute; um novo link de topo ao menu de navega&ccedil;&atilde;o do painel de controle do WordPress, n&oacute;s usaremos uma fun&ccedil;&atilde;o personalizada, chamada <strong>mfp_Add_My_Admin_Link()<\/strong>. Adicione o c&oacute;digo abaixo ao arquivo <strong>mfp-functions.php<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n\/*\n * Adiciona meu novo menu ao Painel de Controle do Administrador\n *\/\n\/\/ Faz o gancho do hook de a&ccedil;&atilde;o 'admin_menu', executa a fun&ccedil;&atilde;o 'mfp_Add_My_Admin_Link()'\nadd_action( 'admin_menu', 'mfp_Add_My_Admin_Link' );\n\/\/ Adiciona um novo link de topo ao menu do Painel de Controle do Administrador\nfunction mfp_Add_My_Admin_Link()\n{\n      add_menu_page(\n        'Minha Primeira P&aacute;gina', \/\/ T&iacute;tulo da p&aacute;gina\n        'Meu Primeiro Plugin', \/\/ Texto para exibir no link do menu\n        'manage_options', \/\/ Requerimento de capacidade para visualizar o link\n        'includes\/mfp-first-acp-page.php' \/\/ O 'slug' - arquivo a ser exibido ao clicar no link\n    );\n}<\/pre><p>\n\n\n\n<div><p class=\"important\"><strong>Importante!<\/strong> Agrupe fun&ccedil;&otilde;es similares e adicione uma descri&ccedil;&atilde;o no topo de cada uma delas com um coment&aacute;rio de m&uacute;ltiplas linhas. Isso facilitar&aacute; atualiza&ccedil;&otilde;es e corre&ccedil;&otilde;es de bugs no futuro.<\/p><\/div>\n\n\n\n<\/p><p>A fun&ccedil;&atilde;o <strong>mfp_Add_My_Admin_Link() <\/strong>usa a fun&ccedil;&atilde;o nativa do WordPress <strong>add_menu_page()<\/strong> com ao menos quatro par&acirc;metros, na seguinte ordem:<\/p><ul class=\"wp-block-list\">\n<li><strong>T&iacute;tulo da p&aacute;gina<\/strong> &ndash; o nome da p&aacute;gina exibido na aba do navegador.<\/li>\n\n\n\n<li><strong>T&iacute;tulo do menu<\/strong> &ndash; o texto usado para o item do menu. Em nosso exemplo, &eacute; o pr&oacute;prio nome do plugin.<\/li>\n\n\n\n<li><strong>Capacidade<\/strong> &ndash; requerimento de capacidade do usu&aacute;rio para visualizar o menu do plugin. No nosso caso, apenas usu&aacute;rios com a capacidade manage_options poder&atilde;o acessar a p&aacute;gina linkada.<\/li>\n\n\n\n<li><strong>Slug do menu<\/strong> &ndash; o arquivo que deve ser usado para exibir a p&aacute;gina em si. N&oacute;s criaremos o arquivo <strong>mfp-first-acp-page.php<\/strong>, que ser&aacute; linkado na se&ccedil;&atilde;o a seguir.<\/li>\n\n\n\n<li><strong>Fun&ccedil;&atilde;o (opcional)<\/strong> &ndash; a fun&ccedil;&atilde;o que gera o conte&uacute;do da p&aacute;gina.<\/li>\n<\/ul><p>Anexar a fun&ccedil;&atilde;o personalizada com o comando <strong>add_action() <\/strong>permite que o plugin chame o hook de a&ccedil;&atilde;o sob determinadas circunst&acirc;ncias. Adicionar o <strong>admin_menu<\/strong> como primeiro par&acirc;metro chamar&aacute; a fun&ccedil;&atilde;o quando um usu&aacute;rio acessar o menu de administrador. Enquanto isso, o <strong>mfp_Add_My_Admin_Link<\/strong> &eacute; a fun&ccedil;&atilde;o que ser&aacute; executada, por ser especificada como o segundo par&acirc;metro.<\/p><p>Por fim, fa&ccedil;a o upload do arquivo <strong>mfp-functions.php<\/strong> &agrave; pasta <strong>Includes<\/strong>.<\/p><h2 class=\"wp-block-heading\" id=\"h-passo-4-criando-a-pagina-de-administrador-do-plugin\"><strong>Passo 4: Criando a P&aacute;gina de Administrador do Plugin<\/strong><\/h2><p>Ap&oacute;s definir as fun&ccedil;&otilde;es do plugin, &eacute; hora de construir a p&aacute;gina que &agrave; qual o bot&atilde;o de menu nos levar&aacute;. Crie um novo arquivo PHP chamado <strong>mfp-first-acp-page.php<\/strong> na pasta <strong>Includes<\/strong> e adicione o c&oacute;digo a seguir:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;div class=\"wrap\"&gt;\n  &lt;h1&gt;Ol&aacute;!&lt;\/h1&gt;\n  &lt;p&gt;Essa &eacute; a primeira p&aacute;gina do meu plugin&lt;\/p&gt;\n&lt;\/div&gt;<\/pre><p>Ao criar p&aacute;ginas de administrador, o WordPress recomenda isolar o c&oacute;digo HTML com uma tag <strong>&lt;div&gt;<\/strong> e dar a ela a classe <strong>&ldquo;wrap&rdquo;<\/strong>, para garantir que todo o seu conte&uacute;do apare&ccedil;a no lugar correto. Fazer isso tamb&eacute;m ajudar&aacute; a deixar o seu c&oacute;digo mais limpo.<\/p><p>Por fim, navegue at&eacute; a se&ccedil;&atilde;o <strong>Plugins<\/strong> do seu painel WordPress e ative o novo plugin. Se o processo for bem sucedido, o link para o painel de administra&ccedil;&atilde;o do seu novo plugin aparecer&aacute; na parte de baixo do menu de navega&ccedil;&atilde;o.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"563\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin-1.png\/public\" alt=\"meu primeiro plugin no menu de administrador do wordpress\" class=\"wp-image-30596\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/meu-primeiro-plugin-1.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><p>Parab&eacute;ns! Voc&ecirc; criou seu primeiro plugin para WordPress.<\/p><p>Se voc&ecirc; criou o plugin num ambiente de testes, ser&aacute; necess&aacute;rio instalar o plugin no site em si. Os passos a seguir mostram como faz&ecirc;-lo:<\/p><ol class=\"wp-block-list\">\n<li>No FileZilla, clique com o bot&atilde;o direito na pasta <strong>my-first-plugin<\/strong> e selecione <strong>&ldquo;Download&rdquo;<\/strong>. Em seguida, comprima a pasta num arquivo ZIP.<br><img decoding=\"async\" width=\"1024\" height=\"572\" class=\"wp-image-30594\" style=\"width: 760px\" src=\"https:\/\/blog.hostinger.io\/br-tutoriais\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-3.png\" alt=\"baixando pasta do meu primeiro plugin no FileZilla\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-3.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-3.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-3.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-3.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-3.png\/w=1536,fit=scale-down 1536w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/filezilla-plugin-3.png\/w=2048,fit=scale-down 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/li>\n\n\n\n<li>Navegue at&eacute; o menu <strong>Plugins<\/strong> no painel do WordPress. Clique em <strong>&ldquo;Adicionar novo&rdquo;<\/strong>.<\/li>\n\n\n\n<li>Clique em <strong>&ldquo;Enviar plugin&rdquo;<\/strong> e selecione o arquivo ZIP do seu plugin.<br><img decoding=\"async\" width=\"1024\" height=\"413\" class=\"wp-image-30597\" style=\"width: 760px\" src=\"https:\/\/blog.hostinger.io\/br-tutoriais\/wp-content\/uploads\/sites\/53\/2022\/12\/adicionar-plugin.png\" alt=\"tela para enviar novo plugin no painel de controle do wordpress\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/adicionar-plugin.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/adicionar-plugin.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/adicionar-plugin.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2022\/12\/adicionar-plugin.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/li>\n\n\n\n<li>Selecione <strong>&ldquo;Instalar agora&rdquo;<\/strong> para iniciar o processo de instala&ccedil;&atilde;o.<\/li>\n<\/ol><p>\n\n\n\n<div class=\"protip\">\n                    <h4 class=\"title\">Leituras Sugeridas<\/h4>\n                    <p>Voc&ecirc; quer saber em que linguagens os plugins do WordPress s&atilde;o escritos? Saiba mais nos guias a seguir: <br>\n\n<a href=\"\/br\/tutoriais\/o-que-e-html-conceitos-basicos\" target=\"_blank\" rel=\"noopener\">O Que &eacute; HTML?<\/a> <br>\n<a href=\"\/br\/tutoriais\/o-que-e-css-guia-basico-de-css\" target=\"_blank\" rel=\"noopener\">O Que &eacute; CSS?<\/a> <br>\n<a href=\"\/br\/tutoriais\/o-que-e-javascript\" target=\"_blank\" rel=\"noopener\">O Que &eacute; JavaScript?<\/a>\n<\/p>\n                <\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-boas-praticas-e-dicas-ao-criar-plugins-personalizados\"><strong>Boas Pr&aacute;ticas e Dicas ao Criar Plugins Personalizados<\/strong><\/h2><p>Como seu site precisa evoluir continuamente, voc&ecirc; precisar&aacute; revisitar o c&oacute;digo dos seus plugins para implementar novidades e corrigir falhas de seguran&ccedil;a.<\/p><p>Com isso em mente, &eacute; uma boa ideia seguir algumas boas pr&aacute;ticas no desenvolvimento de plugins desde o in&iacute;cio. Com isso, voc&ecirc; facilitar&aacute; todo o processo para voc&ecirc; mesmo e para quaisquer desenvolvedores que venham a trabalhar no seu plugin futuramente.<\/p><p>Al&eacute;m disso, voc&ecirc; pode dar uma olhada nos <a href=\"\/br\/tutoriais\/melhores-plugins-wordpress\">melhores plugins WordPress<\/a> para ter um pouco de inspira&ccedil;&atilde;o. Analise seus c&oacute;digos-fonte, como eles organizam suas pastas e outras pr&aacute;ticas que voc&ecirc; pode aplicar ao criar os seus pr&oacute;prios plugins.<\/p><p>Aqui est&atilde;o algumas dicas de escrita de c&oacute;digo e desenvolvimento de plugins que poder&atilde;o te ajudar na cria&ccedil;&atilde;o do seu primeiro plugin WordPress:<\/p><ul class=\"wp-block-list\">\n<li><strong>Desenvolva e teste seus plugins num ambiente de teste.<\/strong> Desta forma, voc&ecirc; n&atilde;o corre o risco de quebrar o seu site no caso de algum c&oacute;digo problem&aacute;tico.<\/li>\n\n\n\n<li><strong>Crie uma estrutura de pastas l&oacute;gica.<\/strong> Crie subpastas para cada funcionalidade e divida o c&oacute;digo em diferentes arquivos, com base em seu prop&oacute;sito ou na linguagem de programa&ccedil;&atilde;o escolhida, para evitar bagun&ccedil;a.<\/li>\n\n\n\n<li><strong>Nomeie cada arquivo, pasta e elemento com cuidado.<\/strong> Use prefixos &uacute;nicos, para que eles n&atilde;o entrem em conflito com os nomes de arquivos de outros plugins ou do pr&oacute;prio WordPress.<\/li>\n\n\n\n<li><strong>Adicione coment&aacute;rios para explicar cada fun&ccedil;&atilde;o.<\/strong> Isso permite que outros desenvolvedores entendam seu c&oacute;digo ao atualiz&aacute;-lo ou corrigir seus bugs.<\/li>\n\n\n\n<li><strong>Crie uma documenta&ccedil;&atilde;o.<\/strong> Essa pr&aacute;tica &eacute; particularmente vantajosa caso voc&ecirc; crie plugins com funcionalidades complexas para muitos usu&aacute;rios.<\/li>\n\n\n\n<li><strong>Use um software de controle de vers&atilde;o para acompanhar as mudan&ccedil;as feitas no seu c&oacute;digo.<\/strong> Saber quem adicionou ou modificou cada c&oacute;digo ajuda a previnir conflitos entre atualiza&ccedil;&otilde;es e reduzir o n&uacute;mero de bugs.<\/li>\n\n\n\n<li><strong>Use o <\/strong><a href=\"https:\/\/codex.wordpress.org\/P%C3%A1gina_Inicial\" target=\"_blank\" rel=\"noopener\"><strong>Codex do WordPress<\/strong><\/a><strong> como refer&ecirc;ncia para seguir padr&otilde;es de c&oacute;digo espec&iacute;ficos de cada linguagem.<\/strong> Certifique-se de seguir os padr&otilde;es ao colaborar num projeto.<\/li>\n\n\n\n<li><strong>Ative o <\/strong><a href=\"\/br\/tutoriais\/debug-wordpress\"><strong>WP_DEBUG<\/strong><\/a><strong> ou use uma ferramenta de debugging ao desenvolver plugins.<\/strong> Isso facilitar&aacute; a detec&ccedil;&atilde;o de bugs, acelerando o desenvolvimento como um todo.<\/li>\n<\/ul><h2 class=\"wp-block-heading\" id=\"h-conclusao\"><strong>Conclus&atilde;o<\/strong><\/h2><p>Desenvolver um plugin personalizado &eacute; uma boa forma de adicionar uma funcionalidade ao site WordPress que n&atilde;o &eacute; oferecida por nenhum plugin atualmente dispon&iacute;vel. Sua cria&ccedil;&atilde;o pode ser um plugin simples, que implementa altera&ccedil;&otilde;es menores, ou um plugin bem complexo, que modifica o site como um todo.<\/p><p>Para recapitular, eis os passos para criar o seu plugin WordPress do zero:<\/p><ol class=\"wp-block-list\">\n<li>Crie uma pasta para armazenar os arquivos do plugin.<\/li>\n\n\n\n<li>Crie o arquivo principal do seu plugin.<\/li>\n\n\n\n<li>Adicione os c&oacute;digos a m&uacute;ltiplos arquivos para definir as fun&ccedil;&otilde;es do plugin.<\/li>\n\n\n\n<li>Construa a p&aacute;gina de administrador do plugin.<\/li>\n<\/ol><p>Como qualquer outra habilidade, desenvolver plugins para o WordPress com destreza leva tempo. Com pr&aacute;tica suficiente, voc&ecirc; poder&aacute; criar plugins para disponibiliz&aacute;-los no diret&oacute;rio oficial do WordPress &mdash; ou mesmo vend&ecirc;-lo em um marketplace.<\/p><p>Esperamos que este artigo tenha te ensinado como fazer um plugin para WordPress. Se voc&ecirc; tiver alguma d&uacute;vida ou coment&aacute;rio, n&atilde;o deixe de escrev&ecirc;-lo logo abaixo.<\/p><h2 class=\"wp-block-heading\" id=\"h-perguntas-frequentes-como-criar-um-plugin-wordpress\"><strong>Perguntas Frequentes: Como Criar um Plugin WordPress<\/strong><\/h2><div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-694416d361816\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">&Eacute; Poss&iacute;vel Ganhar Dinheiro Fazendo Plugins WordPress?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Sim, voc&ecirc; pode vender plugins no seu pr&oacute;prio site ou numa loja especializada.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-694416d36181a\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Quem Pode Criar Plugins WordPress?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Qualquer pessoa com conhecimentos de linguagens de programa&ccedil;&atilde;o pode criar um plugin WordPress. Voc&ecirc; pode usar um tema para criar um plugin, caso saiba o b&aacute;sico de PHP.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-694416d36181b\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Os Plugins WordPress s&atilde;o Escritos em PHP?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Os plugins WordPress costumam ser escritos em PHP, mas voc&ecirc; tamb&eacute;m precisar&aacute; ter conhecimentos b&aacute;sicos em HTML e CSS para gerenciar o conte&uacute;do do plugin corretamente.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>O WordPress tem um cat&aacute;logo gigantesco de plugins com funcionalidades adicionais para a plataforma. Al&eacute;m disso, os plugins podem agregar novos recursos ao seu site WordPress sem que voc&ecirc; precise mudar o c&oacute;digo principal da p&aacute;gina. Existem milhares de plugins gratuitos e pagos para voc&ecirc; escolher, mas pode haver momentos nos quais voc&ecirc; precisar&aacute; de [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/br\/tutoriais\/criar-plugin-wordpress\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":356,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"Como criar um plugin WordPress: guia completo passo a passo","rank_math_description":"Quer descobrir como criar plugin um plugin para WordPress? Veja nosso tutorial e aprenda como! Inclui modelo de plugin WordPress completo.","rank_math_focus_keyword":"Plugin WordPress","footnotes":""},"categories":[4911],"tags":[5778,5777,5779,4865,5129,5060],"class_list":["post-6749","post","type-post","status-publish","format-standard","hentry","category-wordpress","tag-codigos-php","tag-como-criar-plugin-wordpress","tag-linguagem","tag-php","tag-plugin-worpdress","tag-tutoriais-wordpress"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/how-to-create-wordpress-plugin","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/criar-plugin-wordpress","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/creer-un-plugin-wordpress","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/tutorial-wordpress-plugins-crear-plugin-wordpress","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/membuat-plugin-wordpress","default":0},{"locale":"de-DE","link":"https:\/\/www.hostinger.com\/de\/tutorials\/wordpress-plugin-erstellen","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/how-to-create-wordpress-plugin","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/how-to-create-wordpress-plugin","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/how-to-create-wordpress-plugin","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/joomla-vs-wordpress-cms-utilizar-4","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/joomla-vs-wordpress-cms-utilizar-4","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/tutorial-wordpress-plugins-crear-plugin-wordpress","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/criar-plugin-wordpress","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/how-to-create-wordpress-plugin","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/how-to-create-wordpress-plugin","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/how-to-create-wordpress-plugin","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/how-to-create-wordpress-plugin","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/6749","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/users\/356"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/comments?post=6749"}],"version-history":[{"count":22,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/6749\/revisions"}],"predecessor-version":[{"id":51849,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/6749\/revisions\/51849"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/media?parent=6749"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/categories?post=6749"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/tags?post=6749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}