Guia completo para o desenvolvimento de plugins do WordPress - Crie plugins de extensão profissionais do zero.

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

Noções básicas de plugins para WordPress e ambiente de desenvolvimento

Para desenvolver um plugin para o WordPress, é necessário primeiro entender o que é um plugin. Essencialmente, um plugin é um ou mais arquivos PHP que contêm comentários de cabeçalho em um formato específico, utilizados para se identificar perante o WordPress. Ele permite expandir ou modificar as funcionalidades do sistema através da API abrangente fornecida pelo WordPress (como ganchos de ação, filtros, funções de banco de dados, etc.), sem a necessidade de alterar o código do próprio WordPress.

Para começar o desenvolvimento, você precisa de um ambiente de desenvolvimento local. Isso geralmente inclui um servidor local (como XAMPP, MAMP ou Local by Flywheel), PHP (na versão compatível com as exigências do WordPress), um banco de dados MySQL e um editor de código (como VS Code ou PhpStorm). É altamente recomendado realizar o desenvolvimento e a depuração no ambiente local para evitar impactos no site online.

Estrutura básica dos arquivos de um plugin

Um plugin muito simples pode conter apenas um arquivo. No entanto, para manter o código claro e fácil de manter, é recomendável seguir uma certa estrutura. Um diretório típico de um plugin pode conter: o arquivo principal do plugin (por exemplo…your-plugin-name.php), umincludesPastas (para armazenar classes ou funções relacionadas às funcionalidades principais), umaadminPastas (para armazenar o código relacionado ao backend), umapublicPastas (para armazenar o código relacionado ao front-end), umaassetsPastas (para armazenar JavaScript, CSS e imagens), bem como pastas com pacotes de idiomas e modelos (opcionais).

Leitura recomendada Guia completo para o desenvolvimento de plugins do WordPress: de iniciante a tutoriais práticos avançados.

O arquivo principal do plugin é o ponto de entrada para o próprio plugin, e as anotações no início desse arquivo são de extrema importância. O WordPress lê essas anotações para exibir informações sobre o plugin no painel de administraçã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 o seu primeiro plugin.

Vamos começar com um exemplo clássico de “Hello World”; isso ajudará você a se familiarizar com o processo básico e as normas de criação de plugins.

Criar o arquivo do plugin principal

Primeiramente, dentro do diretório de instalação do seu WordPress…wp-content/pluginsDentro da pasta, crie uma nova pasta, por exemplo…my-first-pluginDentro dessa pasta, crie um arquivo PHP e nomeie-o…my-first-plugin.php

Abra este arquivo e insira o seguinte código. O bloco de informações do plugin (Plugin Header) no início é obrigatório; ele informa ao WordPress que se trata de um plugin.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个学习插件开发的示例插件,它将在文章内容顶部显示“Hello World!”。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 在文章内容前添加“Hello World”
 *
 * @param string $content 原始文章内容。
 * @return string 修改后的文章内容。
 */
function mfp_add_hello_world( $content ) {
    if ( is_single() && in_the_loop() && is_main_query() ) {
        $custom_text = &#039;<p style="background-color:#f0f0f0; padding:10px;"><strong>Olá, Mundo! Este é o meu primeiro plugin.</strong></p>';
        return $custom_text . $content;
    }
    return $content;
}
add_filter( 'the_content', 'mfp_add_hello_world' );

Após salvar o arquivo, faça login no painel de administração do seu WordPress e vá para a página “Plugins”. Você deve ver “Meu Primeiro Plugin” na lista de plugins. Ative-o, e então acesse um artigo no site; você notará que o parágrafo “Hello World!” foi adicionado no topo do conteúdo do artigo.

Leitura recomendada Eu vou te ensinar, passo a passo, como dominar o desenvolvimento de plugins para o WordPress, começando do zero.

Compreender os elementos-chave no código

Este código demonstra um conceito central do desenvolvimento em WordPress: os filtros (Filters). Definimos uma função…mfp_add_hello_worldEle recebe o conteúdo do artigo.$contentComo parâmetro, e retornamos o conteúdo modificado. Em seguida, usamos…add_filter()A função monta essa função personalizada no núcleo do WordPress.the_contentEste filtro está ativado (acoplado aos hooks do sistema). O WordPress está executando o código relacionado a esse filtro.the_content()Nesse momento, todas as funções montadas nesse “gancho” (hook) serão executadas sequencialmente, o que nos permite modificar o resultado final.

As condições de avaliação no códigois_single() && in_the_loop() && is_main_query()É para garantir que as nossas modificações afetem apenas um artigo específico na consulta principal, sem influenciar a página de lista de artigos ou outras partes do sistema. Esta é uma prática importante para a criação de plugins eficientes e sem efeitos colaterais.

Técnicas centrais de desenvolvimento de plugins

