Guia de desenvolvimento de plugins do WordPress: um tutorial passo a passo para criar o seu próprio plugin do zero.

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

Compreender os fundamentos dos plugins e a configuração do ambiente de desenvolvimento

Antes de começar a escrever o código, é essencial dominar os conceitos básicos dos plugins do WordPress e preparar um ambiente de desenvolvimento local adequado. Um plugin é, essencialmente, um diretório que contém uma ou mais arquivos PHP, e ele expande ou modifica as funcionalidades do WordPress através do sistema de ganchos (Hooks) fornecido pelo próprio WordPress. Diferentemente dos temas, os plugins se concentram em adicionar novas funcionalidades, e não em alterar a aparência do site; portanto, mesmo que o tema seja trocado, as funcionalidades do plugin geralmente permanecem inalteradas.

Para começar o desenvolvimento, é necessário primeiro ter um ambiente WordPress local. Isso pode ser facilmente configurado usando ferramentas como Local by Flywheel, MAMP, XAMPP ou diretamente com contêineres Docker. Após instalar o WordPress localmente, você precisa acessar…wp-content/pluginsÍndice. Este é o local onde todos os plugins são armazenados. Crie uma nova pasta, por exemplo…my-first-pluginNeste diretório, você deve criar um arquivo PHP principal, cujo nome geralmente é o mesmo que o do diretório, por exemplo:my-first-plugin.phpEste arquivo principal é o ponto de entrada do plugin e contém um conjunto de cabeçalhos de comentários especiais, utilizados para informar o WordPress sobre o nome do plugin, a sua descrição, a versão, o autor e outras informações relevantes.

Recomenda-se ativar essa funcionalidade no ambiente de desenvolvimento.WP_DEBUGModo. Abra o diretório raiz do WordPress.wp-config.phpArquivo: Encontre ou adicione as seguintes linhas:

Leitura recomendada Guia prático para o desenvolvimento de plugins do WordPress: construa o seu primeiro plugin do zero.

define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );

Isso registrará os erros e as advertências em…wp-content/debug.logOs arquivos ajudam você a localizar problemas rapidamente durante o processo de desenvolvimento. Além disso, o uso de um editor de código ou IDE (Integrated Development Environment) poderoso, como o VS Code ou o PhpStorm, pode aumentar significativamente a eficiência do desenvolvimento, pois eles geralmente oferecem suporte gramatical avançado e funcionalidades de sugestão para PHP e WordPress.

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 arquivo de plugin.

Vamos seguir todo o processo, desde a criação do arquivo até a ativação do plugin, criando um simples plugin “Hello World”. Esse plugin exibirá uma mensagem de boas-vindas no topo da área de administração do site.

No seu diretório de plugins…my-first-pluginNeste processo, você cria o arquivo principal.my-first-plugin.phpA estrutura básica do conteúdo do arquivo deve começar com as anotações na parte de cabeça do plugin:

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个用于学习插件开发的示例插件,它将在后台显示欢迎信息。
 * Version:           1.0.0
 * Author:            开发者姓名
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Esses cabeçalhos de comentário são obrigatórios; o WordPress utiliza-os para identificar e exibir seus plugins na página de gerenciamento de plugins. Entre eles,Text DomainUsado para internacionalização (i18n).Domain PathEspecificou o diretório onde os arquivos de idioma estão localizados (se necessário).

Em seguida, adicionaremos as funcionalidades principais. Neste exemplo, vamos usar…admin_noticesGancho. Adicione o seguinte código abaixo das notas de cabeça:

Leitura recomendada Guia Completo para Desenvolvimento de Plugins para WordPress: Um Tutorial Prático do Início ao Avançado

// 使用 admin_notices 钩子在管理后台输出提示信息
add_action( ‘admin_notices’, ‘my_first_plugin_display_admin_greeting’ );

/**
 * 在管理后台显示欢迎信息的函数
 * @return void
 */
