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

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

Por que escolher o desenvolvimento de plugins para o WordPress?

O WordPress, como o sistema de gerenciamento de conteúdo mais popular mundialmente, deve sua forte capacidade de expansão principalmente aos plugins. Ao desenvolver plugins personalizados, você pode adicionar funcionalidades únicas à plataforma principal, atendendo a necessidades comerciais específicas, sem a necessidade de modificar os arquivos do tema. Isso garante que o código das suas funcionalidades não seja perdido ao atualizar o tema e também torna as funcionalidades modulares, facilitando seu reuso em diferentes sites.

Aprender o desenvolvimento de plugins não só permite que você crie produtos para serem utilizados por outros, mas também lhe permite compreender mais profundamente o funcionamento do WordPress, incluindo seu sistema de ganchos (hooks), a interação com o banco de dados e as melhores práticas de segurança. Este é um passo crucial para evoluir de um usuário comum para um desenvolvedor avançado.

Construa o seu primeiro plugin.

Antes de começar a escrever o código, você precisa configurar um ambiente padrão do WordPress localmente ou em um servidor de teste. Isso é a base de todo o trabalho de desenvolvimento.

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

Criar o arquivo principal do plugin

Cada plugin do WordPress deve ter um arquivo principal, que geralmente recebe o mesmo nome do plugin. Vamos criar um arquivo chamado…my-first-pluginO plugin. Primeiro, dentro do diretório de instalação do seu WordPress…/wp-content/plugins/Dentro da pasta, crie uma nova pasta com o nome demy-first-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).

Nesse folder, crie um arquivo chamadomy-first-plugin.phpÉ um arquivo PHP. Este arquivo é o ponto de entrada do plugin. Abra-o e adicione as seguintes notas de cabeça do plugin; essas informações são essenciais para que o WordPress reconheça o seu plugin.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://yourwebsite.com/my-first-plugin
 * Description:       这是一个学习WordPress插件开发的示例插件,用于在文章底部添加自定义内容。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://yourwebsite.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Implementar a primeira funcionalidade simples

Uma funcionalidade clássica para iniciantes é a adição automática de um texto no final de todo o conteúdo dos artigos no site. Vamos usar o WordPress para isso. the_content Isso é realizado usando os “ganchos de filtro” (filter hooks). Adicione a seguinte função abaixo das notas de cabeça do seu arquivo principal:

/ / Evitar o acesso direto aos ficheiros
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * Adicionar texto personalizado no final do conteúdo do artigo
 *
 * @param string $content O conteúdo original do artigo.
 * @return string O conteúdo do artigo modificado.
 */
function mfp_add_footer_text( $content ) {
    // Verificar se é o ciclo principal e se está na página de um artigo individual
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = ' <p>Texto personalizado</p>';
    }
}'<div class="mfp-footer-note"><p><em>Obrigado pela leitura! Este artigo foi apresentado para você por “Meu Primeiro Plugin”.</em></p></div>'// Define o conteúdo do footer do plugin My Favourite Plugin (MFP) para ser exibido no final de todos os artigos.  
function mfp_add_footer_text( $content ) {  
    if ( has_shortcode( $content, 'mfp_custom_text' ) ) {  
        $content = str_replace( '$content', '$custom_text', $content );  
    }  
    return $content;  
}
// Adiciona a função ao filtro 'the_content'  
add_filter( 'the_content', 'mfp_add_footer_text' );

Este código define uma função. mfp_add_footer_textEle recebe o conteúdo do artigo. $content Como parâmetro, a função verifica primeiro se o ambiente atual está na página de um único artigo, no ciclo principal ou na consulta principal. Isso é feito para evitar que texto seja adicionado no resumo, em ferramentas adicionais ou em outros locais. Se as condições forem atendidas, ela cria um trecho de texto HTML personalizado e o anexa ao conteúdo original.

Aprofundando-se na arquitetura e segurança de plugins

À medida que o número de funcionalidades dos plugins aumenta, uma boa organização do código torna-se essencial. Além disso, a segurança é a chave para todo o desenvolvimento com WordPress.

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

Reestruturar o código utilizando programação orientada a objetos.

Para melhorar a manutenção e a escalabilidade do código, recomenda-se o uso de uma abordagem orientada a objetos (OOP) para organizar os plugins. Vamos reestruturar as funcionalidades descritas acima em uma classe.

/\n  // Evitar o acesso direto aos ficheiros
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

