Guia Completo para Desenvolvimento Personalizado de Plugins para o WooCommerce: Criando Funcionalidades Especiais para Lojas Virtuais do Zero

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

O WooCommerce é o plugin de comércio eletrónico mais poderoso do ecossistema do WordPress, e o seu verdadeiro potencial reside na sua alta escalabilidade. Através do desenvolvimento personalizado, os programadores podem ultrapassar as limitações dos plugins e temas existentes, criando funcionalidades de comércio eletrónico únicas para as empresas. Este guia irá ajudá-lo a aprender, passo a passo, como desenvolver plugins do WooCommerce de forma segura e eficiente.

Configuração do ambiente de desenvolvimento e preparações básicas

Antes de escrever a primeira linha de código, um ambiente de desenvolvimento estável e profissional é a base do sucesso. Isso não só aumenta a eficiência, mas também evita muitos erros potenciais.

Configure o ambiente de desenvolvimento local.

Recomenda-se utilizar um ambiente de servidor local, como o Local by Flywheel, o Laragon ou o XAMPP. Estas ferramentas permitem instalar o WordPress e o WooCommerce com um único clique. Certifique-se de que a sua versão do PHP é superior a 7.4 e que o registo de erros está ativado. wp-config.php No arquivo, será… WP_DEBUG Defina como trueDe forma a capturar erros e avisos em tempo real durante o processo de desenvolvimento.

Leitura recomendada Guia prático para o desenvolvimento de plugins do WooCommerce: construir funcionalidades de comércio eletrónico personalizadas do zero.

A estrutura básica para criar um plug-in personalizado.

Nunca adicione o seu código personalizado diretamente ao tema. functions.php No arquivo. Criar um plug-in independente é uma prática mais profissional e mais fácil de manter e migrar. No seu wp-content/plugins No diretório, crie uma nova pasta, por exemplo… my-custom-woocommerceNo referido diretório, crie o ficheiro principal do plug-in. my-custom-woocommerce.php

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

Este cabeçalho do ficheiro necessita de incluir as anotações padrão de informações sobre o plug-in:

<?php
/**
 * Plugin Name: My Custom WooCommerce Functions
 * Plugin URI:  https://yourwebsite.com/
 * Description: 为 WooCommerce 添加自定义功能。
 * Version:     1.0.0
 * Author:      Your Name
 * License:     GPL v2 or later
 * Text Domain: my-custom-wc
 */

Métodos de extensão principais: ganchos de ação e filtros.

A extensibilidade do WooCommerce baseia-se no sistema de hooks do WordPress, que inclui principalmente ações e filtros. Compreender e utilizar estes elementos de forma eficaz é fundamental para o desenvolvimento personalizado.

Usar ganchos de ação para adicionar funcionalidades

Os ganchos de ação permitem que você execute código personalizado em momentos específicos do processo do WooCommerce. Por exemplo, você pode querer executar uma chamada adicional à API externa após o usuário fazer um pedido.

Um gancho comum é woocommerce_thankyouIsso é acionado na página de agradecimento (página de confirmação da encomenda). Pode utilizar isto da seguinte forma:

Leitura recomendada Guia Definitivo de Plugins para o WooCommerce com Explicações Detalhadas do Código: Desde a Instalação até o Desenvolvimento Personalizado

add_action( 'woocommerce_thankyou', 'my_custom_thankyou_action' );
function my_custom_thankyou_action( $order_id ) {
    // 获取订单对象
    $order = wc_get_order( $order_id );
    // 执行你的自定义逻辑,例如记录日志或调用 API
    error_log( "订单 {$order_id} 已完成支付,客户邮箱: " . $order->get_billing_email() );
}

Outro gancho importante é woocommerce_add_to_cartUsado para desencadear uma ação quando um produto é adicionado ao carrinho de compras.

Modificar dados usando filtros

Os filtros de ganchos permitem-lhe modificar os dados transmitidos pelo WooCommerce. Por exemplo, se quiser adicionar automaticamente a expressão “(incluindo IVA)” a todos os preços dos produtos.

