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

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

No atual ambiente de comércio eletrônico altamente competitivo, uma loja padrão do WooCommerce muitas vezes não consegue atender a todas as necessidades dos negócios. Seja um processo de pagamento personalizado, regras especiais de cálculo de frete ou integração avançada com sistemas terceiros, é necessário expandir as funcionalidades principais da loja. É aí que entra o valor do desenvolvimento de plugins personalizados. Ao escrever seus próprios plugins, você consegue adaptar a loja às exigências específicas do seu negócio. WooCommerce Com os plugins, você pode obter total controle para criar uma experiência de compra única e construir barreiras comerciais difíceis de imitar.

Configuração do ambiente de desenvolvimento de plugins para o WooCommerce

Antes de iniciar qualquer desenvolvimento, é essencial dispor de um ambiente de desenvolvimento local estável e isolado. Isso não só protege seus dados on-line, mas também facilita a depuração e os testes.

Configurar um ambiente local para o WordPress

Recomendamos o uso de ferramentas como Local by Flywheel, XAMPP ou MAMP para montar rapidamente um ambiente local. Certifique-se de que o seu ambiente atende aos requisitos necessários. WooCommerce Requisitos mínimos: PHP 7.2 ou uma versão mais recente, MySQL 5.6 ou uma versão mais recente, bem como a versão mais atual do WordPress. Após a instalação do WordPress, instale e ative os plugins a partir do diretório oficial de plugins. WooCommerce Instalar os plugins e concluir o guia de configuração inicial será de grande ajuda para o desenvolvimento. Importar dados de exemplo também será muito útil.

Leitura recomendada Guia Completo para o Desenvolvimento e Otimização de Desempenho de Sites de Comércio Eletrônico com WooCommerce

Criar a estrutura básica de um plugin

e WooCommerce O plugin é, antes de tudo, um plugin padrão para o WordPress. wp-content/plugins/ Crie uma nova pasta no diretório, por exemplo… my-custom-woocommerceNesse folder, crie o arquivo principal do plugin, que geralmente recebe o nome do próprio plugin, por exemplo: 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 arquivo principal precisa conter as informações padrão dos cabeçalhos dos plugins do WordPress. Aqui está um exemplo básico:

<?php
/**
 * Plugin Name: My Custom WooCommerce
 * Plugin URI:  https://yourwebsite.com/
 * Description: 为 WooCommerce 商店添加自定义功能。
 * Version:     1.0.0
 * Author:      您的名字
 * Author URI:  https://yourwebsite.com/
 * License:     GPL v2 or later
 * Text Domain: my-custom-woocommerce
 * Domain Path: /languages
 * WC requires at least: 5.0.0
 * WC tested up to: 8.0.0
 */

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

// 检查 WooCommerce 是否已激活
if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) {
    add_action( 'admin_notices', function() {
        ?>
        <div class="notice notice-error">
            <p>“O plugin ”My Custom WooCommerce” requer que o WooCommerce esteja instalado e ativado.</p>
        </div>
        &lt;?php
    } );
    return;
}

O ponto-chave é que foi utilizada… WC requires at least e WC tested up to As informações de cabeçalho são usadas para declarar e especificar os detalhes relacionados ao conteúdo da mensagem. WooCommerce A compatibilidade e as verificações no código. WooCommerce Já está ativado?

Método de expansão central: Ganchos para ações e filtros

WooCommerce A grande vantagem desse sistema reside em seu sistema de ganchos (hooks) altamente extensível. Compreender e utilizar com habilidade os ganchos de ações (Actions) e os ganchos de filtros (Filters) é fundamental para o desenvolvimento personalizado.

Intervir no processo utilizando ganchos de ação (action hooks).

Os ganchos de ação (action hooks) permitem que você… WooCommerce Insira o seu próprio código em um momento específico da execução. Por exemplo, você pode querer realizar uma ação personalizada (como chamar um API externo) após o usuário fazer um pedido.

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

