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

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

Dominar o desenvolvimento de plugins para o WordPress é uma habilidade essencial para expandir as funcionalidades de um site e atender a necessidades personalizadas. Isso é muito mais importante do que simplesmente modificar os temas (templates) do site. functions.php Quando comparado com arquivos tradicionais, o uso de plugins garante que as funcionalidades sejam independentes do tema do site, o que facilita a migração, o gerenciamento e a manutenção. Este artigo irá guiá-lo passo a passo para criar um plugin com estrutura completa e que atenda aos padrões de codificação do WordPress, partindo do zero.

Preparação e configuração do ambiente

Antes de escrever a primeira linha de código, você precisa de um ambiente de desenvolvimento adequado e de um entendimento básico da arquitetura do WordPress.

Configuração do ambiente de desenvolvimento

Um ambiente de desenvolvimento local padrão é a pedra angular para um desenvolvimento eficiente. Recomendamos o uso de ferramentas como XAMPP, MAMP ou Local by Flywheel, que permitem instalar Apache, MySQL/Nginx, PHP e WordPress com apenas um clique. Além disso, assegure-se de que o seu editor de texto ou IDE (como VS Code,PhpStorm) suporte a realceação da sintaxe PHP e sugestões de código, o que irá melhorar significativamente a eficiência do desenvolvimento.

Leitura recomendada Análise aprofundada do desenvolvimento de plugins do WordPress: do início ao zero até uma personalização eficiente

Compreender a arquitetura dos plugins do WordPress

Um plugin para o WordPress é, essencialmente, um ou mais arquivos PHP que são armazenados em um determinado local no sistema do WordPress. wp-content/plugins/ O plugin está localizado dentro do diretório. O seu princípio central é o mecanismo de “ganchos” (hooks). Os plugins executam código em momentos específicos através dos “ganchos de ação” (action hooks) ou modificam os dados gerados por outras funções utilizando os “ganchos de filtro” (filter hooks). add_action e add_filter Essas duas funções são as chaves para começar no desenvolvimento de plugins.

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 plugin: um pequeno utilitário de saudação.

Vamos criar um plugin simples chamado “Saudações Diárias”. Ele exibirá um widget de boas-vindas personalizado no painel de controle do backend do site.

Criar o arquivo principal do plugin

Primeiramente, em wp-content/plugins/ Crie uma nova pasta no diretório e nomeie-a… my-first-greeting-pluginNesse diretório, crie o arquivo principal do plugin. my-first-greeting-plugin.php

Cada plugin deve começar com um comentário de cabeçalho padrão, que é o identificador usado pelo WordPress para reconhecer as informações do plugin. Abra o arquivo principal e insira o seguinte código:

<?php
/**
 * Plugin Name: 每日问候
 * Plugin URI:  https://www.yourwebsite.com/my-first-greeting-plugin
 * Description: 这是一个示例插件,用于在仪表盘显示个性化问候。
 * Version:     1.0.0
 * Author:      Your Name
 * Author URI:  https://www.yourwebsite.com
 * License:     GPL v2 or later
 * Text Domain: my-first-greeting
 */

Após salvar o arquivo, acesse a página de “Plugins” no painel administrativo do WordPress. Você deve ver o plugin “Daily Greetings” na lista e poderá ativá-lo. No momento, ele ainda não possui nenhuma funcionalidade.

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

Adicionar widgets ao painel de controle

Em seguida, usaremos o WordPress para… wp_dashboard_setup Use os ganchos de ação (action hooks) para adicionar um widget de painel de controle personalizado. Abaixo das notas no início do arquivo principal, adicione o seguinte código:

// 添加仪表盘小工具
function mfgp_add_dashboard_widget() {
    wp_add_dashboard_widget(
        'mfgp_dashboard_widget',          // 小工具唯一ID
        '每日问候',                       // 小工具标题
        'mfgp_dashboard_widget_content'  // 显示内容的回调函数
    );
}
add_action( 'wp_dashboard_setup', 'mfgp_add_dashboard_widget' );

// 定义小工具内容
function mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G'); // 获取当前小时(24小时制)

