Um guia prático completo para o desenvolvimento de plugins do WordPress, desde o início até a criação do seu primeiro plugin.

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

No vasto universo da internet, o WordPress ocupa metade do mercado dos sistemas de gerenciamento de conteúdo graças à sua poderosa capacidade de expansão. E o núcleo que lhe confere possibilidades quase infinitas de expansão são os plugins. Por meio do desenvolvimento de plugins para WordPress, você pode adicionar ao site qualquer funcionalidade que conseguir imaginar. Este artigo vai guiá-lo passo a passo, do zero, na construção do seu primeiro plugin para WordPress, ajudando você a compreender profundamente sua estrutura principal e o processo de desenvolvimento.

Noções básicas de plugins do WordPress e configuração do ambiente de desenvolvimento

Antes de começar a programar, é fundamental entender a essência dos plugins do WordPress e montar um ambiente de desenvolvimento adequado. Um plugin é, em essência, um ou mais arquivos PHP que seguem os padrões do WordPress, por meio de específicos钩子(Hooks) interagem com o sistema principal.

Definição básica do plugin

Cada plugin deve ter um arquivo principal único e declarar as informações do plugin em um comentário em formato específico no seu cabeçalho. Esse comentário é a base para que o WordPress reconheça e exiba metadados do plugin, como nome, descrição e versão, na página de gerenciamento de plugins.

Leitura recomendada Desvendando o desenvolvimento de plugins: construa sua primeira extensão do zero

Configure o ambiente de desenvolvimento local.

Para desenvolver de forma eficiente e segura, é altamente recomendável usar um ambiente de servidor local. Você pode escolher ferramentas como XAMPP, MAMP, Local by Flywheel ou Docker. O requisito principal é ter o PHP instalado (com uma versão compatível com o seu servidor de destino), além de MySQL/MariaDB e Apache/Nginx. Depois disso, baixe os arquivos mais recentes do núcleo do WordPress e conclua a instalação.

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).

Crie seu primeiro plugin: miniaplicativo de saudação

Agora, vamos colocar a mão na massa para criar um plugin simples. A função deste plugin é: adicionar automaticamente uma frase de saudação personalizada ao final do conteúdo dos artigos do site.

Primeiramente, no WordPress… wp-content/plugins No diretório, crie uma nova pasta com o nome de my-first-greeting-pluginEm seguida, crie o arquivo PHP principal dentro dessa pasta, que pode ser nomeado como my-first-greeting-plugin.php

Declaração das informações do cabeçalho do plugin

Abra o arquivo principal e insira o código a seguir para definir o plugin:

<?php
/**
 * Plugin Name:       我的第一个问候语插件
 * Plugin URI:        https://yourwebsite.com/my-first-greeting-plugin
 * Description:       这是一个练习用的插件,用于在文章末尾添加问候语。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-greeting-plugin
 */

Depois de salvar o arquivo, entre no painel administrativo do WordPress, na página “Plugins”, e você deverá ver esse novo plugin aparecer na lista de plugins, podendo ativá-lo. Claro, no momento ele ainda não tem nenhuma funcionalidade.

Leitura recomendada 10 dicas essenciais e guia prático para otimizar o desempenho de sites de e-commerce com WooCommerce

Adicione funcionalidades principais usando hooks

O funcionamento do WordPress depende fortemente do mecanismo de hooks, dividido em动作钩子(Action Hooks) e过滤器钩子(Ganchos de Filtro). Precisamos adicionar texto após o conteúdo do artigo, é necessário usar the_content Este gancho de filtro.

Abaixo das notas no cabeçalho do arquivo principal, adicione as seguintes funções e ganchos:

