Guia Prático para Desenvolvimento de Plugins para WordPress: Construa o Seu Primeiro Plugin Funcional do Zero

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

O sistema de plugins do WordPress é o núcleo da sua poderosa capacidade de extensão. Através dos plugins, os desenvolvedores podem adicionar funcionalidades ao site, desde formulários de contacto simples até funcionalidades complexas de comércio eletrónico. Este artigo irá guiá-lo através de todo o processo de criação de um plugin completo, proporcionando uma compreensão profunda da sua estrutura central, do mecanismo de hooks, da segurança e das melhores práticas. No final, terá um trabalho que pode publicar ou utilizar diretamente.

Ambiente de desenvolvimento e preparação básica

Antes de escrever a primeira linha de código, é essencial dispor de um ambiente de desenvolvimento estável e eficiente. Isto permite-lhe concentrar-se na construção lógica e, ao mesmo tempo, evitar alguns erros comuns.

Configure o ambiente de desenvolvimento local.

Recomenda-se utilizar um conjunto de ambiente de servidor local, como o XAMPP, o MAMP ou o Local by Flywheel, que é mais profissional. Certifique-se de que a sua versão do PHP (recomendado 7.4 ou superior) é compatível com o ambiente do WordPress que pretende implementar e que o modo de depuração está ativado. No WordPress,wp-config.phpNo ficheiro, as definiçõesWP_DEBUGParatrueIsso irá mostrar todos os erros e avisos na fase de desenvolvimento, ajudando-o a localizar rapidamente o problema.

Leitura recomendada Guia de Iniciação para Desenvolvimento de Plugins para WordPress: Do Nível Zero à Construção de Módulos Funcionais Profissionais

Planeamento da estrutura dos ficheiros do plug-in.

Um plug-in padrão requer, pelo menos, um ficheiro principal. A prática habitual é criar uma pasta dedicada ao plug-in e nomeá-la de acordo com a funcionalidade principal do plug-in, por exemplo,my-first-pluginNessa pasta, o ficheiro principal tem, geralmente, o mesmo nome da pasta e a extensão ..phpa sabermy-first-plugin.phpUma estrutura clara ajuda a adicionar JavaScript, CSS, pacotes de idioma ou arquivos de classe posteriormente.

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 as informações básicas do cabeçalho.

A “entrada” e a identificação do plugin dependem das informações de cabeçalho no topo do ficheiro principal. Esta é a chave para o WordPress identificar e carregar o plugin.

Escrever um cabeçalho de plug-in padrão.

No início do ficheiro PHP principal, é necessário utilizar um bloco de comentários PHP específico para fornecer informações sobre o plugin. Estas informações serão apresentadas na página de gestão de plugins no backend do WordPress.