if ( $hour &gt;= 5 &amp;&amp; $hour = 12 && $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . sprintf( esc_html__( '%s,%s!欢迎回来。', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>'echo '<p>' . esc_html__( '这是你的第一个插件创建的问候小工具。', 'my-first-greeting' ) . '</p>';
}

Este código faz duas coisas: primeiro, ele define uma função. mfgp_add_dashboard_widgetUso wp_add_dashboard_widget Foi registrado um pequeno utilitário para funções. Em seguida, foi definido… mfgp_dashboard_widget_content Uma função é usada para gerar o conteúdo do pequeno aplicativo; ela exibe saudações diferentes de acordo com a hora do dia e menciona o nome do usuário que está logado no sistema. Note que utilizamos… esc_html__() e esc_html() Preparar a tradução das funções e escapar os caracteres especiais é uma prática importante para garantir a segurança e a internacionalização do código.

Após ativar o plugin, atualize a página do painel de controle e você verá o pequeno utilitário de “Saudações Diárias”.

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%

Melhorias nas funcionalidades dos plugins e práticas de segurança

Um plugin básico já foi desenvolvido, mas para torná-lo mais robusto e profissional, precisamos prestar atenção à segurança, à manutenibilidade e às configurações do usuário.

Página de configuração dos plugins

Seria mais útil permitir que os usuários personalizassem as saudações. Criaremos uma página de configuração simples para o plugin.

Primeiro, use admin_menu Adicione uma página de menu subordinado ao gancho de ação:

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

// 添加设置菜单
function mfgp_add_admin_menu() {
    add_options_page(
        '每日问候设置',                // 页面标题
        '每日问候',                    // 菜单标题
        'manage_options',             // 所需权限
        'my-first-greeting-plugin',   // 菜单slug
        'mfgp_settings_page_content' // 回调函数
    );
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' );

Em seguida, crie o conteúdo da página de configurações, as opções de registro e o processo para salvar o formulário:

// 设置页面内容
function mfgp_settings_page_content() {
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/pt/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mfgp_settings_group' ); // 输出安全字段
            do_settings_sections( 'my-first-greeting-plugin' ); // 输出设置区块
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="pt"/></form>
    </div>
    <?php
}

// 初始化设置
function mfgp_settings_init() {
    register_setting(
        'mfgp_settings_group', // 选项组名
        'mfgp_custom_message', // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );

add_settings_section(
        'mfgp_section', // 区块ID
        '自定义问候设置', // 区块标题
        null, // 区块描述回调(无)
        'my-first-greeting-plugin' // 所属页面
    );

add_settings_field(
        'mfgp_field',
        '自定义问候语前缀',
        'mfgp_field_callback', // 输出字段HTML的回调
        'my-first-greeting-plugin',
        'mfgp_section'
    );
}
add_action( 'admin_init', 'mfgp_settings_init' );

// 设置字段的回调函数
function mfgp_field_callback() {
    $value = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );
    echo '<input type="text" name="mfgp_custom_message" value="' . esc_attr( $value ) . '" class="regular-text" />'echo '<p class="description">Este texto será adicionado antes das saudações.</p>';
}

Finalmente, modifique a função que contém o conteúdo do pequeno utilitário para que as configurações personalizadas do usuário sejam efetivas:

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 mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G');
    $custom_msg = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );

if ( $hour &gt;= 5 &amp;&amp; $hour = 12 && $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . esc_html( $custom_msg ) . sprintf( esc_html__( '%s,%s!', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>';
}

Agora, no menu “Configurações” do painel de controle do WordPress, será exibida a página de opções “Saudações Diárias”, onde o administrador pode salvar um prefixo de saudação personalizado.

Seguir padrões de segurança e codificação.

Durante o processo de desenvolvimento, é essencial seguir as práticas de segurança do WordPress: utilizar funções de escape apropriadas para todos os dados provenientes dos usuários ou do banco de dados que serão exibidos. esc_html, esc_attr, esc_urlVerificar e limpar todas as entradas dos usuários (por exemplo, utilizando métodos de validação de dados). sanitize_text_field) ; Usar wp_kses_post ou wp_kses Isso permite o uso de HTML seguro. Além disso, é recomendado seguir as diretrizes correspondentes. Padrão de Codificação PHP Oficial do WordPress, para garantir a clareza e a consistência do código.

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

Para que o seu plugin possa ser usado por usuários em todo o mundo, a internacionalização é um passo essencial. Além disso, para se preparar para a sua publicação no diretório oficial, é necessário seguir alguns padrões.

Implementar a internacionalização de plugins

Nós já usamos isso no código. esc_html__() Para embalar a string que precisa ser traduzida, você precisa criar um arquivo no diretório dos plugins. Para realizar a internacionalização, é necessário seguir os procedimentos específicos para cada idioma desejado. languages Pastas. Em seguida, adicione o seguinte código após as notas no início do arquivo principal para carregar o campo de texto:

// 加载文本域以实现国际化
function mfgp_load_textdomain() {
    load_plugin_textdomain( 'my-first-greeting', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfgp_load_textdomain' );

Depois disso, você pode usar ferramentas como o Poedit para analisar as strings de tradução no código dos plugins e gerar o necessário conteúdo de tradução. .pot Arquivos de modelo, e para diferentes idiomas (como o chinês) zh_CNCriar .po E o compilado .mo Arquivo, coloque-o aí. languages Pasta.

Preparar para publicar no catálogo oficial.

Se você planeja enviar o plugin para o diretório de plugins do WordPress.org, é necessário garantir a qualidade do código e incluir os arquivos de metadados necessários. Por exemplo, crie um… readme.txt O arquivo deve ter um formato que esteja de acordo com os requisitos especificados. Especificações específicas do WordPressO documento deve conter o nome do plugin, uma descrição, instruções de instalação, respostas para dúvidas comuns, registros de atualizações, etc. Além disso, considere adicionar um “gancho de desinstalação” (uninstallation hook) para limpar as opções armazenadas no banco de dados quando o usuário remover o plugin.

// 插件卸载时清理选项
function mfgp_uninstall_hook() {
    delete_option( 'mfgp_custom_message' );
}
register_uninstall_hook( __FILE__, 'mfgp_uninstall_hook' );

resumos

Ao criar este plugin de “saudações diárias”, completamos todo o processo central de desenvolvimento de plugins para o WordPress: desde a criação da estrutura básica dos arquivos, até a adição de funcionalidades utilizando ganchos de ação (action hooks), passando pela criação de interfaces de gerenciamento, pela implementação de padrões de segurança e pela preparação para a internacionalização. O ponto-chave é entender e utilizar com habilidade o sistema de ganchos do WordPress, sempre dando prioridade à segurança e aos padrões de código. Este exemplo simples é o ponto de partida da sua jornada no desenvolvimento de plugins; a partir daqui, você pode explorar funcionalidades mais avançadas, como códigos encurtados (shortcodes), tipos de artigos personalizados, endpoints REST API, entre outras, e desenvolver plugins profissionais e poderosos.

Perguntas frequentes Perguntas frequentes

Em que diretório os plugins devem ser colocados?

Os plugins do WordPress devem ser instalados no site. wp-content/plugins/ Os plugins estão localizados dentro de um diretório. Cada plugin pode ser um arquivo PHP independente, mas o mais comum é que seja um diretório com o mesmo nome do plugin, que contém o arquivo principal e outros recursos.

Por que o meu plugin não está aparecendo na lista de plugins no backend?

Por favor, verifique se o formato das notas de cabeça do arquivo do plugin principal (como “Nome do Plugin” e “Descrição”) está correto e completo. Certifique-se de que o arquivo está localizado no diretório correto e que o WordPress tem permissão para ler esse arquivo. Além disso, verifique se não há espaços ou caracteres desnecessários no início do código PHP.

Como depurar erros de PHP em um plugin?

Nos wp-config.php No arquivo, será… WP_DEBUG A constante foi definida como… trueIsso permitirá que o WordPress exiba erros, avisos e notificações em PHP nas páginas. Por favor, note que essa funcionalidade deve ser ativada apenas no ambiente de desenvolvimento e desativada antes de colocar o site em produção.

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

No tópico… functions.php As funcionalidades adicionadas estão vinculadas ao tema específico. Ao trocar de tema, essas funcionalidades podem perder a eficácia. Por outro lado, as funcionalidades fornecidas por plugins são independentes do tema; elas permanecem disponíveis sempre que o plugin estiver ativado, independentemente do tema utilizado. Para funcionalidades de uso geral, desenvolver plugins é a melhor opção.

Como posso permitir que outros desenvolvedores expandam o meu plugin?

Você pode permitir que outros desenvolvedores expandam seu plugin fornecendo “ganchos de ação” (action hooks) e “ganchos de filtro” (filter hooks) personalizados. do_action() Crie ganchos de ação (action hooks) para “executar alguma ação” nos locais onde é necessário injetar código. Utilize-os para automatizar esses processos. apply_filters() Criar ganchos (hooks) de filtro que permitam que outros plugins modifiquem certos valores de dados no seu próprio plugin é um padrão comum de colaboração entre plugins no ecossistema do WordPress.