Para desenvolver plugins profissionais e poderosos, é essencial dominar alguns dos APIs principais fornecidos pelo WordPress.

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%

Usar ganchos de ação (action hooks) e ganchos de filtro (filter hooks)

Os “ganchos” (Hooks) são a pedra angular da arquitetura de plugins do WordPress. Eles são divididos em dois tipos: Ações (Actions) e Filtros (Filters). Os ganchos de ação são acionados em pontos específicos de execução (como ao publicar um artigo ou ao carregar a área de administração), permitindo que você execute algum código. Já os ganchos de filtro permitem que você modifique dados (como o conteúdo do artigo ou o título) antes que o WordPress os utilize.

fazer uso deadd_action()Vamos falar sobre ações de montagem (mounting actions). Por exemplo, criar tabelas em um banco de dados quando um plugin é ativado é um requisito comum.

function mfp_create_custom_table() {
    global $wpdb;
    $table_name = $wpdb->prefix . 'my_custom_data';
    $charset_collate = $wpdb->get_charset_collate();

$sql = "CREATE TABLE IF NOT EXISTS $table_name (
        id mediumint(9) NOT NULL AUTO_INCREMENT,
        data varchar(255) NOT NULL,
        created_at datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
        PRIMARY KEY (id)
    ) $charset_collate;";

require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
    dbDelta( $sql );
}
register_activation_hook( __FILE__, 'mfp_create_custom_table' );

Aqui foi utilizado…register_activation_hookÉ uma função de registro especial, utilizada para especificar as ações que devem ser executadas quando um plugin é ativado.

Leitura recomendada Começando do zero: Por que escolher o desenvolvimento de plugins para o WordPress?

Criar um menu de gerenciamento e uma página de configurações

Disponibilizar uma página de configurações para o seu plugin é um sinal de que você está criando um plugin de qualidade. Utilizar a API de Configurações do WordPress (Settings API) permite criar páginas de opções de forma segura e padronizada.

O código abaixo demonstra como adicionar uma página de menu secundário ao menu principal “Configuraçõ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.
// 在管理后台初始化时添加菜单
add_action( 'admin_menu', 'mfp_add_admin_menu' );

function mfp_add_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',        // 所需权限
        'my-plugin-settings',    // 菜单slug
        'mfp_render_settings_page' // 用于渲染页面的回调函数
    );
}

function mfp_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/pt/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mfp_settings_group' ); // 输出安全字段
            do_settings_sections( 'my-plugin-settings' ); // 输出设置区域
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="pt"/></form>
    </div>
    <?php
}

// 初始化设置
add_action( 'admin_init', 'mfp_settings_init' );

function mfp_settings_init() {
    register_setting( 'mfp_settings_group', 'mfp_options' ); // 注册一个设置选项组

add_settings_section(
        'mfp_section_basic',
        '基本设置',
        null,
        'my-plugin-settings'
    );

add_settings_field(
        'mfp_field_text',
        '示例文本框',
        'mfp_field_text_render',
        'my-plugin-settings',
        'mfp_section_basic'
    );
}

function mfp_field_text_render() {
    $options = get_option( 'mfp_options' );
    ?>
    <input type='text' name='mfp_options[text_field]' value='<?php echo esc_attr( $options['text_field'] ?? '' ); ?>'>
    <p class="description">Este é um exemplo de caixa de texto.</p>
    &lt;?php
}

Segurança de plugins, internacionalização e preparação para lançamento

Os plugins desenvolvidos devem ser fortalecidos em termos de segurança, adaptados para diferentes idiomas (internacionalização) e adequadamente empacotados antes de serem disponibilizados para o público.

Validação de dados, escape e segurança

Nunca confie em dados inseridos pelo usuário ou em informações externas. Todos os dados recebidos devem ser verificados e processados com cautela.$_GET$_POST$_REQUESTOs dados obtidos de bancos de dados também precisam ser verificados (Validation) e escapados (Escaping) antes de serem utilizados.

  • Verificação: Analisa se os dados seguem o formato esperado (por exemplo, se são um endereço de e-mail, um número, etc.). Utilize funções como…is_email()intval()sanitize_text_field()
  • Escapamento: Ao exibir dados em HTML, JavaScript ou URLs, assegure-se de que os caracteres especiais sejam processados corretamente para evitar ataques de XSS. Use funções como…esc_html()esc_js()esc_url()wp_kses_post()

Em uma consulta SQL, é necessário usar…$wpdb->prepare()Utilize métodos apropriados para preparar os parâmetros, a fim de prevenir ataques de injeção de SQL.

Implementar a internacionalização de plugins

A internacionalização (i18n) permite que o seu plugin seja traduzido para outros idiomas. Isso requer dois passos: marcar as strings que podem ser traduzidas e carregar os arquivos de texto correspondentes.

