Aprenda a desenvolver plugins para o WordPress do zero: guia completo e tutoriais práticos.

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

Por que escolher desenvolver plugins para o WordPress?

Na atual ecologia de websites, o WordPress ocupa uma posição dominante devido à sua flexibilidade incomparável e à sua vasta base de usuários. Essa flexibilidade se deve em grande parte ao seu sistema de plugins. Ao desenvolver seus próprios plugins, os desenvolvedores podem transformar uma ideia em um módulo funcional reutilizável que pode ser aplicado em milhões de websites ao redor do mundo. Isso não só permite atender a necessidades comerciais específicas, mas também permite criar valor e receita contínuos através do diretório oficial do WordPress ou de mercados de terceiros.

e aqueles que modificam diretamente o tópico. functions.php Os arquivos são diferentes, e os plugins separam a lógica das funcionalidades da aparência do tema, o que garante a manutenção sustentável do site. Quando você troca de tema, as funcionalidades fornecidas pelos plugins podem ser migradas sem problemas, enquanto o código escrito no próprio tema precisa ser reprocessado. Esse método de desenvolvimento modular é a melhor prática para construir sites WordPress profissionais e estáveis.

Construa o seu primeiro plugin.

O primeiro passo no desenvolvimento de plugins é criar uma estrutura básica que atenda aos padrões do WordPress. Isso não se trata apenas de criar um arquivo, mas sim de estabelecer um método de organização do código que seja mantível e expansível.

Leitura recomendada Guia introdutório para o desenvolvimento de plugins do WordPress: crie a sua primeira extensão de funcionalidade personalizada do zero.

Criar o arquivo do plugin principal

Cada plugin do WordPress deve ter um arquivo principal, que geralmente recebe o mesmo nome do plugin. Por exemplo: my-first-plugin.phpAs notas de cabeça deste arquivo funcionam como o “cartão de identidade” do plugin, fornecendo informações metadadas sobre ele ao sistema WordPress, como nome, descrição, versão, autor, etc. Sem essas notas de cabeça, o WordPress não conseguirá reconhecer e ativar o seu plugin.

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).
<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习 WordPress 插件开发的示例插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Implementar uma função simples

Após definir a parte inicial do plugin, podemos começar a adicionar o código funcional. Um exemplo clássico para iniciantes é adicionar uma linha de texto personalizado no rodapé da página do site. Isso envolve o mecanismo de “ganchos” (Hooks) do WordPress, mais especificamente, o uso dos hooks para realizar essa ação. wp_footer Este é um gatilho de ação.

// 在 wp_footer 钩子上挂接我们的函数
add_action(‘wp_footer’, ‘my_first_plugin_display_footer_text’);

/**
 * 在网站前台页脚输出自定义文本
 */
function my_first_plugin_display_footer_text() {
    echo ‘<p style="“text-align:" center;”>Este site conta com o suporte técnico do meu primeiro plugin.</p>’;
}

Adicione o bloco de código acima ao seu arquivo de plugin principal, salve-o e, em seguida, carregue-o no servidor. /wp-content/plugins/ Você deve criar um novo diretório, e em seguida acessar a página de “Plugins” no painel administrativo do WordPress. Lá, você verá o “Meu Primeiro Plugin” e poderá ativá-lo. Atualize a página principal do site, e o texto que você adicionou aparecerá na parte inferior da página.

Compreender profundamente a arquitetura dos plugins do WordPress

Para desenvolver plugins poderosos e profissionais, é essencial compreender profundamente as interfaces de programação e os padrões de arquitetura fornecidos pelo WordPress. Isso não se trata apenas de escrever funções em PHP, mas também de aprender como interagir de forma segura e eficiente com o núcleo do WordPress.

Mecanismo de ganchos: Ações e filtros

O mecanismo de ganchos (hooks) do WordPress é a pedra angular da sua extensibilidade, sendo dividido principalmente em Ganchos de Ação (Action Hooks) e Ganchos de Filtro (Filter Hooks). Os Ganchos de Ação permitem que você “execute” o seu próprio código em momentos específicos. Por exemplo,init O hook é acionado durante a inicialização do WordPress.wp_enqueue_scripts Ganchos são usados para adicionar scripts e estilos de forma segura.

Leitura recomendada Guia Completo para Desenvolvimento de Plugins para WordPress: Crie o Seu Primeiro Plugin Funcional do Zero

Os ganchos (hooks) dos filtros permitem que você “modifique” os dados. Você pode interceptá-los e alterá-los antes que sejam utilizados (por exemplo, exibidos em uma página ou armazenados em um banco de dados).the_content Os filtros permitem que você modifique o conteúdo dos artigos.