Você pode usar o woocommerce_thankyou O “gancho” (hook) é acionado na página de agradecimento pelo pedido. Ou então, você pode usar um método mais geral… woocommerce_checkout_order_processedEle é acionado quando o processamento do pedido é concluído.

add_action( 'woocommerce_checkout_order_processed', 'my_custom_order_action', 10, 3 );

function my_custom_order_action( $order_id, $posted_data, $order ) {
    // 获取订单对象(如果未提供)
    if ( ! $order instanceof WC_Order ) {
        $order = wc_get_order( $order_id );
    }

// 执行您的自定义逻辑,例如记录日志或发送请求
    $logger = wc_get_logger();
    $logger->info( '订单 #' . $order_id . ' 已创建,开始执行自定义任务。', array( 'source' => 'my-custom-plugin' ) );

// 调用外部 API 示例(伪代码)
    // $response = wp_remote_post( 'https://api.example.com/notify', $args );
}

Usar ganchos de filtro para modificar dados

Os ganchos (hooks) dos filtros permitem que você faça modificações neles. WooCommerce Os dados transmitidos. Por exemplo, você deseja adicionar uma taxa de serviço fixa a todos os preços dos produtos.

Você pode usar o woocommerce_product_get_price Filtros. Este gancho é muito poderoso, mas deve ser usado com cuidado, pois afeta a exibição de todos os preços.

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_product_get_price', 'my_custom_price_adjustment', 10, 2 );

function my_custom_price_adjustment( $price, $product ) {
    // 只在前端购物车和商品页面应用,避免影响后台
    if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
        return $price;
    }

// 假设增加 5 元手续费
    $fee = 5;
    $new_price = $price + $fee;

return $new_price;
}

Tipos de produtos personalizados e armazenamento de dados

WooCommerce O sistema suporta, por padrão, produtos simples e produtos variáveis. No entanto, às vezes é necessário criar novos tipos de produtos, como “produtos para reserva” ou “produtos de serviço”.

Registar um novo tipo de produto

Criar um novo tipo de produto envolve vários passos. Primeiramente, você precisa registrar esse tipo. Isso geralmente é feito através de um processo formal no sistema administrativo do site ou aplicação responsável pela gestão dos produtos. init A ação ou o plugin é concluído durante o seu carregamento.

add_action( 'init', 'register_my_custom_product_type' );

function register_my_custom_product_type() {
    class WC_Product_Custom extends WC_Product {
        public function __construct( $product ) {
            parent::__construct( $product );
            $this->product_type = 'custom';
        }

// 您可以在这里重写父类方法,或添加新方法
        public function get_type() {
            return 'custom';
        }

// 示例:自定义“添加到购物车”按钮文本
        public function add_to_cart_text() {
            return __( '预约服务', 'my-custom-woocommerce' );
        }
    }
}

Em seguida, você precisa adicionar esse tipo à lista de seleção de tipos de produtos usando um filtro.

Leitura recomendada Construa facilmente uma página de produto personalizada no WooCommerce: do iniciante ao especialista.

add_filter( 'product_type_selector', 'add_custom_product_type_to_dropdown' );

function add_custom_product_type_to_dropdown( $types ) {
    $types['custom'] = __( '自定义服务', 'my-custom-woocommerce' );
    return $types;
}

Adicionar campos personalizados aos produtos

Para novos tipos de produtos, geralmente são necessários campos de dados adicionais. Isso pode ser realizado através de… WooCommerce Os dados dos produtos são exibidos através de um quadro de dados (Metabox). woocommerce_product_options_general_product_data Adicione campos à ação e use-os. woocommerce_process_product_meta Salve essas ações.

add_action( 'woocommerce_product_options_general_product_data', 'add_custom_product_fields' );

function add_custom_product_fields() {
    global $product_object;

echo '<div class="options_group show_if_custom">'; // `show_if_custom` 仅对“custom”类型显示

woocommerce_wp_text_input( array(
        'id'          =&gt; '_service_duration',
        'label'       =&gt; __( '服务时长 (小时)', 'my-custom-woocommerce' ),
        'desc_tip'    =&gt; true,
        'description' =&gt; __( '请输入完成此服务预计需要的小时数。', 'my-custom-woocommerce' ),
        'type'        =&gt; 'number',
        'custom_attributes' =&gt; array(
            'step' =&gt; '0.5',
            'min'  =&gt; '0.5'
        )
    ) );

echo '</div>';
}

