Guia Completo para o Desenvolvimento de Plugins para WordPress: Um Tutorial Prático do Início ao Aperfeiçoamento

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

Configurar o ambiente de desenvolvimento de plugins do WordPress.

Para começar a desenvolver plugins para o WordPress, é necessário primeiro criar um ambiente de desenvolvimento local profissional. Isso não só permite que você faça testes sem afetar o site online, como também melhora significativamente a eficiência do desenvolvimento. Um ambiente de desenvolvimento típico inclui software de servidor local (como XAMPP, MAMP ou Local by Flywheel), um editor de código (como VS Code ou PHPStorm) e uma instalação limpa do WordPress.

O arquivo central de desenvolvimento é o arquivo principal do seu plugin, e seu nome segue regras específicas. O arquivo principal do plugin geralmente é um arquivo PHP, por exemplo… my-first-plugin.phpEste arquivo deve conter comentários de cabeçalho específicos para plugins; o WordPress utiliza essas informações para identificar o seu plugin. Um exemplo básico de comentário de cabeçalho para um plugin é o seguinte:

<?php
/**
 * Plugin Name: 我的第一个插件
 * Plugin URI:  https://example.com/my-first-plugin
 * Description: 这是一个简短的插件描述,用于在后台插件列表中显示。
 * Version:     1.0.0
 * Author:      你的名字
 * Author URI:  https://example.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Coloque o arquivo que contém o código acima no diretório de instalação do WordPress. /wp-content/plugins/ No diretório correspondente, entre na página “Plugins” do painel administrativo do WordPress, e você poderá ver e ativar o seu plugin. Embora ele ainda não tenha nenhuma funcionalidade, isso representa o sucesso na configuração do ambiente de desenvolvimento.

Leitura recomendada Dominar o desenvolvimento de plugins para o WordPress: Construa o seu primeiro plugin personalizado do zero.

Compreender a estrutura do diretório de plugins

À medida que as funcionalidades dos plugins se tornam mais complexas, é difícil manter todo o código em um único arquivo principal. Portanto, é essencial criar uma estrutura de arquivos e diretórios clara. Um diretório de plugins bem organizado não só facilita a colaboração entre a equipe, como também a expansão de novas funcionalidades no futuro.

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

Uma estrutura de diretório para plugins de tamanho médio recomendada é a seguinte:
- my-plugin/ (Diretório raiz do plugin)
- my-plugin.php (Arquivo principal do plugin, responsável pelo processo de inicialização e pelas definições essenciais.)
- uninstall.php (Script de limpeza executado ao desinstalar o plugin)
- includes/ (Arquivo que contém as classes ou funções das funcionalidades principais)
- admin/ (Código relacionado à interface de gerenciamento do backend)
- public/ (Contém o código do front-end direcionado aos usuários.)
- assets/ (Armazena recursos estáticos como CSS, JavaScript, imagens, etc.)
- languages/ (Arquivos de tradução internacional .pot/.mo são armazenados aqui.)

No arquivo principal my-plugin.php Nesse contexto, você geralmente define constantes relacionadas aos plugins (como o caminho do plugin e o URL), e depois as utiliza em seu código. require_once As instruções introduzem, conforme necessário, arquivos de funcionalidades de outros diretórios. Esse método modular permite que o gerenciamento do código seja organizado e eficiente.

Mecanismo central dos plugins: Ganchos (hooks) e filtros (filters)

A filosofia central do desenvolvimento de plugins para o WordPress é o conceito de “ganchos (Hooks)”. O mecanismo de ganchos permite que você insira seu próprio código em momentos específicos do funcionamento do WordPress, ou modifique os dados gerados por outras funções, sem precisar alterar o código-fonte do próprio WordPress. Os ganchos são divididos em dois tipos principais: Ações (Actions) e Filtros (Filters).

Os ganchos de ação (action hooks) permitem que você execute funções personalizadas quando eventos específicos ocorrem. Por exemplo, quando um artigo é publicado, quando um usuário faz login ou quando o menu do backend é carregado. add_action() A função pode “montar” sua função de callback em um gancho de ação (action hook) especificado.

Leitura recomendada Dominar o desenvolvimento de plugins para o WordPress: Construa seu primeiro módulo de funcionalidade expansiva do zero.

Os “ganchos de filtro” (filter hooks) permitem que você modifique os dados. No processo de processamento do WordPress, os dados (como o conteúdo dos artigos, títulos, resumos) passam por uma série de filtros antes de serem armazenados no banco de dados ou exibidos no navegador. Você pode utilizar esses filtros para realizar alterações conforme necessário. add_filter() Existem funções para modificar esses dados.

Como adicionar um gancho de ação?

Suponha que você queira adicionar automaticamente uma declaração de direitos autorais no final de cada artigo. Isso requer que uma ação seja executada após o conteúdo do artigo ser renderizado; mais precisamente, é necessário modificar o conteúdo do artigo, portanto, o uso de filtros é mais apropriado. No entanto, para demonstrar o funcionamento dos “ganchos de ação” (action hooks), consideraremos enviar um e-mail para o administrador no momento da publicação do artigo.

Primeiramente, você precisa criar uma função de callback (função de retorno de chamada). Por exemplo: myplugin_notify_admin_on_publishEntão, use… add_action() A função o monta (ou o associa) em um determinado local ou sistema. publish_post Nessa ação.

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 myplugin_notify_admin_on_publish( $post_id, $post ) {
    // 获取管理员邮箱
    $admin_email = get_option( 'admin_email' );
    $subject = '新文章已发布:' . $post->post_title;
    $message = '您网站上的文章“' . $post->post_title . '”刚刚被发布。';
    // 发送邮件
    wp_mail( $admin_email, $subject, $message );
}
// 将函数挂载到 publish_post 动作钩子,优先级为10,接受2个参数
add_action( 'publish_post', 'myplugin_notify_admin_on_publish', 10, 2 );

Como adicionar um gancho (hook) de filtro?

Agora, vamos realizar o objetivo inicial: adicionar informações de copyright no final do conteúdo do artigo. Para isso, precisamos realizar uma filtragem. the_content Esses dados.

function myplugin_add_copyright_to_content( $content ) {
    // 确保只在网站前端的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $copyright_text = '<p><em>Os direitos de autor deste artigo pertencem a este site. Por favor, indique a fonte ao republicá-lo.</em></p>';
        $content .= $copyright_text;
    }
    return $content; // 必须返回修改后的内容
}
add_filter( 'the_content', 'myplugin_add_copyright_to_content' );

Compreender e utilizar os “ganchos” (hooks) de forma proficiente é a chave para desbloquear o potencial ilimitado de personalização do WordPress.

Criar a página de administração do gerenciador de plugins.

Muitos plugins precisam fornecer opções de configuração para os usuários, o que geralmente é feito através das páginas do menu de administração no backend do WordPress. O WordPress disponibiliza uma série de funções para adicionar itens de menu principais ou submenus, bem como para renderizar as páginas de configuração correspondentes.

Leitura recomendada Aprender a desenvolver plugins para o WordPress do zero: construa sua primeira funcionalidade personalizada

Adicionar um menu de administração de nível superior

fazer uso de add_menu_page() A função pode criar um item de menu independente no painel de controle do seu plugin. Esta função requer vários parâmetros, incluindo o título da página, o título do menu, as permissões do usuário, o alias do menu e uma função de callback, entre outros.

O código abaixo demonstra como adicionar uma página de menu principal simples:

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 myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',       // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',    // 所需权限(管理员)
        'myplugin-settings', // 菜单别名(slug)
        'myplugin_render_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用Dashicons)
        30                   // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 渲染设置页面的回调函数
function myplugin_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/pt/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、非ce等(需要先使用 settings_fields 和 register_setting)
            settings_fields( 'myplugin_options' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="pt"/></form>
    </div>
    &lt;?php
}

Apenas criar uma página não é suficiente; geralmente, é necessário adicionar campos de configuração que possam ser salvos nessa página. Isso é feito em conjunto com a API de Configurações (Settings API) do WordPress, que permite o processamento seguro do registro, verificação e armazenamento dessas opções.

Use a API de configurações para registrar as opções.

A configuração da API oferece uma maneira padrão e segura de criar formulários que contêm campos como caixas de entrada, caixas de seleção, etc., e salva automaticamente os dados no WordPress. wp_options No quadro de dados.

Primeiramente, você precisa registrar uma opção de configuração e, em seguida, adicionar uma área de configuração e os campos correspondentes.

function myplugin_settings_init() {
    // 注册一个新设置项 “myplugin_options”
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_settings', // 存储在wp_options表中的option_name
        'myplugin_sanitize_callback' // 可选的清理回调函数
    );

// 在页面 “myplugin-settings” 上添加一个区域
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_callback',
        'myplugin-settings'
    );

// 向该区域添加一个字段
    add_settings_field(
        'myplugin_field_footer_text',
        '页脚文本',
        'myplugin_field_footer_text_callback',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_footer_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

// 字段渲染回调函数
function myplugin_field_footer_text_callback() {
    $options = get_option( 'myplugin_settings' );
    $value = $options['footer_text'] ?? ''; // PHP 7.0+ 空合并运算符
    echo '<input type="text" id="myplugin_field_footer_text" name="myplugin_settings[footer_text]" value="' . esc_attr( $value ) . '" class="regular-text" />';
}

As páginas de backend criadas dessa maneira contam com a verificação de dados, o armazenamento e a segurança garantidos pelo núcleo do WordPress, o que representa a melhor prática para o desenvolvimento de interfaces de gerenciamento de plugins.

Segurança de plugins e melhores práticas

Desenvolver um plugin popular significa que, além de ser funcional, ele também deve ser seguro, eficiente e fácil de manter. Seguir as normas de codificação segura é a principal responsabilidade para proteger os sites dos usuários contra ataques.

Validação de dados, limpeza e escape

Estas são as três linhas de defesa da segurança do WordPress. Em termos simples: validação — verificar se os dados de entrada estão no formato esperado (por exemplo, se é um endereço de e-mail); sanitização — remover partes inseguras ou ilegais dos dados antes de os guardar na base de dados; e escape — garantir que os dados não são interpretados como código executável quando são enviados para o navegador (HTML, JavaScript, URL).

  • Verificação: Utilize funções como… is_email(), absint()
  • Limpeza: Use funções como… sanitize_text_field(), sanitize_email(), wp_kses_post()(Usado para permitir a exibição de parte do conteúdo HTML.)
  • Escalação: Use funções como… esc_html()(Exibido dentro de um elemento HTML):, esc_url()(Exibido no atributo URL), esc_attr()(Exibido como um atributo HTML):, wp_kses()(Escapamento seletivo).

Nunca acredite no que os usuários inserem. Ao receber dados (por exemplo, de…) $_POST ou $_GETÉ necessário realizar a limpeza dos dados e a codificação (escape) dos mesmos ao serem exibidos.

Implementar um endpoint AJAX seguro

A funcionalidade AJAX é muito comum em plugins. O WordPress disponibiliza… wp_ajax_{action} e wp_ajax_nopriv_{action} Os “ganchos” (hooks) são utilizados para processar solicitações AJAX. A chave para a segurança reside na verificação dos direitos de acesso (nonce) e das capacidades do usuário.

// 为登录用户添加AJAX处理
add_action( 'wp_ajax_myplugin_action', 'myplugin_handle_ajax_request' );
// 如果希望未登录用户也能访问,则需额外添加(慎用)
// add_action( 'wp_ajax_nopriv_myplugin_action', 'myplugin_handle_ajax_request' );

function myplugin_handle_ajax_request() {
    // 1. 检查Nonce(防止跨站请求伪造)
    check_ajax_referer( 'myplugin_secure_nonce', 'security' );

// 2. 检查用户权限(例如,只有管理员才能执行此操作)
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足', 403 );
    }

// 3. 获取并清理输入数据
    $some_data = sanitize_text_field( $_POST['some_data'] ?? '' );

// 4. 处理业务逻辑...
    $result = [ 'success' => true, 'message' => '处理成功' ];

// 5. 返回JSON响应
    wp_send_json( $result );
}

Ao enviar uma solicitação em JavaScript do lado cliente, é necessário incluir o valor do “nonce” (um número aleatório gerado pelo servidor) na requisição. Isso é feito para garantir a segurança e evitar ataques de tipo “cross-site request forgery” (CSRF – falsificação de solicitações entre sites). wp_localize_script Passe para frente.

Preparação para a internacionalização dos plugins

Para que o seu plugin possa ser usado por usuários de todo o mundo, é necessário prepará-lo para a internacionalização (i18n). Isso significa que todas as strings direcionadas aos usuários não devem ser escritas diretamente no código, mas sim encapsuladas usando as funções de tradução do WordPress.

A função mais utilizada é… __()(Obter a string traduzida) E _e()Você precisa definir isso no cabeçalho do plugin. Text DomainE use-o de forma uniforme em todo o código.

// 在插件主文件头部已定义:Text Domain: my-first-plugin

// 在代码中使用
$greeting = __( 'Hello, world!', 'my-first-plugin' );
_e( 'This text will be echoed and translatable.', 'my-first-plugin' );

Em seguida, você pode usar ferramentas como o Poedit para gerar o conteúdo desejado. .pot Os ficheiros de modelo, a partir dos quais os tradutores podem criar versões em diferentes idiomas. .mo Arquivos. Coloque os arquivos de tradução no plugin. /languages/ No diretório, o WordPress carrega automaticamente as traduções correspondentes de acordo com as configurações de idioma do site.

resumos

O desenvolvimento de plugins para o WordPress é um processo que transforma ideias em funcionalidades reais, e sua base consiste no entendimento do mecanismo de “ganchos” (hooks), na adesão a normas de segurança e no uso de uma estrutura de código modular. Desde a configuração do ambiente de desenvolvimento e a criação do primeiro arquivo principal, passando pela integração avançada das funcionalidades do WordPress através de ações (actions) e filtros (filters), até a criação de interfaces de administração profissionais, cada etapa reflete a competência do desenvolvedor. A segurança é a chave para a longevidade de um plugin; a validação de dados, a limpeza de informações, a correção de erros (escapamento de caracteres) e a implementação de solicitações AJAX de forma segura são princípios essenciais que não podem ser negligenciados. Por fim, com a preparação para a internacionalização, seu plugin poderá atender usuários de todo o mundo. Ao dominar essas habilidades fundamentais, você estará pronto para criar plugins de alta qualidade para o WordPress, do zero.

Perguntas frequentes Perguntas frequentes

Quais são os conhecimentos básicos necessários para desenvolver um plugin do WordPress?

Para desenvolver plugins para o WordPress, é necessário ter conhecimentos básicos da linguagem de programação PHP, pois a lógica central dos plugins é escrita em PHP. Além disso, é essencial ter um entendimento básico de HTML, CSS e JavaScript para criar a interface e as interações do lado do usuário ( frontend). O mais importante é compreender a arquitetura básica do WordPress, especialmente o seu sistema de “ganchos” (Hooks), que inclui ações (Actions) e filtros (Filters), pois esses são os principais meios pelos quais os plugins interagem com o WordPress.

Como depurar o meu plugin do WordPress?

Recomenda-se o uso do modo WP_DEBUG. No diretório raiz do WordPress… wp-config.php No arquivo, será… define( 'WP_DEBUG', false ); mudar para define( 'WP_DEBUG', true );Isso irá mostrar os erros e avisos do PHP no ecrã e registá-los. /wp-content/debug.log O arquivo está disponível. Além disso, é possível instalar plugins de monitoramento de consultas (como o Query Monitor) para analisar em detalhes as consultas ao banco de dados, a execução de “hooks” e os pontos de estrangulamento no desempenho do sistema. As ferramentas de desenvolvimento do navegador (Console, Network) também são essenciais para depurar solicitações JavaScript e AJAX.

Como o meu plugin é compatível com o tema ou outros plugins?

Para garantir a máxima compatibilidade, é necessário seguir os padrões de codificação e as melhores práticas do WordPress. Utilize prefixos específicos para nomes de funções e classes de plugins para evitar conflitos de nomes com outros códigos. Use global variables com cautela. Ao adicionar tabelas personalizadas no banco de dados, também aplique prefixos aos nomes dessas tabelas. Para funcionalidades que possam ser expandidas por outros desenvolvedores, pense em fornecer seus próprios “hooks” (mecanismos de interação). Antes de modificar dados globais (como variáveis de consulta), verifique seu estado e tente restaurá-los à sua forma original após a alteração. Realizar testes abrangentes em diferentes temas e plugins é um passo essencial para garantir a compatibilidade.

Após a conclusão do desenvolvimento, como publicar o plugin no diretório oficial do WordPress?

Primeiramente, você precisa garantir que o seu plugin esteja em total conformidade com as diretrizes oficiais de desenvolvimento de plugins e as normas de código. Crie uma conta no WordPress.org e submeta o seu plugin. Você deve hospedar o código do plugin em um repositório SVN e fornecer um arquivo Readme.txt detalhado (utilizando um formato específico). O plugin deve passar pela revisão oficial do código, com foco em segurança, qualidade do código, comentários no código (que devem ser escritos no estilo DocBlock) e a ausência de código malicioso. Após a submissão bem-sucedida, você poderá atualizar e manter as versões do seu plugin através do SVN.