Primeiramente, o cabeçalho do arquivo do plugin principal já foi definido.Text DomaineDomain PathEm seguida, em todos os locais do plugin onde houver strings que precisem ser traduzidas, use a função de tradução para envolvê-las. Por exemplo:__('Hello World', 'my-first-plugin')Usado para exibir traduções em PHP.esc_html_e('Settings', 'my-first-plugin')Usado para escapar e exibir o conteúdo original.

Durante a inicialização do plugin (por exemplo, ao usar…)init(Ação), é necessário carregar o arquivo de tradução:

function mfp_load_textdomain() {
    load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'init', 'mfp_load_textdomain' );

Depois disso, você pode usar ferramentas como o Poedit para criar o conteúdo desejado..potArquivo de modelo, para que o tradutor possa criá-lo..po/.moArquivos de idioma.

Verificação final e empacotamento

Antes de publicar, por favor, faça as seguintes verificações:
1. O código segue os padrões de codificação do WordPress.
2. Todas as funcionalidades foram amplamente testadas, incluindo o ativoamento, desativamento e a remoção (utilização).register_uninstall_hook(Limpar os dados).
3. Todo o código de depuração e as saídas temporárias foram removidos.
4. Foi criado um documento detalhado.readme.txtO arquivo deve seguir o formato exigido pelo WordPress oficial; ele será exibido na página do diretório de plugins.
5. Assegure-se de que o nome do diretório dos plugins e o nome do arquivo principal sejam únicos, para evitar conflitos com outros plugins.

Por fim, compacte toda a pasta do plugin em um arquivo ZIP. Assim, você poderá carregá-lo e instalá-lo diretamente pelo painel administrativo do WordPress, ou enviá-lo para o diretório oficial de plugins do WordPress.

resumos

O desenvolvimento de plugins para o WordPress é um processo que transforma ideias em funcionalidades reais, e isso só é possível com um profundo entendimento da arquitetura central do WordPress, especialmente da API de ganchos (hooks API). Começando com a criação de um simples plugin “Hello World”, você aprende passo a passo como construir interfaces de gerenciamento, manipular dados de forma segura, interagir com o banco de dados e, por fim, implementar funcionalidades de internacionalização. Esse é o caminho de crescimento de qualquer desenvolvedor de plugins. Seguir normas de codificação segura e utilizar interfaces padrão, como a API Settings, é fundamental para garantir a qualidade, a compatibilidade e a segurança dos plugins. Através da prática contínua e do estudo do código-fonte do WordPress, bem como de outros plugins de qualidade, você será capaz de criar extensões profissionais, confiáveis e populares para o sistema.

Perguntas frequentes Perguntas frequentes

Quais são os conhecimentos prévios necessários para desenvolver um plugin para o WordPress?

É necessário possuir conhecimentos básicos de programação em PHP, além de entender conceitos de HTML, CSS e JavaScript. Ter familiaridade com as operações básicas do WordPress – como a gestão de artigos, páginas e menus –, bem como um conhecimento dos seus conceitos fundamentais (como tipos de artigos, categorias e metadados –, será de grande ajuda no desenvolvimento de funcionalidades. Um conhecimento básico do banco de dados MySQL também será útil.

Como depurar o meu plugin do WordPress?

Primeiro, certifique-se de que…wp-config.phpO ficheiro foi aberto.WP_DEBUGeWP_DEBUG_LOGDessa forma, as mensagens de erro serão registradas no arquivo de log e não serão exibidas diretamente para os visitantes. Em segundo lugar, é possível utilizar…error_log()A função grava informações de depuração personalizadas no log. Para lógicas complexas, a combinação de ferramentas de depuração profissionais como o Xdebug com um IDE (como o PhpStorm) é a maneira mais eficiente.

Como meu plugin pode se comunicar com serviços de terceiros (como APIs)?

O WordPress oferece uma poderosa API HTTP (como…)wp_remote_get()wp_remote_post()Ele é usado para processar solicitações HTTP e é mais eficiente do que as funções nativas do PHP.file_get_contents()Ou o cURL pode ser mais seguro e ter melhor compatibilidade. Ao usar essas funções, lembre-se de lidar com possíveis erros e de definir tempos de espera (timeout) apropriados. Para APIs que precisam ser chamadas com frequência, considere o uso do sistema de cache “Transients” para melhorar o desempenho.

Como os nomes das classes e funções em um plugin devem ser escolhidos para evitar conflitos?

Para evitar conflitos com os nomes de funções e classes de outros plugins ou temas, é necessário usar um prefixo único. Geralmente, recomenda-se usar a abreviação ou o nome completo do plugin como prefixo. Por exemplo, se o seu plugin se chamar “Super Tool”, o nome da função pode ser algo como…stool_save_data()Os nomes das classes podem ser…Super_Tool_AdminOutra maneira mais moderna e segura é o uso de namespaces (espaços de nomes) em PHP, o que exige que o ambiente de execução do seu plugin suporte a versão PHP 5.3 ou superior.