// 保存字段
add_action( 'woocommerce_process_product_meta', 'save_custom_product_fields' );

function save_custom_product_fields( $post_id ) {
    $product = wc_get_product( $post_id );
    if ( $product-&gt;get_type() === 'custom' ) {
        $duration = isset( $_POST['_service_duration'] ) ? sanitize_text_field( $_POST['_service_duration'] ) : '';
        $product-&gt;update_meta_data( '_service_duration', $duration );
        $product-&gt;save_meta_data();
    }
}

Interagir com o carrinho de compras e o processo de pagamento

O carrinho de compras e o processo de pagamento são os elementos centrais do comércio eletrônico.WooCommerce São fornecidos muitos “ganchos” (hooks) aqui para personalizaçã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.

Modificar o comportamento dos itens no carrinho de compras

Você pode fazer isso através de… woocommerce_add_cart_item_data Os filtros adicionam dados personalizados quando os produtos são adicionados ao carrinho de compras. Por exemplo, é possível adicionar uma data de reserva para um produto de “serviço personalizado”.

add_filter( 'woocommerce_add_cart_item_data', 'add_custom_data_to_cart_item', 10, 3 );

function add_custom_data_to_cart_item( $cart_item_data, $product_id, $variation_id ) {
    $product = wc_get_product( $product_id );
    if ( $product->get_type() === 'custom' && isset( $_POST['appointment_date'] ) ) {
        $cart_item_data['appointment_date'] = sanitize_text_field( $_POST['appointment_date'] );
        // 确保每个有不同预约日期的商品都被视为独立项目
        $cart_item_data['unique_key'] = md5( microtime() . rand() );
    }
    return $cart_item_data;
}

Em seguida, você pode usar… woocommerce_get_item_data Os filtros exibem esses dados personalizados na carrinho de compras e na página de pagamento.

Campos de pagamento personalizados

Adicionar ou modificar campos de pagamento é algo muito comum. Utilize-os conforme necessário. woocommerce_checkout_fields Os filtros podem ser implementados com facilidade.

add_filter( 'woocommerce_checkout_fields', 'add_custom_checkout_field' );

function add_custom_checkout_field( $fields ) {
    $fields['billing']['billing_custom_vat'] = array(
        'label'       => __( '增值税号', 'my-custom-woocommerce' ),
        'placeholder' => _x( '请输入您的公司税号', 'placeholder', 'my-custom-woocommerce' ),
        'required'    => false, // 根据业务需求调整
        'class'       => array( 'form-row-wide' ),
        'clear'       => true,
        'priority'    => 35, // 控制字段顺序
    );
    return $fields;
}

Para salvar o valor desse campo no pedido, é necessário utilizar… woocommerce_checkout_update_order_meta Ação.

add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_field' );

function save_custom_checkout_field( $order_id ) {
    if ( ! empty( $_POST['billing_custom_vat'] ) ) {
        update_post_meta( $order_id, '_billing_custom_vat', sanitize_text_field( $_POST['billing_custom_vat'] ) );
    }
}

resumos

WooCommerce O desenvolvimento personalizado de plugins é um processo sistemático que começa com a compreensão de sua arquitetura. Desde a criação de um ambiente de desenvolvimento adequado e de uma estrutura de plugin que atenda aos padrões, até a aprofundação no sistema de ganchos (ações e filtros) para intervir ou modificar os processos centrais, cada passo é fundamental para construir funcionalidades únicas. Ao criar tipos de produtos e campos metadados personalizados, você pode expandir o modelo de dados para atender a necessidades comerciais complexas. Por fim, adicionar interações e dados de forma inteligente nos processos de carrinho de compras e pagamento pode melhorar significativamente a experiência do usuário e a eficiência operacional. Sempre siga as melhores práticas, como realizar testes abrangentes, garantir a segurança do código, manter documentação de qualidade e prestar atenção… WooCommerce Além das atualizações do próprio WordPress, é essencial garantir que os plugins que você desenvolve sejam estáveis, eficientes e tenham uma longevidade duradoura.