function my_first_plugin_display_admin_greeting() {
    // 检查当前用户是否有权限,确保只在后台显示
    if ( ! current_user_can( ‘manage_options’ ) ) {
        return;
    }
    ?&gt;
    <div class="notice notice-success is-dismissible">
        <p><?php _e( ‘欢迎使用我的第一个插件!插件开发之旅正式开始!’, ‘my-first-plugin’ ); ?></p>
    </div>
    &lt;?php
}

Após salvar o arquivo, faça login no painel administrativo do seu site WordPress e vá para a página “Plugins”. Você deve ver um plugin chamado “Meu Primeiro Plugin” na lista de plugins. Clique no botão “Ativar”. Após a ativação, atualize qualquer página de administração (como o Painel de Controle) e você verá uma mensagem de sucesso em verde, contendo a saudação que definimos no nosso código. Esta é uma implementação mínima, mas completa, que verifica se o seu ambiente de desenvolvimento e a estrutura dos plugins estão corretos.

Técnicas Centrais do WordPress: Hooks e Filters

Compreender e utilizar habilmente os “ganchos” (Hooks) é fundamental no desenvolvimento de plugins para o WordPress. Os ganchos são divididos em dois tipos: Ações (Actions) e Filtros (Filters). Os ganchos de ação permitem que você insira e execute código personalizado em momentos específicos, como após a publicação de um artigo ou antes do carregamento da cabeça da página. O que usamos acima…admin_noticesÉ apenas um gancho de ação (action hook). Já os ganchos de filtro (filter hooks) permitem que você modifique os dados gerados ou transmitidos durante o processo, como, por exemplo, alterar o conteúdo do título de um artigo ou os resultados da consulta de um plugin.

Como adicionar uma ação personalizada?

A ação foi realizada com sucesso.add_action()Adição de funções. A sintaxe é:add_action( ‘hook_name’, ‘your_function_name’, priority, accepted_args )A prioridade (priority) é um número inteiro; quanto menor o número, mais cedo a ação será executada. O valor padrão é 10. Por exemplo, se você quiser adicionar algum HTML personalizado após o conteúdo do artigo:

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%
add_action( ‘the_content’, ‘my_custom_content_append’ );
function my_custom_content_append( $content ) {
    // 只在单篇文章主循环内生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $extra_content = ‘<div class="“my-custom-box”"><p>Este é conteúdo personalizado adicionado através de um plugin.</p></div>’;
        $content .= $extra_content;
    }
    return $content;
}

Atenção: embora…the_contentÉ um filtro (ele precisa retornar o resultado modificado).$content), mas o WordPress também o utiliza como um ponto de acionamento para determinadas ações. Uma abordagem mais rigorosa seria usar…add_filter

Como adicionar um filtro personalizado?

O filtro foi aprovado/funcionou corretamente.add_filter()Adição de funções. Sintaxe e…add_action()Semelhante. Um exemplo comum é a alteração do comprimento de um resumo de artigo:

add_filter( ‘excerpt_length’, ‘my_custom_excerpt_length’, 999 );
function my_custom_excerpt_length( $length ) {
    // 将默认的55个词改为20个词
    return 20;
}

Você pode criar seus próprios “ganchos” (hooks), permitindo que seu plugin também seja expandido por outros desenvolvedores ou temas.do_action()Vamos definir um gancho de ação (action hook) usando…apply_filters()Definir um gancho (hook) de filtro é essencial para construir plugins modulares e extensíveis.

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

Avanços nas funcionalidades dos plugins e melhores práticas

À medida que as funcionalidades dos plugins se tornam mais complexas, uma boa organização do código, segurança, manutenibilidade e desempenho tornam-se extremamente importantes. Uma prática comum é usar a programação orientada a objetos (POO) para estruturar o código, encapsulando funções e dados relacionados em uma classe principal.