class My_First_Plugin {
    /**
     * Construtor, inicializa os ganchos do plugin.
     */
    public function __construct() {
        // Adiciona os métodos aos ganchos no construtor
        add_action( 'init', array( $this, 'load_textdomain' ) );
        add_filter( 'the_content', array( $this, 'add_footer_to_content' ) );
        add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
    }

/**
     * Carrega o domínio de tradução de texto do plugin.
     */
    public function load_textdomain() {
        load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
    }

/**
     * Adiciona texto personalizado no final do conteúdo do artigo.
     */
    public function add_footer_to_content( $content ) {
        if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
            $custom_text = ' <p>Texto personalizado</p>';
        }
    }

    public function enqueue_styles() {
        wp_enqueue_style( 'my-first-plugin-style', plugins_url( 'style.css', __FILE__ ) );
    }
}

?&gt;'<div class="mfp-footer-note"><p><em>'\n' . esc_html__( “Obrigado por ler! Este artigo é apresentado a você por ”Meu Primeiro Plugin'.', 'my-first-plugin' ) . '</em></p></div>'return $content . $custom_text;
        }
        return $content;
    }

/**
     * Adicionar estilos ao plugin.
     */
    public function enqueue_styles() {
        wp_enqueue_style( 'mfp-style', plugins_url( 'assets/css/style.css', __FILE__ ), array(), '1.0.0' );
    }
}

// Instanciar a classe do plugin
$my_first_plugin_instance = new My_First_Plugin();

Por favor, note que estamos… add_footer_to_content O método utilizou… esc_html__() Uma função para encapsular texto. Esta é uma função de tradução que também realiza a devida escapagem dos caracteres da saída, o que representa a melhor prática para a exibição segura de texto. Além disso, adicionamos um método para carregar tabelas de estilos e introduzimos suporte a campos de texto, preparando o plugin para a internacionalização (i18n).

Compreender e implementar a validação e a fuga de dados.

Nunca confie no que os usuários inserem ou em quaisquer dados externos. Ao receber, processar ou exibir dados, é essencial realizar verificações, limpezas e ações de “escape” (para evitar problemas de segurança). Por exemplo, se você estiver criando uma página de gerenciamento com formulários de entrada, certifique-se de usar as funções fornecidas pelo WordPress que não são baseadas no mecanismo de autenticação “CE” (Content Security), bem como as funções de verificação de permissões e validação de dados.

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%

A funcionalidade deste plugin é relativamente simples, mas já o utilizamos ao gerar o código HTML. esc_html__() É necessário realizar a escape dos dados. Se o plugin precisar processar os dados enviados pelo usuário, por exemplo, através de um formulário, então a escape deve ser utilizada obrigatoriamente. sanitize_text_field(), wp_kses_post() Use funções como essas para fazer a limpeza e, em seguida, aplique-as. wp_verify_nonce() Vamos verificar a legitimidade do pedido.

Criar a página de gerenciamento de plugins.

Um plugin maduro geralmente requer uma página de configuração no backend. Vamos aprender como usar a API de configurações do WordPress para criar uma página de gerenciamento simples e padrão.

Adicionar o menu de configurações do plugin

Primeiramente, precisamos adicionar uma nova página de menu subordinado no menu “Configurações” do backend do WordPress. Adicione um novo método à sua classe e, no construtor, utilize essa nova página de menu para configurar as opções desejadas. add_action('admin_menu', ...) O “gancho” (hook) o chama.

Leitura recomendada Guia de introdução para iniciantes no desenvolvimento de plugins do WordPress: crie o seu primeiro plugin funcional do zero.

/**
 * 注册插件管理页面。
 */
public function register_admin_menu() {
    add_options_page(
        __( '我的插件设置', 'my-first-plugin' ), // 页面标题
        __( '我的第一个插件', 'my-first-plugin' ), // 菜单标题
        'manage_options', // 所需权限
        'mfp-settings', // 菜单slug
        array( $this, 'display_settings_page' ) // 显示页面的回调函数
    );
}

Em seguida, adicione o seguinte no construtor:add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );

Construir uma página de configurações e campos

Em seguida, precisamos definir… display_settings_page Método utilizado para renderizar o conteúdo HTML da página de configurações e para registrar um campo de configuração utilizando a API de 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.
**
 * Mostra a página de configurações do plugin.
 */
public function display_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/pt/options.php/" method="post" data-trp-original-action="options.php">
            
        <input type="hidden" name="trp-form-language" value="pt"/></form>
    </div>
    <?php
}

/**
 * 初始化插件设置。
 */