Você pode usar woocommerce_get_price_html Filtro:

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%
add_filter( 'woocommerce_get_price_html', 'my_custom_price_suffix', 10, 2 );
function my_custom_price_suffix( $price, $product ) {
    if ( is_admin() ) return $price; // 避免在后台管理界面修改
    return $price . ' <small>(含税)</small>';
}

Parâmetros 10 Indica a prioridade por defeito,2 O método de callback aceita dois parâmetros ($pricee$product)。

Dados e campos de produtos personalizados

É comum adicionar metadados exclusivos aos produtos, como, por exemplo, adicionar o campo “Tabela de Tamanhos” aos produtos de vestuário ou “Período de Garantia” aos produtos eletrónicos.

Adicionar um campo na interface de gestão de back-end.

Você precisa adicionar os campos às guias “Avançado” ou “Normal” da página de edição do produto. Isso geralmente envolve a utilização de vários ganchos em conjunto:woocommerce_product_options_general_product_data Para mostrar os campos,woocommerce_process_product_meta Usado para guardar os valores dos campos.

Leitura recomendada Guia Completo para Otimização do Desempenho de Sites de Comércio Eletrônico com WooCommerce: Desde a Velocidade de Carregamento até a Conversão de Pagamentos

O exemplo a seguir adiciona um campo de texto personalizado de “Período de garantia” a todos os produtos:

// 1. 显示字段
add_action( 'woocommerce_product_options_general_product_data', 'add_custom_warranty_field' );
function add_custom_warranty_field() {
    woocommerce_wp_text_input( array(
        'id'          => '_custom_warranty',
        'label'       => '保修期',
        'description' => '例如:2年全球联保',
        'desc_tip'    => true,
    ) );
}

// 2. 保存字段值
add_action( 'woocommerce_process_product_meta', 'save_custom_warranty_field' );
function save_custom_warranty_field( $post_id ) {
    $warranty = isset( $_POST['_custom_warranty'] ) ? sanitize_text_field( $_POST['_custom_warranty'] ) : '';
    update_post_meta( $post_id, '_custom_warranty', $warranty );
}

Exibir campos personalizados na página de produtos front-end.

Após guardar os dados, precisa de os apresentar aos utilizadores do front-end. Para tal, pode utilizar woocommerce_product_additional_information O gancho irá adicioná-lo à guia “Informações adicionais”, ou usar the_content Os ganchos são mostrados diretamente após a descrição.

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.
add_action( 'woocommerce_product_additional_information', 'display_custom_warranty_frontend' );
function display_custom_warranty_frontend() {
    global $product;
    $warranty = get_post_meta( $product-&gt;get_id(), '_custom_warranty', true );
    if ( $warranty ) {
        echo '<p><strong>Serviço de garantia:</strong>'`. esc_html($warranty)`.'</p>';
    }
}

Criar campos e processos de liquidação personalizados.

Os processos de liquidação personalizados podem melhorar significativamente a experiência do utilizador e a capacidade de recolha de dados.

Adicionar campos de liquidação adicionais

O WooCommerce fornece ganchos especiais para adicionar, validar e salvar campos de pagamento. Por exemplo, para adicionar o campo “Número de identificação fiscal da empresa” para clientes B2B.

// 1. 在结算表单中添加字段
add_filter( 'woocommerce_checkout_fields', 'add_custom_checkout_field' );
function add_custom_checkout_field( $fields ) {
    $fields['billing']['billing_vat'] = array(
        'label'       => '公司税号',
        'placeholder' => '请输入您的增值税税号',
        'required'    => false, // 或 true
        'class'       => array('form-row-wide'),
        'clear'       => true,
    );
    return $fields;
}

// 2. 保存字段值到订单
add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_field' );
function save_custom_checkout_field( $order_id ) {
    if ( ! empty( $_POST['billing_vat'] ) ) {
        update_post_meta( $order_id, '_billing_vat', sanitize_text_field( $_POST['billing_vat'] ) );
    }
}