<?php
/**
 * Plugin Name:       我的第一个功能插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个实战指南中创建的示例插件,用于演示核心开发流程。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Dentre eles,Plugin NameeText DomainÉ um campo obrigatório, sendo os restantes opcionais. Campo de textoText DomainUsado para suporte de internacionalização.

Prevenir o acesso direto aos ficheiros.

Para proteger o código do plug-in e evitar a possibilidade de fuga de informações ou erros que possam ocorrer ao aceder diretamente ao ficheiro principal através de uma URL, é necessário adicionar uma verificação de acesso direto após as informações de cabeçalho e antes de qualquer outro código.

Leitura recomendada Guia de desenvolvimento personalizado de plugins para o WooCommerce: Crie sua própria loja online exclusiva

// 防止直接访问
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

ConstanteABSPATHÉ o caminho absoluto para a pasta raiz do WordPress, que é definido pelo WordPress durante a sua execução. Esta condição garante que o código seguinte só será executado no ambiente do WordPress.

Implementar funcionalidades principais e ganchos do WordPress.

O WordPress permite que o seu código interaja com os processos principais ou modifique os dados em momentos específicos através de dois mecanismos poderosos: ganchos de ação e ganchos de filtro. Compreender e utilizar estes mecanismos é fundamental para o desenvolvimento de plugins.

Usar ganchos de ação para adicionar funcionalidades

Os ganchos de ação permitem que você execute código personalizado quando ocorrem eventos específicos. Por exemplo, podemos criar uma funcionalidade que adiciona automaticamente direitos de autor ao final do conteúdo de um artigo. Para isso, é necessário utilizarthe_contentFiltros (que são, essencialmente, ganchos de filtro, mas a sua utilização é semelhante à dos ganchos de ação) ewp_enqueue_scriptsOs ganchos de ação são usados para carregar os recursos.

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%

Primeiro, vamos escrever uma função.mfp_add_copyright_noticee montá-lo emthe_contentNo gancho.

// Adicionar uma declaração de direitos de autor após o conteúdo do artigo
function mfp_add_copyright_notice( $content ) {
	if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
		$copyright_text = '<p><em>Os direitos de autor deste artigo pertencem a este site. Por favor, indique a fonte ao republicá-lo.</em></p>';
		$content .= $copyright_text;
	}
	return $content;
}
add_filter( 'the_content', 'mfp_add_copyright_notice' );

A condição garante que a declaração de direitos de autor apenas seja apresentada no ciclo principal do artigo na página inicial, não afetando a página, o resumo ou a área de administração.

Usar ganchos de filtro para modificar dados

Os filtros de gancho são utilizados para modificar quaisquer dados que lhes sejam transmitidos. Suponhamos que pretendamos alterar algumas partes do título do site. Para tal, podemos criar uma função e adicioná-la aowp_titleOu mais modernodocument_title_partsFiltro.

Leitura recomendada Descrição detalhada do processo completo de desenvolvimento de plugins para WordPress: um guia prático do iniciante ao especialista

// 修改网站标题后缀
function mfp_modify_title_suffix( $title ) {
	if ( is_home() ) {
		$title['suffix'] = ' | 我的精彩博客';
	}
	return $title;
}
add_filter( 'document_title_parts', 'mfp_modify_title_suffix' );

Introduzir scripts e estilos de forma segura

Para adicionar estilo ou interatividade ao front-end do plugin, é necessário usar o que o WordPress recomenda.wp_enqueue_style()ewp_enqueue_script()A função, e através dewp_enqueue_scriptsChamada de gancho.

// 注册并排队插件的前端样式
function mfp_enqueue_frontend_assets() {
	// 获取插件目录的URL
	$plugin_url = plugin_dir_url( __FILE__ );

// 排队一个CSS文件
	wp_enqueue_style(
		'mfp-frontend-style',
		$plugin_url . 'assets/css/frontend.css',
		array(),
		'1.0.0'
	);

// 排队一个JS文件,并依赖jQuery
	wp_enqueue_script(
		'mfp-frontend-script',
		$plugin_url . 'assets/js/frontend.js',
		array( 'jquery' ),
		'1.0.0',
		true // 在页脚加载
	);
}
add_action( 'wp_enqueue_scripts', 'mfp_enqueue_frontend_assets' );

Criar uma página de gerenciamento e opções de configuração.

Muitos plugins necessitam de oferecer opções de configuração aos utilizadores. O WordPress fornece uma API de definições que permite criar menus de administração e páginas de opções de forma segura e padronizada.

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.

Adicionar menu de gerenciamento

Primeiro, useadd_action( ‘admin_menu’, … )Para registar um novo item de menu de administração ou um sub-item de menu. A função abaixomfp_create_admin_menuSerá adicionada uma página de submenu ao menu principal “Definições”.

// 创建插件管理菜单
function mfp_create_admin_menu() {
	add_options_page(
		‘我的插件设置’, // 页面标题
		‘我的插件’,     // 菜单标题
		‘manage_options’, // 权限要求
		‘mfp-settings’,   // 菜单slug
		‘mfp_settings_page_html’ // 用于输出页面内容的回调函数
	);
}
add_action( ‘admin_menu’, ‘mfp_create_admin_menu’ );

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

Em seguida, é necessário definir a função de callback.mfp_settings_page_htmlPara renderizar o conteúdo da página e usar a API de configurações para registrar um grupo de configurações, uma opção e campos específicos.

// Definir a saída HTML da página de configurações
function mfp_settings_page_html() {
	// Verificar os direitos do utilizador
	if ( ! current_user_can( ‘manage_options’ ) ) {
		return;
	}
	?&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>
	‘mfp_field_copyright_text’ )
	);
}
add_action( ‘admin_init’, ‘mfp_settings_init’ );

// 渲染版权文本文档字段
function mfp_field_copyright_text_html() {
	$options = get_option( ‘mfp_options’ );
	$value = $options[‘copyright_text’] ?? ‘默认版权文本’; // PHP 7.0+ 空合并运算符
	?&gt;
	<input type="“text”"
		   id="“mfp_field_copyright_text”"
		   name="“mfp_options[copyright_text]”"
		   value="“NO NUMERIC NOISE KEY" 1000”
		 class="“regular-text”">
	&lt;?php
}

Agora, você podemfp_add_copyright_noticeEm uma função, usar…get_option( ‘mfp_options’ )[‘copyright_text’]Obter dinamicamente o texto de fundo definido pelo utilizador, de modo a que as funcionalidades do plug-in sejam configuráveis.

resumos

Este artigo descreve detalhadamente o processo completo de desenvolvimento de um plugin do WordPress do zero. Começamos por configurar o ambiente de desenvolvimento e criar um ficheiro principal com informações de cabeçalho padrão, enfatizando a importância da segurança. Em seguida, exploramos em profundidade o mecanismo de hooks, que é o núcleo do desenvolvimento de plugins do WordPress, incluindo como utilizar hooks de ação para executar código e hooks de filtro para modificar dados, além de demonstrar métodos seguros de carregar recursos front-end. Por último, criamos uma página de definições de administração profissional utilizando a API de configurações do WordPress, permitindo que os utilizadores personalizem as funcionalidades do plugin.

Todo o processo de desenvolvimento seguiu os padrões de codificação e as melhores práticas do WordPress, incluindo a utilização de prefixos únicos para funções, a validação e a fuga de dados, e a base para o suporte à internacionalização. Depois de dominar estes conceitos básicos, pode expandir indefinidamente a funcionalidade do seu plugin, combinando diferentes ganchos, criando tabelas de base de dados personalizadas, desenvolvendo pequenos utilitários ou códigos curtos, entre outras funcionalidades.

Perguntas frequentes Perguntas frequentes

Como escolher o prefixo adequado para funções e classes de plugins?

Todas as funções, classes, variáveis e constantes globais dos plugins devem usar um prefixo único, para evitar conflitos de nomes com outros plugins ou temas. O prefixo é geralmente composto pela abreviatura ou sigla do plugin. Por exemplo, se o nome do plugin for “My First Plugin”, o prefixo pode ser escolhido como "mfp_".mfp_oumyfirstplugin_É muito importante manter a consistência.

Por que é necessário usar wp_enqueue_script para adicionar scripts?

fazer uso dewp_enqueue_script()ewp_enqueue_style()É o método recomendado oficialmente pelo WordPress. Ele processa corretamente as dependências de scripts (como o jQuery), evita que o mesmo script seja carregado repetidamente e permite que outros plugins ou temas o utilizem.wp_deregister_script()Para remover ou substituir os seus scripts de forma segura. Utilize diretamente.A inserção de etiquetas não permite usufruir destas vantagens de gestão e pode dar origem a conflitos.

Quais são as principais diretrizes de segurança ao desenvolver plugins?

O princípio fundamental é: nunca confiar na entrada do utilizador. Para todos os dados provenientes de$_GET$_POST$_REQUESTOu validar, limpar e escapar os dados obtidos da base de dados. Utilizar < quando exportar para HTML.esc_html()esc_attr();Usar a saída para o URLesc_url()Numa consulta SQL, é essencial utilizar$wpdb->prepare()Realize consultas parametrizadas para evitar injeções de SQL. Ao mesmo tempo, utilizecurrent_user_can()Verifique as permissões do usuário.

Como adicionar suporte de internacionalização ao meu plugin?

Primeiro, configure corretamente as informações do cabeçalho do plug-in.Text DomaineDomain PathEm seguida, use < em todos os locais do código onde as cadeias de caracteres precisam ser traduzidas.()Para realizar a tradução de saída, use_e()Fazer uma tradução de eco, por exemplo:( ‘Hello World’, ‘my-first-plugin’ )Por último, utilize uma ferramenta como o Poedit para digitalizar o código e gerar a tradução..potArquivos de modelo, e crie-os para diferentes idiomas..poe.moTraduzir o documento e colocá-lo em/languagesNo diretório.