Do zero: construa o seu primeiro plugin do WordPress.

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

Do zero: construa o seu primeiro plugin do WordPress.

O desenvolvimento de plugins do WordPress é uma forma fundamental de expandir as funcionalidades principais do WordPress. Ao criar plugins, os programadores podem adicionar funcionalidades personalizadas aos websites sem alterar os temas ou os ficheiros principais, o que garante a independência e a portabilidade das funcionalidades. Um plugin padrão é habitualmente composto por um ficheiro PHP principal, ficheiros de recursos opcionais (como CSS e JavaScript) e pacotes de idioma. Compreender a estrutura básica dos plugins é o primeiro passo para um desenvolvimento bem-sucedido.

A estrutura básica e a criação de plugins do WordPress

A forma mais básica de um plug-in é um ficheiro colocado no/wp-content/plugins/A pasta no diretório. Esta pasta deve conter, pelo menos, um ficheiro PHP principal, cujos comentários no início são utilizados para declarar as informações do plugin ao WordPress.

A escrita de anotações no cabeçalho do plug-in.

Cada ficheiro principal do plugin deve começar com um bloco de comentários PHP específico, chamado cabeçalho do plugin. O WordPress utiliza estas informações para identificar e apresentar o seu plugin na lista de plugins do painel de administração. Um cabeçalho de comentários padrão é o seguinte:

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