Exibir os campos guardados na parte frontal e na parte traseira.

Depois de salvar, você precisa exibir este campo na página de detalhes da encomenda e na página de gestão de encomendas. Isso pode ser feito através de woocommerce_order_details_after_customer_details e woocommerce_admin_order_data_after_billing_address Implementação do gancho (hook).

\n// Exibir na página de detalhes do pedido no frontend
add_action( 'woocommerce_order_details_after_customer_details', 'display_vat_on_order_frontend', 10, 1 );
function display_vat_on_order_frontend( $order ) {
    $vat = $order-&gt;get_meta( '_billing_vat' );
    if ( $vat ) {
        echo '<p><strong>Número de identificação fiscal da empresa:</strong>'`. esc_html( $vat )`.'</p>';
    }
}

resumos

O desenvolvimento personalizado de plugins do WooCommerce é um processo que permite atender com precisão às necessidades de negócios através do código. O seu núcleo consiste em seguir os padrões de desenvolvimento de plugins do WordPress, compreender profundamente o sistema de ganchos do WooCommerce (acções e filtros) e organizar o código de forma modular. Desde a criação de um ambiente local profissional até à extensão das funcionalidades principais através de ganchos e à adição de campos personalizados para produtos e processos de checkout, cada passo enfatiza a segurança, a manutenibilidade e a portabilidade do código. Evitar alterar os ficheiros principais e implementar sempre as funcionalidades através de plugins independentes garante que os seus resultados personalizados serão compatíveis de forma segura com futuras atualizações do WooCommerce. Ao dominar estes métodos, conseguirá ultrapassar limitações e criar soluções de comércio electrónico poderosas e únicas.

Perguntas frequentes Perguntas frequentes

Os plugins personalizados do WooCommerce afetam o desempenho do site?

Se o código for escrito corretamente, o impacto costuma ser mínimo. Os problemas de desempenho resultam principalmente de consultas ineficientes ao banco de dados, carregamento de recursos no local errado (como carregar scripts de fundo na frente) ou operações redundantes dentro de ciclos. Certifique-se de que o seu código é otimizado, por exemplo, usando mecanismos de cache, configurando corretamente as consultas ao banco de dados e montando apenas ganchos quando necessário.

Como garantir que o meu código personalizado permaneça compatível após uma atualização do WooCommerce?

Esta é uma das maiores vantagens do desenvolvimento de plugins independentes. A equipa oficial do WooCommerce esforça-se por garantir que os seus hooks públicos (ação e filtro) sejam compatíveis com versões anteriores nas atualizações principais. Deve utilizar sempre os hooks públicos listados na documentação oficial e evitar funções ou classes internas não divulgadas. Antes de atualizar a versão principal do WooCommerce, é essencial testá-la exaustivamente num ambiente de teste.

Eu posso sobrepor os ficheiros de modelo do WooCommerce num plug-in personalizado?

Sim, mas a melhor prática não é modificar diretamente os modelos no plug-in WooCommerce, mas sim copiá-los para o seu tema ou plug-in para os substituir. O WooCommerce segue um sistema de “hierarquia de modelos”. Pode copiar os ficheiros de modelo pretendidos (por exemplo, single-product.phpCopie para a pasta de temas da sua conta. woocommerce Em seguida, faça as alterações no subdiretório. Desta forma, as suas alterações serão geridas de forma mais segura quando o tema for atualizado.

Como depurar problemas no meu plugin WooCommerce personalizado?

Primeiro, certifique-se de que… wp-config.php A funcionalidade foi ativada no chinês. WP_DEBUG e WP_DEBUG_LOG\n, registre todos os erros e avisos. wp-content/debug.log No ficheiro. Em segundo lugar, para problemas relacionados com os ganchos, utilize has_action() ou has_filter() A função verifica se o hook foi registado corretamente. Para problemas no front-end, utilize as ferramentas de desenvolvimento do navegador para verificar erros no console e pedidos de rede.