Perguntas frequentes Perguntas frequentes

Quais são os conhecimentos prévios necessários para desenvolver um plugin para o WooCommerce?

Desenvolver plugins para o WooCommerce exige uma base sólida em programação PHP, além de um conhecimento profundo dos conceitos de programação orientada a objetos (OOP – Object-Oriented Programming). É essencial também ter uma compreensão aprofundada dos mecanismos centrais do WordPress, incluindo o sistema de ganchos (actions e filters), tipos de artigos personalizados, metadados, bem como a estrutura padrão de plugins e temas. Conhecer os fundamentos de HTML, CSS e JavaScript é muito útil para a interação do lado do usuário (front-end).

Como depurar problemas no meu plugin WooCommerce personalizado?

Primeiro, certifique-se de que… wp-config.php O arquivo foi ativado (ou “ativado” em termos de funcionalidades). WP_DEBUG e WP_DEBUG_LOGRegistre os erros num ficheiro de log. Em segundo lugar, aproveite ao máximo… WooCommerce O sistema de log integrado, através de… wc_get_logger() As funções registram informações em pontos-chave do processo. Para problemas relacionados ao lado front-end, utilize as ferramentas de desenvolvimento do navegador (console e painel de rede) para realizar a verificação. Além disso, você pode desativar temporariamente outros plugins e mudar para o tema padrão para eliminar possíveis conflitos.

Eu modifiquei o filtro de preços, mas por que os preços dos produtos na lista do backend também mudaram?

Este é um problema comum. Muitos filtros relacionados aos preços afetam tanto a parte frontal (front-end) quanto a parte posterior do sistema (back-end). Para evitar isso, é necessário usar condições de avaliação dentro das funções dos filtros a fim de limitar o seu alcance de ação. Geralmente, isso é feito… is_admin() && ! defined( 'DOING_AJAX' ) Verifique se o usuário está atualmente na interface de gerenciamento do backend e se nenhum pedido AJAX está em execução (uma vez que operações como a atualização do carrinho de compras são realizadas através de AJAX, o que requer o cálculo dos preços). Nos exemplos anteriores, já demonstramos como lidar com essa situação.

O que fazer se os tipos de produtos personalizados forem exibidos como “Produtos Simples” nos pedidos?

Isso acontece porque… WooCommerce Ao armazenar um snapshot do produto no pedido, pode ser que o seu tipo personalizado não seja reconhecido corretamente por padrão. Você precisa garantir que as informações sobre o tipo do produto sejam transmitidas corretamente ao adicionar o produto ao carrinho de compras. Verifique isso. WC_Product_Custom A classe herdou corretamente os atributos/métodos da classe pai? WC_Product E também foi configurado. $this->product_typeAlém disso, quando os produtos são retirados do pedido…WooCommerce Pode ser que seja instanciado um objeto básico. WC_Product Objeto. Para garantir a instânciação correta, você pode precisar usar… woocommerce_order_get_items Use filtros para mapear seus tipos personalizados.

Como garantir que meu plugin personalizado seja compatível com futuras atualizações do WooCommerce?

A chave para manter a compatibilidade é manter-se em sincronia com as práticas de desenvolvimento oficiais. Use sempre… WooCommerce APIs e hooks públicos devem ser utilizados; evite modificar diretamente os arquivos principais ou usar classes e métodos não disponíveis publicamente. As informações de compatibilidade devem ser declaradas de forma clara no cabeçalho do plugin. WooCommerce Versão (Version)WC tested up toPeriodicamente… WooCommerce Os testes devem ser realizados na versão de teste ou na versão mais recente do produto. Fique atento a essas informações. WooCommerce No blog oficial de desenvolvimento e no registro de atualizações, você pode saber sobre as funcionalidades que serão descontinuadas e os novos APIs.