Utilizar a programação orientada a objetos para encapsular o código.

Criar uma classe principal pode ajudar a gerenciar melhor o estado e os métodos dos plugins, evitando conflitos de nomes de funções. Aqui está um exemplo simples de estrutura orientada a objetos (OOP):

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.
<?php
/**
 * Plugin Name:       进阶示例插件
 */
if ( ! class_exists( ‘My_Advanced_Plugin’ ) ) {
    class My_Advanced_Plugin {
        /**
         * 构造方法,用于初始化钩子
         */
        public function __construct() {
            add_action( ‘init’, array( $this, ‘register_custom_post_type’ ) );
            add_action( ‘admin_menu’, array( $this, ‘add_admin_menu_page’ ) );
            add_filter( ‘the_title’, array( $this, ‘filter_post_title_prefix’ ), 10, 2 );
        }

/**
         * 注册一个自定义文章类型
         */
        public function register_custom_post_type() {
            $args = array(
                ‘public’ => true,
                ‘label’  => ‘我的产品’,
                ‘supports’ => array( ‘title’, ‘editor’, ‘thumbnail’ ),
                ‘has_archive’ => true,
            );
            register_post_type( ‘my_product’, $args );
        }

/**
         * 在文章标题前添加前缀的过滤器
         * @param string $title 原标题
         * @param int    $id    文章ID
         * @return string 修改后的标题
         */
        public function filter_post_title_prefix( $title, $id = null ) {
            if ( ! is_admin() && in_the_loop() ) {
                $title = ‘[精品] ’ . $title;
            }
            return $title;
        }

// ... 其他方法
    }
    // 实例化插件类
    new My_Advanced_Plugin();
}

Essa estrutura organiza as funções relacionadas de forma que o código fique mais claro e fácil de gerenciar.

Garantir a segurança e o desempenho dos plugins

A segurança é a principal prioridade no desenvolvimento de plugins. Nunca confie nas informações fornecidas pelos usuários. Para todas as informações recebidas…$_GET$_POSTou$_REQUESTOs dados obtidos devem ser verificados (Validation), limpos (Sanitization) e escapados (Escaping). O WordPress disponibiliza uma série de funções auxiliares para isso:
* 验证:check_ajax_referer()wp_verify_nonce()
* 清理:sanitize_text_field()sanitize_email()absint()
* 转义:esc_html()esc_url()wp_kses_post()

Antes de exibir qualquer dado em HTML, atributos ou URLs, é essencial utilizar as funções de escape apropriadas. Quanto ao desempenho, use os “ganchos” (hooks) de forma inteligente para evitar a execução de consultas que consomem muitos recursos a cada carregamento da página. Considere utilizar o cache temporário do WordPress (Transients API) para armazenar resultados de consultas não críticos e repetíveis por um período de tempo.

Implementar a página de configuração do plugin

A maioria dos plugins requer uma página de configurações para que o usuário possa fazer ajustes. Isso geralmente é feito através de…add_options_page()ouadd_menu_page()Funções como essas, quando montadas…admin_menuA implementação deve ser feita através de “ganchos” (hooks) específicos. Para definir as opções, deve-se utilizar a API de Configurações (Settings API) do WordPress para realizar o registro, salvamento e validação de forma segura. Isso inclui o uso de…register_setting()add_settings_section()eadd_settings_field()Funções como essas não apenas garantem a segurança (por exemplo, a verificação de valores “nonce”), mas também proporcionam um estilo uniforme para a interface do backend do WordPress.

resumos

