Preparação e configuração do ambiente
Antes de começar a escrever o código, você precisa de um ambiente de desenvolvimento adequado. Isso inclui uma instalação local do WordPress, um editor de código e o conhecimento de alguns conceitos básicos.
Primeiramente, certifique-se de que você possui um ambiente de servidor local. Você pode usar ferramentas como XAMPP, MAMP, Local by Flywheel ou Docker para configurar um servidor rapidamente. Após instalar e configurar o WordPress, você terá um ambiente isolado e seguro, perfeito para realizar testes sem risco de afetar o seu site online.
Em segundo lugar, você precisa de um editor de código conveniente e eficiente. O Visual Studio Code, oPhpStorm ou o Sublime Text são excelentes opções, pois oferecem suporte excelente para PHP, HTML, JavaScript e CSS, além de funcionalidades como realce de código, autocompletamento e depuração.
Leitura recomendada Do zero ao um: Introdução ao desenvolvimento de plugins do WordPress e guia das melhores práticas。
Por fim, é de extrema importância compreender a estrutura básica dos plugins do WordPress. Um plugin é, essencialmente, um ou mais arquivos PHP que estão localizados no diretório de instalação do WordPress. /wp-content/plugins/ Dentro da pasta, cada plugin deve ter um arquivo principal que contém informações específicas sobre o plugin, utilizadas para comunicar ao sistema WordPress sua existência e funcionalidades.
Criação e declaração do arquivo principal do plugin
O primeiro passo para criar um plugin é criar o arquivo principal e adicionar as devidas notas de cabeçalho. Este arquivo geralmente recebe o nome da função do plugin, por exemplo… my-first-plugin.phpPor favor, faça isso no seu ambiente local. /wp-content/plugins/ Crie uma nova pasta no diretório e nomeie-a… my-first-pluginEm seguida, crie o arquivo principal dentro dessa pasta.
O cabeçalho do plugin é um conjunto de metadados do plugin, que informa ao WordPress o nome do plugin, a descrição, a versão, o autor, entre outros detalhes. Aqui está um exemplo básico de cabeçalho de plugin:
<?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
*/ Depois de salvar esse arquivo, faça login no seu painel de controle do WordPress e vá para a página “Plugins”. Você deve ver um novo plugin chamado “Meu Primeiro Plugin de Funcionalidade” na lista de plugins. Nesse momento, você pode ativá-lo, embora ele ainda não tenha nenhuma funcionalidade real.
Arquitetura Central: Ganchos de Ações e Filtros
O núcleo da poderosa capacidade de extensão do WordPress reside no seu sistema de ganchos (Hooks), que permite que os desenvolvedores insiram o próprio código em momentos específicos ou antes/depois que os dados sejam utilizados. Os ganchos são divididos em dois tipos: Ações (Actions) e Filtros (Filters).
Leitura recomendada Guia de Iniciação para o Desenvolvimento de Temas WordPress: Construa o Seu próprio Modelo de Site a Partir do Zero。
Os ganchos de ação (action hooks) permitem que você execute funções personalizadas quando eventos específicos do WordPress ocorrem. Por exemplo, quando um artigo é publicado…publish_post), ao carregar o menu no painel de administração (admin_menu) ou ao carregar scripts no cabeçalho da página web (wp_enqueue_scriptsUse. add_action() Uma função para montar a sua função no gancho de ação (action hook).
Use os ganchos de ação para adicionar um menu de fundo.
Suponhamos que queremos adicionar uma página de configurações para o nosso plugin no painel administrativo do WordPress. Vamos usar… admin_menu Este “gancho de ação” (action hook). Adicione o código ao seu arquivo principal, após as informações de cabeçalho do plugin:
// 在管理后台添加菜单
function mfp_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限
'my-first-plugin', // 菜单 slug
'mfp_settings_page', // 用于显示页面内容的回调函数
'dashicons-admin-generic', // 图标(可选)
80 // 菜单位置(可选)
);
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );
// 设置页面的回调函数
function mfp_settings_page() {
?>
<div class="wrap">
<h1></h1>
<p>Bem-vindo à página de configuração do meu primeiro plugin!</p>
</div>
<?php
} Os ganchos (hooks) dos filtros permitem que você modifique os dados. Eles recebem um valor, que, após ser processado pela sua função, deve ser devolvido como um valor modificado. Por exemplo, para modificar o título de um artigo…the_title), modificar o conteúdo do artigo (the_content) ou modificar o comprimento do resumo (excerpt_lengthUse. add_filter() Uma função é usada para montar (ou vincular) a sua função ao “gancho” (hook) do filtro.
Usar filtros para modificar o conteúdo de um artigo
Vamos criar uma função simples: adicionar automaticamente uma declaração de direitos autorais no final do conteúdo de cada artigo.
// 在文章内容后添加自定义文本
function mfp_add_copyright_to_content( $content ) {
// 仅对网站前端的主循环中的文章生效
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<p><em>Declaração de Direitos Autorais: O conteúdo deste artigo é de propriedade deste site. Por favor, indique a fonte ao reproduzi-lo.</em></p>';
$content .= $custom_text;
}
return $content;
}
add_filter( 'the_content', 'mfp_add_copyright_to_content' ); Implementação de funções específicas: Códigos abreviados e códigos curtos
Os códigos encurtados (shortcodes) são uma funcionalidade poderosa fornecida pelo WordPress, que permite que os usuários insiram um simples marcador em um artigo ou página para adicionar funcionalidades específicas. [my_shortcode]Isso permite a exibição de conteúdo dinâmico complexo ou a execução de funções específicas. Isso oferece uma grande flexibilidade aos criadores de conteúdo.
Crie e registre um código simplificado.
Criar um código abreviado (ou “shortcut”) requer dois passos: primeiro, definir a função que irá processar esse código abreviado; e, em seguida, utilizá-la para gerar o resultado desejado. add_shortcode() A função o registra no WordPress. Vamos criar um código abreviado que exiba a data atual e uma saudação.
Leitura recomendada Do Início ao Domínio: Um Guia Completo e Prático para o Desenvolvimento de Plugins para WordPress。
// 定义简码的处理函数
function mfp_show_greeting_shortcode( $atts ) {
// 使用 shortcode_atts 定义默认参数,并合并用户传入的参数
$atts = shortcode_atts(
array(
'name' => '访客',
),
$atts,
'greeting'
);
// 获取当前时间
$current_time = current_time( 'mysql' );
$hour = date( 'H', strtotime( $current_time ) );
// 根据时间生成问候语
if ( $hour < 12 ) {
$greeting = '上午好';
} elseif ( $hour < 18 ) {
$greeting = '下午好';
} else {
$greeting = '晚上好';
}
// 构建输出
$output = '<div class="mfp-greeting">'$output .= sprintf( '<p>%s, %s!</p>'`, esc_html($atts['name'])`, esc_html($greeting));
$output .= sprintf('<p>A hora atual é: %s</p>', esc_html($current_time));
$output .= '</div>';
return $output;
}
// 注册简码,第一个参数是用户使用的标签名
add_shortcode( 'greeting', 'mfp_show_greeting_shortcode' ); Agora, os usuários podem usar isso no editor de artigos. [greeting name="张三"]Na página, será exibido: “Zhang San, boa tarde! A hora atual é: 2026-...”. Se nenhum parâmetro for fornecido, o valor “Visitante” será usado por padrão.
Prática Avançada: Criando Tabelas de Banco de Dados e Páginas de Opções
Plugins mais complexos podem precisar armazenar seus próprios dados. O WordPress oferece duas principais maneiras para isso: usar o WordPress Options API para armazenar dados simples em formato de pares de chave-valor, ou criar tabelas no banco de dados para armazenar dados estruturados.
Usar a API de opções para salvar as configurações
A API de opções é muito adequada para armazenar as informações de configuração dos plugins. Vamos aprimorar a página de configurações do backend que criamos anteriormente, para que ela possa salvar e ler um conjunto simples de configurações.
Primeiramente, precisamos criar um formulário. mfp_settings_page() Na função, adicione um formulário simples para processar as configurações:
function mfp_settings_page() {
// 检查用户是否提交了表单
if ( isset( $_POST['mfp_submit_settings'] ) ) {
// 安全检查:验证 nonce
if ( ! isset( $_POST['mfp_settings_nonce'] ) || ! wp_verify_nonce( $_POST['mfp_settings_nonce'], 'mfp_save_settings' ) ) {
wp_die( '安全验证失败!' );
}
// 权限检查
if ( ! current_user_can( 'manage_options' ) ) {
wp_die( '权限不足!' );
}
// 清理并保存选项
$custom_message = sanitize_textarea_field( $_POST['custom_message'] );
update_option( 'mfp_custom_message', $custom_message );
echo '<div class="notice notice-success is-dismissible"><p>A configuração foi salva!</p></div>';
}
// 从数据库读取现有值
$saved_message = get_option( 'mfp_custom_message', '这是默认的欢迎信息。' );
?>
<div class="wrap">
<h1></h1>
<form method="post" action="" data-trp-original-action="">
<?php wp_nonce_field( 'mfp_save_settings', 'mfp_settings_nonce' ); ?>
<table class="form-table">
<tr>
<th scope="row"><label for="custom_message">Mensagem personalizada:</label></th>
<td>
<textarea name="custom_message" id="custom_message" rows="5" cols="50" class="large-text"><?php echo esc_textarea( $saved_message ); ?></textarea>
<p class="description">Este texto será exibido ao usar o código abreviado [show_message].</p>
</td>
</tr>
</table>
<?php submit_button( '保存更改', 'primary', 'mfp_submit_settings' ); ?>
<input type="hidden" name="trp-form-language" value="pt"/></form>
</div>
<?php
} Em seguida, criamos um novo código abreviado para exibir a mensagem salva:
function mfp_show_message_shortcode() {
$message = get_option( 'mfp_custom_message', '这是默认的欢迎信息。' );
return '<div class="mfp-custom-message">'`. wp_kses_post( wpautop( '$message' ) )`.'</div>'php
add_shortcode('show_message', 'mfp_show_message_shortcode'); Agora, os administradores podem personalizar as mensagens na página de configurações do plugin, enquanto os autores só precisam usá-las nos artigos. [show_message] Basta usar um código abreviado para exibir essa mensagem.
Um plugin cria uma tabela personalizada quando é ativado.
Para plugins que precisam armazenar dados relacionais complexos, como pedidos e registros, pode ser necessário criar suas próprias tabelas de banco de dados. Isso geralmente é realizado quando o plugin é ativado. O WordPress fornece ferramentas para isso. register_activation_hook Defina a função que será executada ao ativar o sistema.
Atenção: O código abaixo é apenas um exemplo; no desenvolvimento real, é necessário um tratamento de erros mais rigoroso e uma camada de abstração do banco de dados (por exemplo…). $wpdbO uso de ( ).
// 插件激活时运行的函数
function mfp_create_custom_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'mfp_plugin_logs'; // 确保表名唯一
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
log_time datetime DEFAULT CURRENT_TIMESTAMP NOT NULL,
user_id bigint(20) DEFAULT 0,
action varchar(255) NOT NULL,
details text,
PRIMARY KEY (id)
) $charset_collate;";
// 引入 WordPress 升级 API,用于执行 dbDelta 函数
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
// 注册激活钩子
register_activation_hook( __FILE__, 'mfp_create_custom_table' ); resumos
Através deste guia, você passou pelos processos centrais do desenvolvimento de plugins para o WordPress. Desde a configuração do ambiente e a criação do cabeçalho do plugin, você aprendeu a utilizar ganchos de ações (actions) e filtros (filters) para expandir as funcionalidades do WordPress, a fornecer métodos flexíveis de inserção de conteúdo para os usuários através de códigos abreviados (shortcodes), e a implementar métodos básicos para armazenar configurações usando a API de opções (options API), bem como para criar tabelas de banco de dados personalizadas. Estes são os pilares para construir um plugin funcional. Lembre-se de que uma boa estrutura de código, segurança (como verificação de nonce e verificações de permissões), e a preparação para a internacionalização são partes essenciais no desenvolvimento profissional de plugins. No próximo passo, você pode explorar o WordPress REST API, tipos de artigos personalizados, metadados (Meta Boxes), bem como a introdução de scripts front-end e estilos padrão, a fim de criar plugins mais complexos e poderosos.
Perguntas frequentes Perguntas frequentes
Um plugin só pode ter um arquivo principal?
Não é bem assim. Um plugin pode conter vários arquivos PHP, mas deve haver um arquivo principal que contém as informações de cabeçalho do plugin – esse é o ponto de entrada para que o WordPress reconheça o plugin. Os plugins mais complexos costumam organizar o código de diferentes funções em vários arquivos, que são então incluídos através do arquivo principal, a fim de facilitar a gestão do código e a modularização.
Como processar de forma segura os dados enviados pelos usuários através de formulários no frontend?
Ao processar os dados enviados pelos usuários, é necessário realizar uma verificação rigorosa, limpeza e escape dos mesmos. Para os dados de entrada, use… sanitize_text_field()、sanitize_email()、sanitize_textarea_field() Use funções de limpeza para processar os dados. Para os dados que serão exibidos em uma página HTML, utilize… esc_html()、esc_attr() ou wp_kses_post() Realize a escape dos caracteres necessários. Além disso, é essencial utilizar o mecanismo de nonce do WordPress para evitar a falsificação de solicitações entre sites (cross-site requests). current_user_can() Verifique as permissões do usuário.
Como meu plugin pode evitar conflitos de nomes de funções com outros plugins?
A melhor prática é usar namespaces (desde PHP 5.3+) ou colocar todas as funções, classes e constantes sob um prefixo único. Por exemplo, todas as funções neste guia começam com “mfp_” (abreviação de “My First Plugin”). Se você utiliza programação orientada a objetos, encapsular o código em classes também é uma maneira eficaz de evitar conflitos de nomes.
Após a conclusão do desenvolvimento, como distribuir o plugin ou colocá-lo no diretório oficial?
Para enviar um plugin para o diretório oficial de plugins do WordPress.org, você precisa criar um pacote de plugins que atenda aos padrões estabelecidos pelo site. Isso geralmente envolve uma estrutura de arquivos padronizada, que inclui: README.txtVocê precisará de uma conta de desenvolvedor no WordPress.org e, em seguida, usar o ferramenta SVN para enviar o código para o repositório de código especificado. Além disso, é necessário fornecer uma tradução detalhada, declarações de compatibilidade e garantir que o código siga os padrões de codificação do WordPress.
O que vem a seguir, o que vem a seguir?
Leitura ampliada e conhecimento prático
Os seguintes estão relacionados ao tópico deste artigo e são adequados para uma leitura mais aprofundada. Geralmente, é melhor priorizar o artigo que está mais próximo do seu problema atual e, em seguida, expandir gradualmente para os tópicos adjacentes.
- Prefácio: Por que escolher o WordPress para o desenvolvimento?
- Por que escolher o WooCommerce como sua solução de comércio eletrônico?
- O que é um subtema (subtheme) do WordPress?
- Guia Completo do WooCommerce: Construa sua Loja Online e Estratégia de Vendas do Zero
- 10 plugins essenciais para o WordPress que melhoram significativamente o desempenho e a segurança do seu site