public function initialize_settings() {
    // 注册一个设置
    register_setting(
        'mfp_settings_group', // 设置组名
        'mfp_footer_text', // 选项名
        array(
            'type' => '\n'string',
            'sanitize_callback' =&gt; 'sanitize_text_field', // Função de limpeza de callback
            'default' =&gt; __( 'Obrigado por ler! Este artigo é apresentado por “O Meu Primeiro Plugin”.', 'my-first-plugin' ),
        )
    );

// Adicionar uma seção de configurações
    add_settings_section(
        'mfp_main_section',
        __( 'Configurações principais', 'my-first-plugin' ),
        null, // Função de descrição da seção opcional
        'mfp-settings'
    );

// Adicionar um campo à seção
    add_settings_field(
        'mfp_footer_field',
        __( 'Texto do rodapé', 'my-first-plugin' ),
        array( $this, 'render_footer_field' ), // Função de renderização do campo
        'mfp-settings',
        'mfp_main_section',
        array( 'label_for' =&gt; 'mfp_footer_text' )
    );
}

Você precisa definir… render_footer_field Um método para renderizar o campo de entrada real e atualizar o conteúdo anterior. add_footer_to_content Método para que ele seja retirado das opções do banco de dados. get_option('mfp_footer_text') Leia o texto a partir de um arquivo, em vez de usar strings hardcoded (predefinidas em código). Por fim, adicione o seguinte no construtor:add_action( 'admin_init', array( $this, 'initialize_settings' ) );

resumos

Ao longo desta jornada, você construiu um plugin para o WordPress completamente funcional, partindo do zero. Apreendeu a criar a estrutura básica de um plugin, a usar ganchos de ações (actions) e filtros (filters) para expandir as funcionalidades do WordPress, a organizar o código de forma orientada a objetos a fim de melhorar a qualidade, a seguir as melhores práticas de segurança para verificar e escapolar dados, e a utilizar a API de configurações do WordPress para criar uma interface de gerenciamento de backend profissional.

O núcleo do desenvolvimento de plugins reside no entendimento do sistema de ganchos (hooks) e do fluxo de dados do WordPress. Pratique continuamente, começando com funcionalidades simples, aumentando gradualmente a complexidade, e sempre priorize a segurança, o desempenho e a manutenibilidade. Com a acumulação de experiência, você será capaz de desenvolver plugins para o WordPress que sejam poderosos, profissionais e populares.

Perguntas frequentes Perguntas frequentes

Quais são as noções básicas necessárias para desenvolver plugins para o WordPress?

Você precisa ter conhecimentos sólidos em programação PHP, pois o plugin é principalmente escrito em PHP. Além disso, é necessário ter um entendimento básico de HTML, CSS e JavaScript, já que você precisará lidar com a exibição e a interação do lado cliente. O mais importante é que você esteja familiarizado com os conceitos fundamentais do WordPress, como ganchos (ações e filtros), ciclos, estrutura de templates e operações com o banco de dados (usando classes como WP_Query e WP_User_Query).

Como depurar e testar meu plugin?

Primeiramente, é altamente recomendado desenvolver o projeto em um ambiente de desenvolvimento local (como o Local by Flywheel ou o XAMPP) ou em um site de teste online, a fim de evitar impactos no site em produção. Ative o modo de depuração do WordPress no seu ambiente de desenvolvimento.wp-config.phpConfigurações no arquivodefine( 'WP_DEBUG', true );Isso exibirá os erros e avisos do PHP na tela. Use-o.error_log()A função registra informações de depuração personalizadas no log de erros do servidor. Para uma depuração mais avançada, você pode considerar o uso de plugins de depuração profissionais, como o Query Monitor ou o Debug Bar.

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

Durante o desenvolvimento, é importante prestar atenção às notificações sobre funções descontinuadas presentes nos documentos oficiais do WordPress. Evite usar funções que tenham sido marcadas como “descontinuadas”. No arquivo principal do plugin, isso pode ser feito através de…Requires at leasteTested up toUse as informações de cabeçalho para declarar a versão do WordPress com a qual o seu plugin é compatível. Teste seu plugin regularmente em versões mais recentes do WordPress e acompanhe o log de atualizações do core (o software principal do WordPress) para poder ajustar o código a tempo.

Como publicar meu plugin no diretório oficial de plugins do WordPress?

Primeiramente, você precisa garantir que o seu plugin esteja em total conformidade com as especificações oficiais de desenvolvimento de plugins e com as diretrizes de envio. Isso inclui a qualidade do código, a segurança, o acordo de licença (que deve ser a GPLv2 ou uma versão mais recente), entre outros aspectos. Em seguida, solicite um repositório SVN no WordPress.org. Envie o código do seu plugin para esse repositório SVN.trunkNo diretório, crie os arquivos correspondentes.readme.txtO arquivo deve seguir um formato específico. Após a aprovação, seu plugin será adicionado ao diretório oficial.