// 定义向文章内容添加问候语的函数
function mfgp_add_greeting_to_content( $content ) {
    // 确保只在主循环的单篇文章页面显示
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $greeting = '<p style="color:#666; font-style:italic;">Obrigado por ler este artigo! Desejo a você um ótimo dia!</p>';
        $content .= $greeting;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器钩子上
add_filter( 'the_content', 'mfgp_add_greeting_to_content' );

Depois de salvar o arquivo e ativar o plugin, abra qualquer artigo no site, role até o final e você deverá ver a saudação que foi adicionada. Com este exemplo simples, você já praticou os conceitos mais fundamentais do desenvolvimento de plugins: declarar um plugin, escrever funções de funcionalidade, e…add_filterouadd_actionMonte a função no hook correto.

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%

Melhorias nas funcionalidades dos plugins: Adição de uma página para gerenciar as configurações.

Um plugin maduro geralmente permite que os usuários façam configurações no backend. Em seguida, adicionaremos uma página de configuração simples para o plugin de saudações, permitindo que os administradores personalizem a mensagem exibida.

Criar item de menu de gerenciamento

Primeiro, precisamos usaradd_actionO hook chama uma função que usará add_options_page A função adiciona uma subpágina ao menu “Configurações” no painel administrativo do WordPress.

No arquivo principal, continue adicionando o seguinte código:

Leitura recomendada De zero a um: um guia completo para o desenvolvimento de plug-ins do WordPress e tutoriais práticos

// 添加设置菜单
function mfgp_add_admin_menu() {
    add_options_page(
        '问候语插件设置',          // 页面标题
        '自定义问候语',           // 菜单标题
        'manage_options',         // 权限要求(管理员)
        'my-greeting-plugin',     // 菜单 Slug
        'mfgp_settings_page_html' // 用于输出页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' );

Criar página de configurações e lógica de salvamento

Agora, precisamos definir a função de callback mencionada acima. mfgp_settings_page_html para renderizar o formulário HTML da página de configurações e processar o salvamento dos dados do formulário. O WordPress fornece a API de Configurações para simplificar esse processo, mas, para entender claramente o fluxo, primeiro usaremos um método básico.

// 定义设置页面的 HTML 结构
function mfgp_settings_page_html() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }

// 处理表单提交(非设置API方式)
    if ( isset( $_POST['mfgp_greeting_text'] ) ) {
        // 验证 Nonce 确保请求来源安全
        check_admin_referer( 'mfgp_save_settings' );
        // 清理并保存输入的数据
        $greeting_text = sanitize_textarea_field( $_POST['mfgp_greeting_text'] );
        update_option( 'mfgp_custom_greeting', $greeting_text );
        echo '<div class="notice notice-success is-dismissible"><p>A configuração foi salva!</p></div>';
    }

// 获取已保存的问候语
    $saved_greeting = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form method="post" action="">
            
            <table class="form-table">
                <tr>
                    <th scope="row"><label for="mfgp_greeting_text">Saudação personalizada</label></th>
                    <td>
                        <textarea name="mfgp_greeting_text" id="mfgp_greeting_text" rows="5" cols="50" class="large-text"><?php echo esc_textarea( $saved_greeting ); ?></textarea>
                        <p class="description">Este texto será exibido no final de cada artigo.</p>
                    </td>
                </tr>
            </table>
            
        <input type="hidden" name="trp-form-language" value="pt"/></form>
    </div>
    &lt;?php
}

Atualizar função de saída do front-end

Por fim, precisamos modificar a função de saída do front-end para que ela use as opções do banco de dados (get_optionler a saudação de ) em vez de usar texto codificado.

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.
function mfgp_add_greeting_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        // 从数据库选项中获取问候语,如果没有则使用默认值
        $greeting_text = get_option( 'mfgp_custom_greeting', '感谢您阅读本文!祝你拥有美好的一天!' );
        if ( ! empty( $greeting_text ) ) {
            $greeting = '<p style="color:#666; font-style:italic;">'`. esc_html($greeting_text)`.'</p>';
            $content .= $greeting;
        }
    }
    return $content;
}

Agora, o administrador pode editar livremente o texto exibido na página Configurações -> Saudação personalizada, e a exibição no front-end será atualizada instantaneamente.

Preparação para o lançamento do plugin: Internacionalização e reforço da segurança

Antes de compartilhar o plugin com outras pessoas ou enviá-lo ao diretório oficial, ainda é necessário realizar alguns importantes trabalhos finais, principalmente a internacionalização e o reforço da segurança.

Implementar a internacionalização de texto

A internacionalização (i18n) permite que seu plugin seja traduzido para outros idiomas. Você precisa envolver todas as strings voltadas para o usuário com funções específicas. Modifique as strings em nosso plugin:

1. No comentário do cabeçalho do plugin, já definimos Text Domain
2. No código, use () ou esc_html() Envolva a string com uma função. Por exemplo:

    // 在设置页面函数中
    $greeting_text = get_option( 'mfgp_custom_greeting', __( ‘感谢您阅读本文!祝你拥有美好的一天!’, ‘my-first-greeting-plugin’ ) );
    echo ‘<h1>’ . esc_html__( ‘问候语插件设置’, ‘my-first-greeting-plugin’ ) . ‘</h1>’・ Na função de saída do front-end (nota: a saída do front-end normalmente não necessita de tradução, a menos que seja determinado pelo tema ou pelo utilizador). 
・ Mas, se a própria saudação necessitar de vários idiomas, poderá ser necessária uma lógica mais complexa.

3. Use ferramentas como o Poedit para criar .pot Ficheiros de modelo, a partir dos quais os tradutores podem criar. .po e .mo Documentos.

Reforçar a segurança

A segurança é de extrema importância. Já utilizamos algumas funções de segurança, como…sanitize_textarea_fieldesc_htmlesc_textareaewp_nonce_fieldAlém disso, também é necessário prestar atenção a:
* Verificação de permissões: usar no início da função da página de administração current_user_can Faça uma verificação.
* 数据验证与清理:对所有用户输入(如 $_POST, $_GET)进行验证(是否符合预期格式)和清理(移除非法字符)。
* Atualizações sem condição de corrida: para opções importantes, considere usar wp_options Ao exibir formulários, a maneira mais segura é usar a API de Configurações, que já inclui nonce e verificações de permissão.

resumos

Por meio deste guia, concluímos toda a jornada de um plugin completo para WordPress, da criação à publicação. Começamos entendendo os fundamentos dos plugins e criamos o arquivo principal com as informações de cabeçalho padrão; depois, por meio de uma simples funcionalidade de saudação, praticamos o mecanismo de hooks mais central do WordPress; em seguida, adicionamos uma página de configurações no painel administrativo ao plugin, implementando a possibilidade de configuração pelo usuário; por fim, exploramos as etapas-chave antes da publicação — internacionalização e reforço de segurança. Cada etapa incluiu as funções centrais do WordPress e as melhores práticas. Depois de dominar esses conhecimentos básicos, você poderá tentar desenvolver plugins mais complexos e criativos, contribuindo para o ecossistema global do WordPress.

Perguntas frequentes Perguntas frequentes

Quais conhecimentos prévios são necessários para desenvolver plugins do WordPress?

Você precisa ter conhecimentos básicos de programação em PHP, entender HTML e CSS, e ter alguma familiaridade com as operações básicas do WordPress, como posts, páginas e menus. Estar familiarizado com programação orientada a objetos (OOP) não é obrigatório, mas ajudará bastante no desenvolvimento de plugins maiores.

Por que o meu plugin não está aparecendo no menu de fundo (backend menu) após ser ativado?

A causa mais comum é um problema de permissão. Verifique se, ao chamaradd_options_pageou funções semelhantes, se o segundo parâmetro (capability) está definido corretamente, como ‘manage_options’Além disso, certifique-se de que sua função tenha sido corretamente passada poradd_action( ‘admin_menu’, ...)O gancho está montado e não há erros de sintaxe que impeçam a execução da função. Você pode adicionar no início do códigoerror_logUse a função para depurar.

Como depurar o meu plugin do WordPress?

Primeiro, certifique-se de que em seu… wp-config.php O modo de depuração do WordPress foi ativado no arquivo: define( ‘WP_DEBUG’, true ); e define( ‘WP_DEBUG_LOG’, true );Assim, as mensagens de erro serão registradas em /wp-content/debug.log O arquivo está contido no sistema. Além disso, é possível utilizar as abas “Console” e “Network” dos ferramentas de desenvolvimento do navegador para realizar a depuração do código front-end. No caso de lógicas mais complexas, é recomendado utilizar…error_log( print_r( $variable, true ) );Imprimir o valor de uma variável no log é um método comum.

Como meu plugin pode ser compatível com outros plugins ou temas?

Para garantir a máxima compatibilidade, seu plugin deve: 1) usar um prefixo exclusivo para nomear todas as funções, classes, variáveis e opções (como usamosmfgp_), evitando conflitos de nomenclatura. 2) Ao adicionar ou modificar estilos de frontend ou backend, procure usar nomes de classes de seletores exclusivos. 3) Sempre que possível, forneça ganchos de filtro (apply_filters), permitindo que outros desenvolvedores modifiquem o comportamento do seu plugin. 4) Evite modificar diretamente as tabelas do banco de dados ou os arquivos principais do WordPress.