Desenvolvimento de plugins para WordPress: Construindo plugins com funcionalidades personalizadas do zero

Leitura de 3 minutos
2026-03-14
2026-06-03
2,192
Eu recebo uma comissão quando você faz compras através dos links abaixo, sem custo adicional para você.

Por que escolher desenvolver o próprio plugin para o WordPress?

No ecossistema do WordPress, os plugins são essenciais para expandir as funcionalidades de um site. Embora o diretório oficial e os mercados de terceiros ofereçam uma vasta gama de opções, o desenvolvimento de plugins próprios traz vantagens únicas. Quando os plugins existentes não se adaptam perfeitamente à lógica do seu negócio, apresentam limitações de desempenho ou contêm funcionalidades desnecessárias, o desenvolvimento personalizado se torna a melhor solução. Isso permite que você crie uma solução leve e focada, contendo apenas o código necessário, o que melhora o desempenho do site.

Mais importante ainda, os plugins personalizados oferecem total controle sobre o funcionamento do sistema. Você pode iterar as funcionalidades de acordo com as necessidades do projeto, integrar facilmente APIs internas ou serviços de terceiros, e garantir que o código atenda aos seus padrões de segurança e codificação. Para os desenvolvedores, isso também representa uma oportunidade de entender em profundidade a arquitetura central do WordPress – incluindo seus mecanismos internos de funcionamento.Hook(“Gancho” – Excelentes práticas para operações em sistemas e bancos de dados.) Dominar as habilidades de desenvolvimento de plugins significa que você poderá criar soluções verdadeiramente personalizadas para qualquer projeto WordPress.

Construa a estrutura básica do seu primeiro plugin.

Criar um plugin para o WordPress começa com um diretório simples e um arquivo principal. A estrutura básica do plugin é a pedra fundamental para o desenvolvimento de todas as funcionalidades subsequentes.

Leitura recomendada Dominando o desenvolvimento de plug-ins do WordPress: Criando módulos de funções personalizadas eficientes a partir do zero

Criar o arquivo principal do plugin

Todos os plugins do WordPress devem ter um arquivo PHP principal, que contém comentários de cabeçalho específicos para o plugin. Esses comentários são essenciais para que o WordPress reconheça o plugin. Você precisa…wp-content/pluginsCrie uma nova pasta na pasta principal, por exemplo:my-first-pluginEm seguida, crie o arquivo principal dentro dessa pasta.my-first-plugin.php

Hospedagem para sites WordPress da UltraHost
Garantia de reembolso em 30 dias, largura de banda ilimitada e banco de dados, proteção contra DDoS gratuita; desconto de 50% na compra de 3 anos (planos de 4 TB a 10 TB).

As notas no início do arquivo devem conter informações sobre o nome do plugin, descrição, versão, autor e outros detalhes relevantes. Aqui está um exemplo básico:

<?php
/**
 * Plugin Name:       我的第一个自定义插件
 * Plugin URI:        https://www.yourwebsite.com/
 * Description:       这是一个用于学习WordPress插件开发的自定义插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

Após salvar o arquivo, você poderá vê-lo e ativá-lo na página de “Plugins” no painel administrativo do WordPress. Embora ele ainda não tenha nenhuma funcionalidade, a sua estrutura já está pronta.

Organizar o diretório de plugins e os arquivos

À medida que as funcionalidades aumentam, uma estrutura de arquivos adequada torna-se de extrema importância. É recomendável separar os diferentes tipos de código em subpastas distintas, o que facilita a manutenção a longo prazo. Um exemplo típico de estrutura de diretórios para um plugin simples pode ser o seguinte:

my-first-plugin/
├── my-first-plugin.php      // 主文件,包含插件头和管理核心钩子
├── includes/                // 存放核心功能类或函数文件
│   └── class-core-functions.php
├── admin/                   // 后台相关的CSS、JS和PHP文件
│   ├── css/
│   ├── js/
│   └── admin-settings.php
├── public/                  // 前端相关的CSS、JS和PHP文件
│   ├── css/
│   ├── js/
│   └── class-public-handler.php
└── languages/               // 国际化翻译文件(.po/.mo)

No arquivo principalmy-first-plugin.phpNeste contexto, você pode usar…require_onceouinclude_onceIntroduza esses arquivos modulares conforme necessário. Essa estrutura separa de forma clara a lógica de backend, a apresentação de frontend e as funções principais.

Leitura recomendada De forma simples e compreensível: Um guia completo para aprender a desenvolver plugins para o WordPress, do zero.

Utilizar ganchos (hooks) e filtros para implementar funcionalidades.

A arquitetura de plugins do WordPress é baseada em um sistema de ganchos (hooks) acionado por eventos, que inclui principalmente:Action(Ação) EFilter(Filtros). Compreendê-los e utilizá-los é fundamental no desenvolvimento de plugins.

Executar tarefas através de ganchos de ação (action hooks).

Os ganchos de ação (action hooks) permitem que você insira o seu próprio código em momentos específicos do ciclo de vida do WordPress, como durante a inicialização, o carregamento da cabeça do frontend ou o salvamento de artigos. Você pode usá-los para realizar ações personalizadas ou integrar funcionalidades adicionais no sistema.add_action()A função “monta” (ou associa) a função personalizada a esses pontos de acesso (ou “ganchos”).

Por exemplo, se você quiser adicionar uma notificação para os administradores no topo da área de administração do site, pode utilizar…admin_noticesEste “gancho de ação” (action hook): Primeiramente, defina uma função no arquivo principal do plugin.my_custom_admin_noticeEm seguida, monte-o no gancho.

hospedagem compartilhada da hosting.com
Alto desempenho com CPUs AMD EPYC, armazenamento SSD NVMe e LiteSpeed, suporte interno especializado 24 horas por dia, 7 dias por semana, medidas de segurança avançadas, incluindo SSL, força bruta, malware e proteção contra DDoS, economia de até 73%
// 定义显示通知的函数
function my_custom_admin_notice() {
    echo '<div class="notice notice-success is-dismissible"><p>Meu plugin personalizado foi ativado com sucesso!</p></div>';
}
// 将函数挂载到 admin_notices 动作钩子
add_action( 'admin_notices', 'my_custom_admin_notice' );

Quando o WordPress executaadmin_noticesNeste momento, a função que você montou será automaticamente chamada, exibindo assim a notificação. O “action hook” (gancho de ação) é usado para “fazer algo” e não exige que haja um valor retornado.

Usar ganchos de filtro para modificar dados

Diferentemente dos ganchos de ação (action hooks), os ganchos de filtro (filter hooks) são usados para “modificar algo”. Eles permitem que você altere os dados transmitidos pelo núcleo do WordPress, por outros plugins ou por temas. Você pode usá-los para realizar ajustes ou processamentos adicionais nos dados antes que eles sejam exibidos ou utilizados pelo sistema.add_filter()Uma função é usada para aplicar um filtro.

Um exemplo clássico é a alteração das últimas palavras do conteúdo de um artigo. O WordPress disponibiliza recursos para isso.the_contentOs filtros permitem que você modifique o conteúdo dos artigos que serão exibidos.

Leitura recomendada O guia completo para o desenvolvimento de plug-ins do WordPress: do zero à progressão avançada

// 定义修改内容的函数
function append_custom_text_to_content( $content ) {
    if ( is_single() ) { // 仅对单篇文章页面生效
        $custom_text = '<p><em>Obrigado pela leitura! Este artigo foi desenvolvido com o apoio do meu plugin.</em></p>';
        $content .= $custom_text;
    }
    return $content; // 必须返回修改后的内容
}
// 将函数挂载到 the_content 过滤器钩子
add_filter( 'the_content', 'append_custom_text_to_content' );

A função de filtro recebe um valor de entrada (aqui…)$contentApós o processamento, deve-se retornar um valor. Dessa forma, você pode alterar de forma flexível quase qualquer dado processado pelo WordPress.

Criar uma página de configurações de gerenciamento para o plugin.

Para plugins que requerem configurações por parte do usuário, é essencial disponibilizar uma página de configurações amigável no painel administrativo. O WordPress oferece uma série de APIs para simplificar o processo de criação de páginas de menu e de opções.

Hospedagem Compartilhada InterServer
Hospedagem compartilhada $2.50 USD por mês, primeiro mês $0.1 USD código promocional tryinterserver, 461 scripts de aplicativos em nuvem, instalação com um clique.

Adicionar um menu principal ou um submenu

Você pode usaradd_menu_page()A função cria um menu independente de nível superior no backend para o plugin, ou então… (The function creates an independent top-level menu in the backend for the plugin, or otherwise…)add_submenu_page()Coloque-o como um item subordinado de um menu existente (como “Configurações”). Geralmente, essa operação requer que você o “monte” (ou o associe) ao menu principal.admin_menuNo gancho de ação.

O código abaixo demonstra como adicionar uma página de configurações de nível superior (top-level settings page) simples:

function my_plugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',        // 所需权限(管理员)
        'my-plugin-settings',    // 菜单slug(URL标识)
        'my_plugin_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(Dashicons)
        80                       // 菜单位置
    );
}
add_action( 'admin_menu', 'my_plugin_add_admin_menu' );

Em seguida, você precisa definir a função de callback.my_plugin_settings_pageÉ usado para renderizar o conteúdo HTML da página.

Construir um formulário de configurações e opções de salvamento

Do WordPressSettings APIFornece métodos padronizados para o registro, verificação e salvamento de configurações de forma segura. Isso evita o tratamento direto dos dados.$_POSTOs dados aumentaram a segurança.

Primeiro, useregister_setting()Registe um grupo de configuração e utilize-o.add_settings_section()Adicione a região e use-a.add_settings_field()Adicione os campos específicos. Em seguida, dentro da função de callback definida anteriormente, utilize-os.settings_fields()edo_settings_sections()Função para exibir o formulário.

function my_plugin_settings_page() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/pt/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出必要的安全字段
            settings_fields( 'my_plugin_options_group' );
            // 输出设置区域和字段
            do_settings_sections( 'my-plugin-settings' );
            // 输出提交按钮
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="pt"/></form>
    </div>
    &lt;?php
}

Através deSettings APIVocê pode criar facilmente páginas de configuração que contêm caixas de texto, menus suspensos, caixas de seleção e vários outros tipos de campos. Todos os dados serão salvos de forma segura.wp_optionsNa tabela, é possível…get_option()A função pode ser chamada no front-end ou no back-end.

Garantir a segurança e a manutenibilidade dos plugins.

É essencial escrever um plugin robusto que não se limite apenas à implementação das funcionalidades desejadas, mas também leve em conta aspectos como segurança, desempenho e a manutenção futura. Seguir as melhores práticas é de extrema importância.

Validação de dados, escape e tratamento inseguro

Esta é a primeira linha de defesa para a segurança dos plugins. Todos os dados provenientes de usuários ou de fontes externas (como…)$_GET$_POST$_COOKIEAntes de serem inseridas no banco de dados ou exibidas na página, todas as informações devem passar por um processo rigoroso de validação e escape.

Para os dados inseridos (antes de serem armazenados no banco de dados), use funções de validação, como…sanitize_text_field()absint()Vamos limpar os dados. Para a saída (os dados retirados do banco de dados antes de serem exibidos no navegador), use funções de escape, como…esc_html()esc_attr()esc_url()Isso é para prevenir ataques XSS (Cross-Site Scripting).

// Processamento do envio do formulário (exemplo; geralmente é tratado pela API Settings em options.php)
$$user_input = isset($$_POST['my_field']) ? sanitize_text_field($$_POST['my_field']) : '';

// Exibição dos dados obtidos do banco de dados no frontend
echo '<div class="info">'`. esc_html( get_option( 'my_saved_option' ) ) `.'</div>';

Além disso, ao executar consultas no banco de dados, é necessário utilizar…$wpdbOs métodos fornecidos pela classe (como…)$wpdb->prepare()) para prevenir injeções SQL.

Implementar suporte a internacionalização e localização

Para que o seu plugin possa ser usado por usuários de todo o mundo, o suporte à internacionalização (i18n) é essencial. Isso significa que todas as strings direcionadas aos usuários devem ser encapsuladas usando as funções de tradução do WordPress.

fazer uso de__()Função para traduzir e retornar uma string, utilizando…_e()Funções para traduzir e exibir strings diretamente. Definidas no cabeçalho do plugin.Text Domain(O campo de texto) deve ser exatamente o mesmo que o campo de texto utilizado aqui.

// 错误示例:直接输出英文字符串
echo “Hello World”;

// 正确示例:可翻译的字符串
echo esc_html__( ‘Hello World’, ‘my-first-plugin’ );
// 或者
_e( ‘Hello World’, ‘my-first-plugin’ );

Em seguida, você pode usar uma ferramenta como o Poedit para extrair todas as strings marcadas e gerar o resultado desejado..potArquivo, para que o tradutor crie versões em diferentes idiomas..poe.moArquivo. Coloque-o no plugin.languagesDentro da pasta, o WordPress carregará automaticamente as traduções correspondentes de acordo com o idioma do site.

resumos

O desenvolvimento de plugins para o WordPress é um processo sistemático que transforma ideias em funcionalidades reais. Começando pela criação de um arquivo principal que contém as anotações de cabeçalho padrão, você já deu o primeiro passo. Compreender e utilizar os ganchos de ações (actions) e filtros (filters) é fundamental para dar dinâmica ao seu plugin, permitindo que ele interaja de forma integrada em todos os aspectos do funcionamento do WordPress. A interface de gerenciamento construída através da API Settings API oferece uma forma amigável de configurar o plugin, aumentando sua qualidade e profissionalismo.

Durante todo o processo de desenvolvimento, os princípios de segurança devem ser mantidos a todo momento, incluindo a validação rigorosa de dados, a utilização de mecanismos de escape de caracteres e operações padronizadas no banco de dados. Além disso, o suporte à internacionalização permite que seu plugin atenda a um público mais amplo em todo o mundo. Seguir uma estrutura de organização de arquivos clara (como a separação de código de backend, frontend e componentes centrais) e padrões de codificação estabelecidos cria uma base sólida para a manutenção a longo prazo e a expansão de funcionalidades do plugin. Lembre-se: um bom plugin não é apenas código que funciona, mas sim uma solução segura, eficiente e fácil de manter.

Perguntas frequentes Perguntas frequentes

Quais são as tecnologias fundamentais que são necessárias para desenvolver plugins para o WordPress?

Você precisa estar familiarizado com as noções básicas da linguagem PHP, pois o plugin foi desenvolvido principalmente em PHP. Além disso, é essencial entender HTML, CSS e JavaScript para construir interfaces e interações tanto no lado front-end quanto no lado back-end. O mais importante é dominar o conjunto de conhecimentos específico do WordPress, incluindo seu sistema de ganchos (Actions e Filters) e as classes de operação com o banco de dados.$wpdbÉ também muito útil ter um certo conhecimento sobre as prioridades de execução dos temas e plugins do WordPress, bem como sobre APIs como a API de Configurações (Settings API) e a API REST.

Como depurar um plugin para WordPress que você mesmo desenvolveu?

Primeiro, certifique-se de que…wp-config.phpO ficheiro foi aberto.WP_DEBUGEste modo exibirá diretamente os erros, avisos e notificações do PHP na página. Use-o.error_log()As funções podem gravar informações em arquivos de log personalizados para rastrear variáveis e processos. Para chamadas complexas de Ajax ou REST API, é possível utilizar a aba “Rede” dos ferramentas de desenvolvimento do navegador para visualizar os dados. Além disso, existem muitos plugins excelentes, como o “Query Monitor”, que permitem analisar em detalhes as consultas ao banco de dados, a execução de funções de interrupção (hooks) e os pontos de estrangulamento no desempenho, tornando-se ferramentas úteis para o desenvolvimento e a depuração de código.

Como publicar um plugin desenvolvido no diretório oficial do WordPress?

Primeiramente, você precisa garantir que o código do plugin esteja de acordo com os padrões de codificação oficiais do WordPress e as exigências de estruturação dos diretórios. Por exemplo, é necessário incluir um arquivo padrão…readme.txtPrimeiro, crie um arquivo com as informações necessárias para o seu plugin. Em seguida, solicite uma conta de desenvolvedor no WordPress.org e envie o seu plugin para revisão. O processo de revisão verificará a qualidade do código, a segurança, o acordo de licença (que deve ser compatível com o GPL) e a descrição das funcionalidades do plugin. Após a aprovação, você poderá usar o ferramenta SVN para enviar o código do plugin para o repositório oficial do WordPress. Depois disso, será possível atualizar as versões do plugin através da interface de gerenciamento do backend.

Qual é a diferença entre adicionar código nos arquivos functions.php de plugins e temas personalizados?

Adicione o código ao tópico atual.functions.phpUm arquivo é um método simples para realizar testes rápidos ou adicionar funcionalidades específicas a um site. No entanto, este método possui desvantagens significativas: as funcionalidades estão vinculadas ao tema do site, e elas perdem a eficácia assim que o tema é alterado. Além disso, o código carece de uma boa estrutura de encapsulamento e de espaços de nomes (namespaces), o que pode levar a conflitos com outros componentes do código.

Criar um plugin independente permite desacoplar as funcionalidades do tema principal, garantindo que elas funcionem corretamente independentemente do tema utilizado. Os plugins possuem uma estrutura completa, o que facilita a organização do código, o gerenciamento de dependências, a criação de páginas de configuração e a atualização de forma independente. Eles são a escolha ideal para funcionalidades que devem ser reutilizadas, são complexas ou precisam ser distribuídas para outros usuários.