// 使用过滤器修改文章内容,在末尾添加一段话
add_filter(‘the_content’, ‘my_first_plugin_modify_content’);

function my_first_plugin_modify_content($content) {
    if (is_single()) { // 仅在单篇文章页面生效
        $extra_text = ‘<div class="“plugin-note”">Obrigado por ler este artigo!</div>’;
        $content .= $extra_text;
    }
    return $content;
}

Segurança de plugins e validação de dados

A segurança é um aspecto crucial no desenvolvimento de plugins. Nunca confie em dados provenientes de usuários ou de qualquer fonte externa. O WordPress disponibiliza uma série de funções para ajudar na validação, escape e limpeza de dados.

Ao processar dados do tipo $_POST ou $_GET provenientes de um formulário, é necessário utilizar… sanitize_text_field(), intval(), wp_kses_post() Use funções de limpeza para organizar os dados. Ao exibir os dados em uma página HTML, é essencial utilizar métodos apropriados para garantir a qualidade e a legibilidade do conteúdo. esc_html(), esc_attr(), esc_url() Funções como essas são usadas para realizar a escape de caracteres, a fim de prevenir ataques de tipo Cross-Site Scripting (XSS).

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 my_first_plugin_safe_shortcode($atts) {
    // 使用 shortcode_atts 设置默认值并合并用户输入
    $atts = shortcode_atts(
        array(
            ‘message’ =&gt; ‘Hello World’,
        ), $atts
    );

// 清理用户输入的 message 属性
    $safe_message = sanitize_text_field($atts[‘message’]);

// 转义后安全输出
    return ‘<div>’ . esc_html($safe_message) . ‘</div>’php
add_shortcode(‘safe_greeting’, ‘my_first_plugin_safe_shortcode’);

Criar um plugin completo e funcional

Vamos integrar esses conhecimentos para criar um plugin um pouco mais complexo, mas prático: um plugin que estime o tempo de leitura de um artigo. Esse plugin calculará automaticamente o tempo estimado de leitura do artigo e o exibirá abaixo do título do mesmo.

Criar a estrutura da classe do plugin

Para plugins com funcionalidades um pouco mais complexas, o uso de uma estrutura de classes baseada em Programação Orientada a Objetos (POO) é a melhor escolha. Isso ajuda a organizar o código, evita conflitos de nomes de funções e melhora a manutenibilidade.

<?php
/**
 * Plugin Name:       文章阅读时间估算
 */
class Article_Reading_Time {
    /**
     * 构造函数,初始化插件
     */
    public function __construct() {
        // 在文章内容前添加阅读时间
        add_filter(‘the_content’, array($this, ‘add_reading_time_to_content’));
        // 初始化脚本和样式(如果需要)
        add_action(‘wp_enqueue_scripts’, array($this, ‘enqueue_assets’));
    }

/**
     * 计算文章的阅读时间(以分钟计)
     * @param string $content 文章内容
     * @return int 预计阅读分钟数
     */
    private function calculate_reading_time($content) {
        // 去除 HTML 标签,只计算纯文本
        $text = strip_tags($content);
        // 估算中文阅读速度:每分钟约300-500字,这里取400字/分钟
        $word_count = mb_strlen($text, ‘UTF-8’);
        $reading_time = ceil($word_count / 400);
        // 至少1分钟
        return max(1, $reading_time);
    }

/**
     * 在文章内容前添加阅读时间显示
     * @param string $content 原始文章内容
     * @return string 添加阅读时间后的内容
     */
    public function add_reading_time_to_content($content) {
        // 确保只在主循环的单篇文章页面显示
        if (is_single() && in_the_loop() && is_main_query()) {
            $reading_minutes = $this->calculate_reading_time($content);
            $reading_time_html = sprintf(‘<div class="“reading-time”"><strong>Tempo estimado de leitura:</strong>%d minutos</div>’,
                esc_html($reading_minutes)
            );
            $content = $reading_time_html . $content;
        }
        return $content;
    }

/**
     * 加载插件所需的CSS样式
     */
    public function enqueue_assets() {
        if (is_single()) {
            wp_enqueue_style(
                ‘article-reading-time-style’,
                plugin_dir_url(__FILE__) . ‘assets/css/style.css’,
                array(),
                ‘1.0.0’
            );
        }
    }
}

// 实例化插件类,启动插件
new Article_Reading_Time();

Adicionar página de configurações de gerenciamento

Um plugin profissional geralmente precisa de uma página de configurações no backend que permita aos usuários personalizar seu comportamento. Podemos utilizar o “API de Configurações” do WordPress para criar páginas de opções de forma padronizada.

Leitura recomendada Guia completo para o desenvolvimento de temas do WordPress: um tutorial prático do início ao fim.

Primeiramente, precisamos adicionar um novo método na classe do plugin para registrar o menu de configurações e os campos.

// 在构造函数中添加管理菜单钩子
add_action(‘admin_menu’, array($this, ‘add_admin_menu’));
add_action(‘admin_init’, array($this, ‘register_settings’));

public function add_admin_menu() {
    add_options_page(
        ‘阅读时间设置’,          // 页面标题
        ‘阅读时间估算’,          // 菜单标题
        ‘manage_options’,       // 权限
        ‘reading-time-settings’, // 菜单slug
        array($this, ‘render_settings_page’) // 回调函数
    );
}

public function register_settings() {
    register_setting(‘reading_time_settings_group’, ‘reading_time_words_per_minute’);
    add_settings_section(‘reading_time_main’, ‘主要设置’, null, ‘reading-time-settings’);
    add_settings_field(
        ‘words_per_minute’,
        ‘每分钟阅读字数’,
        array($this, ‘render_words_per_minute_field’),
        ‘reading-time-settings’,
        ‘reading_time_main’
    );
}

public function render_words_per_minute_field() {
    $value = get_option(‘reading_time_words_per_minute’, 400);
    echo ‘<input type="“number”" name="“reading_time_words_per_minute”" value="“’" . esc_attr($value) ‘” />’;
    echo ‘<p class="“description”">Valor de referência usado para calcular o tempo de leitura (palavras/minuto).</p>’;
}

public function render_settings_page() {
    ?&gt;
    <div class="“wrap”">
        <h1>Configuração de estimativa do tempo de leitura do artigo</h1>
        <form action="/pt/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
            <?php
            settings_fields(‘reading_time_settings_group’);
            do_settings_sections(‘reading-time-settings’);
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="pt"/></form>
    </div>
    &lt;?php
}

// 然后修改 calculate_reading_time 方法,使用用户设置的值
private function calculate_reading_time($content) {
    $text = strip_tags($content);
    $words_per_minute = get_option(‘reading_time_words_per_minute’, 400);
    $word_count = mb_strlen($text, ‘UTF-8’);
    $reading_time = ceil($word_count / $words_per_minute);
    return max(1, $reading_time);
}

Internacionalização de plugins e preparação para lançamento

Para que o seu plugin possa ser usado por usuários de todo o mundo, a internacionalização (i18n) é um passo essencial. Além disso, realizar testes minuciosos e organizar a documentação com cuidado antes do lançamento também é de extrema importância.

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.

Suporte à tradução de texto

O WordPress utiliza a tecnologia GNU gettext para suportar múltiplas línguas. Você precisa envolver todos os textos exibidos diretamente nos plugins em funções específicas. A função mais comum para isso é… __() Usado para retornar a string traduzida, bem como… _e() Usado para exibir diretamente a string traduzida.

Primeiramente, modifique todo o texto codificado em texto fixo no plugin:

// 在插件头部定义 Text Domain
// Text Domain:       article-reading-time

// 在插件初始化时加载语言文件
add_action(‘init’, array($this, ‘load_textdomain’));

public function load_textdomain() {
    load_plugin_textdomain(
        ‘article-reading-time’,
        false,
        dirname(plugin_basename(__FILE__)) . ‘/languages/’
    );
}

// 修改输出文本的代码,使其可翻译
$reading_time_html = sprintf(
    ‘<div class="“reading-time”"><strong>%s</strong>%d %s</div>’,
    esc_html__(‘预计阅读时间:’, ‘article-reading-time’),
    esc_html($reading_minutes),
    esc_html(_n(‘分钟’, ‘分钟’, $reading_minutes, ‘article-reading-time’))
);

Em seguida, você precisa usar uma ferramenta como o Poedit para analisar o código-fonte do plugin e gerar o necessário conteúdo. .pot Arquivos de modelo: os tradutores podem usar esses arquivos como base para criar conteúdos, como… zh_CN.po e .mo O documento de tradução e coloque-o no plugin. /languages/ No diretório.

Testar e enviar para o diretório oficial.

Antes de publicar, é essencial testar todas as funcionalidades do plugin em diferentes ambientes (diferentes versões do PHP, diferentes versões do WordPress). Verifique se existem avisos ou erros relacionados ao PHP e assegure-se de que não haja conflitos com temas comuns ou outros plugins.

Se você planeja enviar o seu plugin para o diretório oficial de plugins do WordPress, é necessário seguir padrões e guias de codificação rigorosos. Isso inclui o uso de prefixos para nomes de funções e classes que sejam descritivos e não causem conflitos, garantir a segurança do código, e fornecer informações detalhadas sobre o funcionamento do plugin. readme.txt O arquivo deve estar no formato oficialmente estabelecido e todo o código de depuração (debugging code) deve ser removido.

Prepare algo claro e compreensível. readme.txt O arquivo é essencial para a aprovação do processo. Ele deve conter informações sobre o plugin, como sua descrição, instruções de instalação, capturas de tela, dúvidas comuns, registros de atualizações, entre outros detalhes.

resumos

O desenvolvimento de plugins para o WordPress é uma habilidade poderosa que permite transformar ideias em produtos disponíveis para todos. Começando com a criação de um plugin simples, composto por um único arquivo, você pode progressivamente aprofundar seus conhecimentos em mecanismos de interação (como os “hooks”), práticas de segurança, arquiteturas orientadas a objetos, configuração de APIs e internacionalização. Esse caminho de aprendizado fornece uma base sólida para a criação de plugins de nível comercial. O ponto-chave é compreender o funcionamento dos principais mecanismos de interação do WordPress (os “hooks”) e sempre aderir aos princípios de codificação segura e validação de dados. Ao organizar o código de forma modular e estruturada, e ao planejar com antecedência a interface de gerenciamento e o suporte a traduções, seu plugin se tornará mais profissional, mais fácil de manter e mais adaptável ao mercado. Lembre-se: um bom plugin não é apenas uma coleção de funcionalidades, mas também um reflexo da experiência do usuário, da qualidade do código e da integração com o ecossistema do WordPress.

Perguntas frequentes Perguntas frequentes

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

Você precisa ter uma base sólida em programação PHP, pois a lógica central do plugin é escrita em PHP. Além disso, é necessário ter um conhecimento básico de HTML, CSS e JavaScript para lidar com a exibição e interação do lado cliente. Ter familiaridade com os conceitos básicos do banco de dados MySQL (embora o WordPress forneça classes convenientes para operações no banco de dados) e com o pensamento de programação orientada a objetos também é muito útil para o desenvolvimento de plugins complexos.

Qual é a diferença entre os arquivos functions.php dos plugins e dos temas?

Adicione o código ao tema. functions.php Um arquivo é um método rápido para implementar uma funcionalidade, mas essa funcionalidade está profundamente vinculada ao tema atual. Quando você muda de tema, essas funcionalidades são perdidas. Por outro lado, um plugin é um módulo de funcionalidade independente do tema; independentemente do tema utilizado, suas funcionalidades permanecem ativas sempre que o plugin estiver ativado. Isso garante a portabilidade das funcionalidades e a flexibilidade na manutenção do site.

Como evitar que o nome da função do meu plugin entre em conflito com outros plugins?

Usar a programação orientada a objetos (POO) e encapsular seu código em uma classe é a melhor maneira de evitar conflitos de nomes de funções. Se você estiver utilizando a programação procedural, será necessário usar um prefixo único para todas as funções, constantes e variáveis globais. Esse prefixo deve ser suficientemente distinto; por exemplo, ele pode conter a abreviação da sua marca ou do seu plugin. myplugin_ ou art_rt_

Como devo depurar o plugin que estou desenvolvendo?

Primeiramente, assegure-se de que, no WordPress… wp-config.php Ativar o modo de depuração no arquivo: define(‘WP_DEBUG’, true); e define(‘WP_DEBUG_LOG’, true);Dessa forma, os erros e avisos do PHP serão registrados. /wp-content/debug.log No arquivo. Além disso, use as ferramentas de desenvolvimento do navegador para verificar problemas no lado front-end, e você também pode aproveitá-las para resolver esses problemas. error_log() A função exibe os valores das variáveis no código em um arquivo de log para fins de depuração.

Quais questões legais devem ser consideradas ao desenvolver plugins comerciais?

A questão legal mais importante é a conformidade com o acordo de licença do WordPress. Se você planeja publicar seu plugin no diretório oficial do WordPress, ele deve seguir a licença GPLv2 ou uma versão mais recente. Isso significa que o código do seu plugin deve ser de código aberto. Você pode gerar lucros vendendo serviços de suporte, funcionalidades avançadas, documentação ou versões hospedadas. Além disso, se você trabalha com dados dos usuários, é necessário prestar atenção e seguir regulamentos de proteção de dados, como o GDPR. É recomendado esclarecer em detalhes a coleta e o uso dos dados no comunicado de privacidade do seu plugin.