O desenvolvimento de plugins para o WordPress é um processo que transforma ideias em funcionalidades, começando com a compreensão da estrutura básica dos plugins e da configuração do ambiente local. Ao criar o plugin mais simples possível (“Hello World”), praticamos todo o ciclo desde a criação dos arquivos até a ativação das suas funcionalidades. O núcleo do desenvolvimento reside na compreensão aprofundada e no uso flexível do poderoso sistema de ganchos do WordPress – as ações (actions) e os filtros (filters) – que servem de ponte para a interação com o core do WordPress e outras partes do sistema. À medida que as funcionalidades do plugin aumentam, a adoção da programação orientada a objetos, a observância de normas de codificação segura (verificação, limpeza dos dados, escape de caracteres), e o uso da API Settings para construir páginas de configuração tornam-se passos essenciais para garantir que o plugin seja estável, seguro, fácil de manter e escalável. Seguindo essas diretrizes e boas práticas, você poderá criar com confiança plugins de alta qualidade, variando desde ferramentas simples até aplicações mais complexas.

Perguntas frequentes Perguntas frequentes

Quais são os conhecimentos prévios necessários para desenvolver um plugin para o WordPress com o código ###?
Você precisa ter conhecimentos básicos da linguagem de programação PHP, pois os plugins são principalmente escritos em PHP. Além disso, um entendimento básico de HTML, CSS e JavaScript será útil para criar plugins com interações no lado front-end. O mais importante é que você esteja familiarizado com os conceitos fundamentais do WordPress, como artigos, páginas, categorias, roles de usuários e, principalmente, o sistema de ganchos (hooks).

Como depurar um plugin do WordPress que está em desenvolvimento?

É fortemente recomendado ativar essa funcionalidade no ambiente de desenvolvimento.WP_DEBUGOs padrões e as configurações relacionadas foram explicados na seção sobre a configuração do ambiente principal do texto. Isso registrará erros, avisos e notificações do PHP em um arquivo de log. Além disso, você pode usar…error_log()Funções ou funções auxiliares, como…var_dump()Cooperarwp_die()É necessário extrair os valores das variáveis para realizar verificações. As abas “Console” e “Network” das ferramentas de desenvolvimento do navegador são essenciais para depurar códigos em JavaScript e solicitações AJAX.

Como meu plugin pode ser compatível com diferentes versões do WordPress?

No código do plugin, você deve verificar se certas funções ou classes existem na versão atual do WordPress antes de usá-las. Isso pode ser feito utilizando mecanismos específicos disponíveis no framework do WordPress.function_exists()ouis_admin()Para a avaliação de condições, como mencionado nas instruções do plugin, isso pode ser feito através de comentários no cabeçalho do plugin.Requires at least:Use os campos para especificar a versão mínima do WordPress necessária. É uma boa prática testar regularmente a compatibilidade do seu plugin com a versão mais recente do core do WordPress.

Como posso internacionalizar meu plugin para que suporte vários idiomas?

Você precisa usar a função de tradução do WordPress para envolver todas as strings de texto que precisam ser traduzidas. Por exemplo, use:__( ‘文本’, ‘your-plugin-text-domain’ )Para produzir o texto traduzido, use_e( ‘文本’, ‘your-plugin-text-domain’ )Vamos fazer uma eco direta. Você precisa configurar isso corretamente nos comentários do cabeçalho do plugin.Text DomaineDomain PathEm seguida, use uma ferramenta como o Poedit para criar..potFicheiros de modelo, a partir dos quais os tradutores podem criar..poe.moArquivos de idioma.

Após a conclusão do desenvolvimento, como enviar o plugin para o diretório oficial de plugins?

Primeiramente, você precisa registrar uma conta no site oficial do WordPress e enviar o seu plugin para revisão. O seu código deve atender aos padrões e guias oficiais de codificação, incluindo requisitos de segurança, ausência de código malicioso e compatibilidade com a licença GPL. A estrutura do diretório do seu plugin deve conter o arquivo PHP principal, além de outros arquivos necessários para o funcionamento do plugin.readme.txtArquivos (com formato que atenda a padrões específicos), além de capturas de tela e ícones (opcionais). O processo de revisão pode levar algum tempo; a equipe verificará seu código para garantir que ele atenda aos requisitos.