Desenvolvimento de plug-ins do WordPress: Criando módulos funcionais personalizados do zero ao um

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

Compreender a estrutura básica dos plugins do WordPress

Antes de aprofundar-se no código, é essencial entender os elementos básicos de um plugin do WordPress. Um plugin é, essencialmente, um ou um conjunto de componentes que são inseridos no sistema do WordPress para adicionar novas funcionalidades ou modificar o comportamento do site.wp-content/plugins/Os arquivos PHP localizados no diretório contêm, em sua essência, um arquivo principal que contém as informações metadadas do plugin. Essas informações são comunicadas ao WordPress através de um bloco de comentários em um formato especial, que indica a existência do plugin.

O arquivo de entrada principal do plugin, por exemplo, o que chamamos de…my-first-plugin.phpÉ necessário que o arquivo do plugin contenha um comentário de cabeçalho específico. Esse bloco de comentários define o nome do plugin, a descrição, a versão, o autor e outras informações, sendo a única base para o WordPress reconhecer e carregar o plugin. Um plugin básico pode ser composto apenas por esse arquivo e, ao utilizar as APIs fornecidas pelo WordPress (como os Ganchos de Ação – Action Hooks e os Ganchos de Filtro – Filter Hooks), pode modificar ou expandir as funcionalidades do site.

As funcionalidades de um plugin podem ser muito simples, como adicionar uma linha de texto no fundo da página; ou extremamente complexas, como criar um sistema de comércio eletrônico completo. Independentemente da complexidade, o seu desenvolvimento segue o mesmo padrão básico: primeiro, criar a estrutura de arquivos correta no local adequado; em seguida, escrever o código e integrá-lo ao ciclo de vida do WordPress; por fim, realizar as configurações e interações necessárias através da interface de administração do WordPress.

Leitura recomendada Guia de Iniciação para Desenvolvimento de Plugins WordPress: Crie o Seu Primeiro Plugin do Zero

Crie o seu primeiro plugin.

Vamos praticar a criação de um plugin muito simples usando um exemplo clássico: “Hello World”. A função deste plugin é exibir uma saudação no topo do conteúdo dos artigos em todas as páginas do site.

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

Primeiramente, você precisa fazer isso localmente ou no servidor.wp-content/plugins/Crie uma nova pasta no diretório e nomeie-a…my-hello-pluginEm seguida, crie um arquivo PHP principal dentro dessa pasta; vamos chamá-lo de…my-hello-plugin.php

Criar o arquivo principal do plugin

Abramy-hello-plugin.phpArquivo e insira o seguinte código. Este código segue o formato padrão de plugins para WordPress, incluindo o cabeçalho de informações do plugin e o código que implementa as funcionalidades desejadas.

<?php
/**
 * Plugin Name:       我的问候插件
 * Plugin URI:        https://yourwebsite.com/my-hello-plugin
 * Description:       这是一个简单的插件,用于在文章内容前输出“您好,读者!”。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-hello-plugin
 */

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

/**
 * 在主文章内容前添加问候语。
 *
 * @param string $content 原始的文章内容。
 * @return string 添加了问候语后的新内容。
 */
function my_hello_add_greeting( $content ) {
    $greeting = &#039;<p style="background-color:#f0f8ff; padding:10px; border-left:4px solid #0073aa;"><strong>Olá, leitor(a)! Bem-vindo(a) a esta leitura.</strong></p>';
    // 只在主循环且是文章页面时添加
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'my_hello_add_greeting' );

Ative e teste o plugin.

Carregue a pasta que contém esse arquivo no servidor.wp-content/plugins/O diretório, ou, se você estiver desenvolvendo localmente, basta colocá-lo no local apropriado. Em seguida, faça login no painel administrativo do seu WordPress e navegue até o menu “Plugins”. Você deve conseguir ver o “Meu Plugin de Saudação” na lista de plugins. Clique no botão “Ativar”.

Após a ativação, ao acessar qualquer artigo ou página no site, você verá uma saudação com fundo azul claro e uma borda à esquerda antes do início do conteúdo principal do artigo. Esse processo ilustra claramente o fluxo principal do desenvolvimento de plugins: criar arquivos, adicionar funcionalidades usando “ganchos” (hooks) e ativar o plugin no backend. Você deu um passo importante no desenvolvimento de plugins para o WordPress.

Leitura recomendada Desenvolvimento de plugins do WordPress: construir extensões poderosas para websites do zero.

Utilize ganchos (hooks) e filtros para expandir as funcionalidades.