<?php
/**
 * Plugin Name: 我的第一个插件
 * Plugin URI:  https://example.com/my-first-plugin
 * Description: 这是一个用于演示的简单WordPress插件。
 * Version:     1.0.0
 * Author:      开发者姓名
 * Author URI:  https://example.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Dentre eles,Plugin NameÉ necessário preencher todos os campos, mas os restantes são opcionais. No entanto, para garantir a integridade e a profissionalidade do plugin, recomenda-se que preencha todos os campos, sempre que possível.Text DomainÉ utilizado para a internacionalização e constitui a base para a tradução de plug-ins subsequentes.

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

Criar o ficheiro principal do plug-in e o diretório.

Primeiramente, em/wp-content/plugins/Crie uma nova pasta na pasta principal, por exemplo:my-first-pluginEm seguida, crie o arquivo PHP principal dentro dessa pasta; geralmente, o nome do arquivo é o mesmo que o nome da pasta.my-first-plugin.phpEscreva as anotações acima no ficheiro e, após guardar, poderá vê-lo e ativá-lo na página “Plugins” do WordPress. Nesta fase, o plugin ainda não tem quaisquer funcionalidades.

Conceitos básicos de desenvolvimento: ganchos de ação e filtros

A arquitetura de plugins do WordPress é baseada no sistema de “ganchos”, que servem de ponte para a interação entre os plugins e o núcleo do sistema. Os ganchos são divididos em duas categorias principais: ganchos de ação e ganchos de filtro.

Compreender e utilizar os ganchos de ação (action hooks)

Os ganchos de ação permitem que você execute código PHP personalizado em determinados pontos no tempo ou quando ocorrem eventos. Você pode usaradd_action()A função “monta” a sua função num gancho. Por exemplo, adiciona automaticamente um parágrafo no final do conteúdo do artigo:

função myplugin_add_footer_text( $content ) {
    se ( is_single() ) {
        $content . = '<p>Obrigado pela leitura!</p>';
    }
    return $content.
}
add_filter( 'the_content', 'myplugin_add_footer_text' );

Note que este exemplo utiliza, na verdade, um hook de filtro para modificar o conteúdo. Um exemplo típico de hook de ação é adicionar um menu na área de administração:

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

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',
        '我的插件',
        'manage_options',
        'myplugin-settings',
        'myplugin_settings_page'
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

Aqui,add_action()Vamos traduzir a função para o português e explicá-la em detalhe:myplugin_add_admin_menu\nLigado aadmin_menuEste é um gancho de ação, que o WordPress invoca quando cria o menu de administração.

Compreender e utilizar os ganchos (hooks) dos filtros

Os filtros de gancho são usados para modificar os dados gerados pelo WordPress durante o processamento. Você pode usaradd_filter()Usar funções para montar as suas funções. As funções de filtragem recebem o valor de entrada, modificam-no e, em seguida, devem devolver o valor modificado. Por exemplo, modificar o título de um artigo:

function myplugin_modify_title( $title ) {
    return '精选: ' . $title;
}
add_filter( 'the_title', 'myplugin_modify_title' );

Os filtros são muito poderosos e são frequentemente utilizados para modificar os resultados de consultas, o conteúdo de texto, os valores de opções e praticamente todos os dados gerados pelo WordPress.

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%

Adicionar uma página de configuração e opções ao plug-in.

Um plugin funcional geralmente necessita de oferecer opções de configuração aos utilizadores. O WordPress fornece uma API de configuração para criar páginas de opções de forma segura e padronizada.

Criar um menu e uma página de administração

Primeiramente, você precisa usar…add_menu_page()ouadd_options_page()Nós usamos funções como a `add_admin_page()` para adicionar uma página de administração. Normalmente, montamos esta operação noadmin_menuNo gancho, como mostrado no exemplo anterior. Neste caso,myplugin_settings_pageÉ uma função de callback, utilizada para renderizar o conteúdo HTML da página de configurações.

\nUtilizar a API de Definições para registar opções.

A API de Configurações fornece uma forma segura de registar, validar e guardar as configurações. Os passos principais incluem: utilizarregister_setting()Registe um grupo de configuração e utilize-o.add_settings_section()Adicione um bloco de configurações e utilize-o.add_settings_field()Adicione campos de configuração específicos.

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

function myplugin_settings_init() {
    // 注册一个设置
    register_setting( 'myplugin_settings', 'myplugin_options' );

    // 添加一个设置区块
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_cb',
        'myplugin-settings'
    );

    // 添加一个设置字段
    add_settings_field(
        'myplugin_field_text',
        '欢迎语',
        'myplugin_field_text_cb',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

Em seguida, você precisa escrever a função de callback correspondente.myplugin_section_general_cbemyplugin_field_text_cbPara exibir a descrição do bloco e as caixas de entrada HTML dos campos. Por fim, emmyplugin_settings_pageEm uma função, usar…settings_fields()edo_settings_sections()Uma função para exibir todo o formulário.

Segurança de plugins e melhores práticas

Ao desenvolver um plugin, a segurança deve ser uma das principais considerações. Um plugin inseguro pode colocar todo o site em risco.

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.

Validação de dados, limpeza e escape

Nunca confie na entrada do utilizador ou nos dados provenientes da base de dados. Quando processar qualquer entrada (como, por exemplo, $_POST, $_GET), é necessário validá-la e limpá-la. O WordPress fornece várias funções, tais comosanitize_text_field(), intval(), wp_kses()etc. Quando os dados são exportados para HTML ou JavaScript, é necessário escapar deles, utilizando funções comoesc_html(), esc_attr(), esc_js()ewp_json_encode()

// 接收、清理并保存数据
$user_input = sanitize_text_field( $_POST['my_field'] );
update_option( 'my_option', $user_input );

// 安全地输出数据
echo esc_html( get_option( 'my_option' ) );

\nUtilizar verificações de permissão sem o CE

Para todos os envios de formulários em segundo plano ou pedidos AJAX efetuados por plugins, é necessário utilizar o não-CE do WordPress para validar a legitimidade e unicidade dos pedidos, evitando assim ataques de falsificação de solicitação entre sites. Ao mesmo tempo, é necessário utilizarcurrent_user_can()A função verifica se o utilizador atual tem as permissões necessárias para executar essa ação.

// 在表单中输出 nonce 字段
wp_nonce_field( 'myplugin_action', 'myplugin_nonce' );

// 在处理请求时验证 nonce 和权限
function myplugin_handle_form_submit() {
    if ( ! isset( $_POST['myplugin_nonce'] ) ||
         ! wp_verify_nonce( $_POST['myplugin_nonce'], 'myplugin_action' ) ||
         ! current_user_can( 'manage_options' ) ) {
        wp_die( '安全校验失败。' );
    }
    // ... 安全地处理数据 ...
}

resumos

O desenvolvimento de plugins do WordPress é um projeto sistemático que começa com a compreensão da estrutura básica e do mecanismo de ganchos, passando pela implementação de funcionalidades e criação de interface do usuário, até a adoção de práticas de segurança rigorosas. Seguindo os padrões de codificação do WordPress e aproveitando ao máximo a API fornecida, os desenvolvedores podem criar plugins robustos, seguros e fáceis de manter. O foco principal é integrar as funcionalidades personalizadas de forma transparente no ciclo de vida do WordPress por meio de ganchos de ações e filtros, além de usar a API de configurações para gerenciar as configurações, priorizando sempre a validação, a limpeza, a escapagem de dados e a verificação de permissões.

Perguntas frequentes Perguntas frequentes

Como depurar meu plugin para WordPress (####)?
Ativar o modo de depuração do WordPress é o primeiro passo. Nowp-config.phpNo arquivo, será…WP_DEBUGA constante foi definida como…trueIsso exibirá diretamente os erros, avisos e notificações do PHP na página. Para um depuramento mais complexo, é possível usar…error_log()A função regista as informações no registo de erros do servidor ou utiliza um plug-in de depuração especial para ver os detalhes das consultas, dos ganchos, etc.

Como o meu plugin pode implementar suporte multilíngue?

O WordPress utiliza o framework GNU gettext para implementar a internacionalização. Primeiramente, isso é definido nos comentários do cabeçalho do plugin.Text DomainNo código do plug-in, utilize < para todos os strings que necessitam de tradução.__()Para fazer a tradução, use_e()Fazer a tradução e exportá-la diretamente. Em seguida, usar uma ferramenta como o Poedit para extrair as cadeias de caracteres do código-fonte do plug-in e gerar a tradução..potArquivos de modelo; crie, para cada idioma, o arquivo de modelo correspondente..poE o compilado.moArquivos e coloque-os no plugin./languages/No diretório.

Como evitar que os nomes das classes no plug-in entrem em conflito com os de outros plug-ins?

Para evitar conflitos entre nomes de classes, nomes de funções ou nomes de constantes, a melhor prática é usar espaços de nomes ou adicionar um prefixo exclusivo a todos os identificadores. Desde o PHP 5.3, recomenda-se a utilização de espaços de nomes. Por exemplo, declare:namespace MyPluginAdmin;Se tivermos em conta a compatibilidade, devemos utilizar um prefixo que seja suficientemente único, como por exemplo, uma combinação do nome da empresa com a abreviatura do nome do plug-in:function acme_myplugin_init() {}O nome da classe é definido comoclass Acme_MyPlugin_Admin_Settings {}

Como adicionar uma tabela de banco de dados personalizada ao meu plugin?

O melhor momento para criar uma tabela personalizada é quando o plugin é ativado. Você pode encapsular o código de criação da tabela em uma função e usá-lo através doregister_activation_hook()Registre a função. Dentro da função, usedbDelta()Os métodos de função são usados para criar ou atualizar estruturas de tabelas de forma segura, exigindo a utilização de um formato SQL muito específico. É essencial utilizar$wpdb->prefixAdicione o prefixo do site ao nome da tabela para suportar ambientes com vários sites.