A flexibilidade e a capacidade de expansão do WordPress devem-se, em grande parte, ao seu sistema de “ganchos” (Hooks). Os ganchos são divididos em duas categorias: ganchos de ação (Actions) e ganchos de filtro (Filters). Compreendê-los e usá-los com habilidade é essencial para o desenvolvimento avançado de plugins.

Os ganchos de ação (action hooks) permitem que você insira e execute seu próprio código em momentos específicos do funcionamento do WordPress, como ao publicar um artigo ou ao carregar uma página. Por exemplo,save_postAs ações são acionadas quando o artigo ou a página é salvo no banco de dados. Você pode…add_action()A função “monta” sua função personalizada nesse gancho (hook).

Os “ganchos de filtro” (filter hooks) permitem que você modifique os dados gerados pelo WordPress durante o processo de processamento. Você registra uma função em um filtro, e quando o WordPress executa esse filtro, ele passa os dados para todas as funções registradas e recebe os valores retornados após o processamento. No exemplo acima, foi utilizado…the_contentÉ um típico gancho (hook) de filtro que permite que você modifique o conteúdo do artigo que está prestes a ser exibido.

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%

Crie uma opção de gerenciamento simples.

Um plugin realmente útil geralmente precisa de algumas opções que os usuários possam configurar. Isso envolve a interação com o backend do WordPress. Vamos demonstrar como adicionar uma página de configurações personalizada através de um exemplo simples.

Primeiramente, usamos…add_action(‘admin_menu’, …)Vamos registrar uma função que criará um novo item de menu no painel de administração.

/**
 * 在WordPress后台添加一个自定义菜单页面。
 */
function my_hello_add_admin_menu() {
    add_menu_page(
        ‘问候插件设置’, // 页面标题
        ‘问候插件’,     // 菜单标题
        ‘manage_options’, // 所需权限
        ‘my-hello-plugin’, // 菜单slug
        ‘my_hello_admin_page_html’, // 用于显示页面内容的回调函数
        ‘dashicons-format-chat’, // 图标(可选)
        80 // 菜单位置(可选)
    );
}
add_action( ‘admin_menu‘, ’my_hello_add_admin_menu’ );

/**
 * 自定义设置页面的HTML输出。
 */
function my_hello_admin_page_html() {
    // 检查用户权限
    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_hello_options’ );
            do_settings_sections( ‘my-hello-plugin’ );
            submit_button( ‘保存问候语设置’ );
            ?>
        <input type="hidden" name="trp-form-language" value="pt"/></form>
    </div>
    &lt;?php
}

Campos de configuração para registro e exibição

Apenas ter uma página não é suficiente; precisamos criar opções que possam ser salvas. Isso requer o uso de…add_action(‘admin_init’, …)…e tambémregister_setting()add_settings_section()eadd_settings_field()Uma série de funções.

Leitura recomendada Do iniciante ao especialista: guia completo para o desenvolvimento de plugins do WordPress.

/**
 * 初始化插件的设置。
 */
function my_hello_settings_init() {
    // 注册一个设置项到数据库的‘my_hello_options’键下
    register_setting( ‘my_hello_options‘, ’my_hello_greeting_text’ );

// 在页面中添加一个设置区域
    add_settings_section(
        ‘my_hello_section’, // 区域ID
        ‘问候语设置’,        // 区域标题
        ‘my_hello_section_html’, // 区域描述的回调函数
        ‘my-hello-plugin’ // 所属页面slug
    );

// 在区域内添加一个具体的设置字段
    add_settings_field(
        ‘my_hello_field’, // 字段ID
        ‘自定义问候语’,    // 字段标签
        ‘my_hello_field_html’, // 用于渲染字段HTML的回调函数
        ‘my-hello-plugin’, // 所属页面slug
        ‘my_hello_section’ // 所属区域ID
    );
}
add_action( ‘admin_init‘, ’my_hello_settings_init’ );

/**
 * 设置区域的描述信息。
 */
function my_hello_section_html() {
    echo ‘<p>Aqui você pode definir o conteúdo do cumprimento que será exibido no início dos artigos.</p>’;
}

/**
 * 渲染设置字段的HTML。
 */
function my_hello_field_html() {
    // 从数据库获取已保存的值,如果没有则使用默认值
    $greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    ?&gt;
    <input type="‘text’"
           id="‘my_hello_greeting_text’"
           name="‘my_hello_greeting_text’"
           value="“NO NUMERIC NOISE KEY" 1000”
 class="“regular-text”" />
    <p class="“description”">Por favor, insira a saudação que deseja que seja exibida antes do conteúdo do artigo.</p>
    &lt;?php
}

Agora, já temos uma página de configurações do backend com um campo de entrada. Em seguida, é necessário modificar as funções de funcionalidade originais.my_hello_add_greetingDeixe que ele leia as saudações das opções no banco de dados.

function my_hello_add_greeting( $content ) {
    // 获取保存的自定义问候语,如果不存在则使用默认值
    $custom_greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    $greeting = ‘<p style="“background-color:#f0f8ff;" padding:10px; border-left:4px solid #0073aa;”><strong>’ . esc_html( $custom_greeting ) . ‘</strong></p>’;
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}

Com isso, um plugin com funcionalidades básicas de configuração de backend está pronto. Os usuários podem modificar livremente o texto das saudações no menu “Plugin de Saudações” no backend, e os artigos exibidos no frontend aplicarão automaticamente as configurações mais recentes.

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.

Melhores práticas e segurança no desenvolvimento de plugins

Desenvolver um plugin para o WordPress para ser usado por outros usuários exige não apenas que as funcionalidades sejam completas, mas também que sejam seguidas as melhores práticas em termos de segurança, desempenho e manutenção.

Considerações de segurança

A segurança é o princípio mais importante. Nunca confie nas informações fornecidas pelos usuários. Todos os dados coletados deles (como…)$_GET$_POST$_COOKIEAntes de serem utilizados em consultas de banco de dados, exibidos em páginas ou em operações com arquivos, é necessário realizar a devida limpeza, validação e escape dos dados.

Para os dados que são exibidos em uma página HTML, use…esc_html()esc_attr()ouwp_kses_post()É necessário usar funções de escape para esses caracteres. Para as variáveis utilizadas em consultas de banco de dados, é obrigatório utilizar essas funções.$wpdb->prepare()Para realizar consultas parametrizadas, nunca deve-se simplesmente concatenar variáveis diretamente em uma instrução SQL. Em plugins, deve-se sempre utilizar métodos específicos para isso.defined(‘ABSPATH’) or die;Isso é para evitar que os arquivos sejam acessados diretamente.

Organização de código e internacionalização

Conforme as funcionalidades dos plugins aumentam, torna-se difícil manter todo o código em um único arquivo principal. A abordagem mais sensata é dividir o código em arquivos separados, de acordo com suas funções. Geralmente, o arquivo principal é responsável por definir os “ganchos” (hooks) e os processos centrais do sistema, enquanto as páginas de configuração, as funções específicas, as definições de classes, etc., devem ser armazenadas em arquivos próprios.includes/ouadmin/public/Em tais subdiretórios, e através de…require_onceIntrodução.

Para que o seu plugin possa ser usado por usuários em todo o mundo, é necessário suportar a internacionalização (i18n). Isso significa que todas as strings de texto exibidas no plugin devem utilizar as funções de tradução do WordPress.__()_e()Efetue a embalagem e, em seguida,Text DomainDefina um identificador único (por exemplo, o nome do diretório do plugin). No bloco de comentários no início do arquivo, já o definimos.Text Domain: my-hello-pluginNo código, deve ser usado da seguinte maneira:

$greeting = ‘<p><strong>’ . esc_html__( ‘您好,读者!欢迎阅读本文。’ , ’my-hello-plugin’ ) . ‘</strong></p>’;

Dessa forma, os tradutores poderão utilizar o recurso..poe.moO arquivo contém as traduções para diferentes idiomas do seu plugin.

otimização do desempenho

Os plugins devem minimizar ao máximo o impacto no desempenho do site. Evite realizar muitas consultas ao banco de dados ou cálculos complexos a cada carregamento de página, especialmente no lado front-end. Utilize de forma adequada a API de cache temporária (Transients API) do WordPress para armazenar resultados de consultas que não mudam com frequência. Por exemplo, se você quiser cachear o resultado de uma solicitação à API, pode fazer o seguinte:

$data = get_transient( ‘my_plugin_api_data’ );
if ( false === $data ) {
    // 数据不存在或已过期,从API获取
    $data = wp_remote_retrieve_body( wp_remote_get( ‘https://api.example.com/data’ ) );
    // 将数据存储12小时
    set_transient( ‘my_plugin_api_data’, $data, 12 * HOUR_IN_SECONDS );
}
// 使用 $data

Além disso, assegure-se de carregar seus arquivos de CSS e JavaScript apenas nas páginas que precisam deles. Utilize…wp_enqueue_script()ewp_enqueue_style()Funções, acompanhadas dos hooks apropriados (como…)wp_enqueue_scriptsPara carregar os recursos front-end, utiliza-se o método (…) ; para os recursos back-end, utiliza-se o método (…).admin_enqueue_scriptsGancho.

resumos

Através das orientações passo a passo deste artigo, completamos o processo de desenvolvimento de um simples plugin “Hello World” até um plugin prático que dispõe de opções de configuração no backend e segue princípios básicos de segurança e organização do código. O ponto-chave é entender e utilizar o mecanismo central do WordPress: o sistema de ganchos (hooks). Ele nos permite expandir as funcionalidades da plataforma de uma maneira modular e não invasiva. Seja para modificar o conteúdo (filtros) ou executar tarefas específicas (ações), os ganchos atuam como uma ponte que liga o nosso código ao mundo do WordPress.

Lembre-se: o desenvolvimento de plugins de alta qualidade não se limita a fazer com que as funcionalidades funcionem. Envolve o tratamento seguro dos dados inseridos pelos usuários, a organização clara do código, o suporte à internacionalização e uma análise detalhada do desempenho do site. Tudo começa com a definição de cabeçalhos de arquivos de plugin claros e bem estruturados, passa pelo uso de APIs padrão para criar menus e configurações, e termina com a garantia de que os dados exibidos sejam escapados de maneira segura. Cada passo afeta a qualidade, a segurança e a experiência do usuário com o plugin. Continue a explorar as diversas APIs e funções do WordPress, e você será capaz de criar plugins poderosos e confiáveis.

Perguntas frequentes Perguntas frequentes

Que conhecimentos básicos são necessários para o desenvolvimento de plugins?

Você precisa ter conhecimentos básicos da linguagem de programação PHP, incluindo conceitos fundamentais como variáveis, funções, arrays, condições de avaliação e ciclos. Ter também um entendimento básico de HTML e CSS é muito útil, pois os plugins frequentemente precisam gerar ou modificar a interface do lado cliente (front-end). Conhecer o uso básico do WordPress e a estrutura do seu backend (back-end) tornará o processo de desenvolvimento mais eficiente.

Como depurar o meu plugin do WordPress?

Primeiro, certifique-se de que…wp-config.phpO modo de depuração do WordPress foi ativado no arquivo. Isso foi feito através de uma configuração específica.define('WP_DEBUG', true);edefine('WP_DEBUG_LOG', true);As mensagens de erro serão registradas.wp-content/debug.logNos arquivos, isso é mais seguro do que exibir o conteúdo diretamente na página. Além disso, é possível usar essa abordagem em combinação com outras técnicas.error_log()As funções podem imprimir os valores das variáveis, ou você pode usar os painéis “Rede” e “Console” dos ferramentas de desenvolvimento do navegador para verificar problemas com os scripts front-end e os estilos.

O plugin que desenvolvi pode ser carregado no diretório oficial de plugins?

Sim, mas é necessário atender aos requisitos oficiais de envio de plugins do WordPress. Isso inclui garantir que o seu plugin esteja de acordo com a licença compatível com o GPL, siga os padrões de codificação do WordPress, tenha um código seguro e sem conteúdo malicioso, e forneça documentação clara. Antes de enviar, é recomendado ler atentamente o manual para desenvolvedores de plugins e as diretrizes de envio fornecidos pelo WordPress. O processo de envio deve ser realizado através do sistema de envio de plugins do WordPress.org, onde o plugin será revisado.

Qual é a diferença entre plugins e funcionalidades de temas (templates)? Quando é apropriado desenvolver um plugin?

O “Tema” (Theme) controla principalmente a aparência e o layout do site, sendo responsável pelos arquivos de modelo (templates), pelas tabelas de estilo (style sheets) e por algumas funções relacionadas à exibição do conteúdo. Já os “Plugins” (Plugins) são utilizados para adicionar ou modificar funcionalidades do site, e seu impacto geralmente não depende do tema em uso. Um bom princípio é o seguinte: se uma funcionalidade está diretamente relacionada à aparência do site (como o layout das páginas ou a escolha de cores), ela pode ser integrada ao tema. No entanto, se se trata de uma funcionalidade genérica e independente (como formulários de contato, otimização para mecanismos de busca (SEO), ou cache), ela deve ser desenvolvida como um plugin, de modo que permaneça disponível independentemente da alteração do tema. Isso ajuda a manter a separação entre as funcionalidades e o design, aumentando a flexibilidade do sistema.