Entrar
Começar

Documentação do Easy Digital Downloads

Documentação, Materiais de Referência e Tutoriais para Easy Digital Downloads 

Classe EDD\Fees\Handler

A classe EDD\Fees\Handler pode ser usada para adicionar taxas arbitrárias ao carrinho de compras, tanto taxas positivas quanto negativas (desconto). Por exemplo, você pode adicionar uma taxa especial de 10% de desconto automaticamente para todos os usuários registrados que possuem uma determinada função de usuário, ou adicionar uma taxa de “manuseio” para todos os produtos dentro de uma determinada categoria. As opções são ilimitadas.

As taxas são armazenadas como variáveis de sessão, o que significa que, uma vez definidas para um usuário, elas persistirão até que o usuário finalize a compra ou sejam removidas por algum código com base em uma decisão ou configuração.

Tipos de taxas

As taxas podem ter dois tipos:

  • fee: Isso é exatamente o que parece – um custo ou desconto adicional adicionado à compra inteira.
  • item: Esta é uma taxa que não está associada a mais nada. Pense nisso como um produto temporário criado no momento. Depósitos em carteira são um exemplo desse tipo de taxa.

Observação: taxas negativas sempre definem no_tax como true.

add_fee()

Adicionar uma despesa ou dar um desconto são ambos considerados adicionar taxas, apesar do fato de que um deles está removendo dinheiro.

Adicionar uma taxa é feito com código semelhante a este:

function eddwp_set_admin_discount() {
// Check to see the customer is a site admin.
if ( ! current_user_can( 'manage_options' ) ) {
return;
}

// find 20% of the total
$amount = edd_get_cart_subtotal() * 0.20;

// Flip the 20% from a positive number to a negative number
$amount = $amount * -1;

// Add the fee, sending the amount, the reason printed to the front end, and the handle
EDD()->fees->add_fee(
array(
'price_id' => null, // set this to link the fee to a specific price ID.
'amount' => $amount,
'label' => 'You are an admin special!',
'id' => 'admin_special',
'type' => 'fee',
'no_tax' => false,
'download_id' => 0, // set this to link the fee to a specific product.
)
);
}
add_action( 'template_redirect', 'eddwp_set_admin_discount' );

Este exemplo adiciona automaticamente um desconto de 20% se o usuário atual for um administrador.

Aqui está outro exemplo que adiciona uma taxa de manuseio:

function eddwp_add_handling_fee() {
// Add a $10 handling fee no matter what
EDD()->fees->add_fee(
array(
'amount' => 10,
'label' => 'Handling fee',
'id' => 'handling_fee',
'type' => 'fee',
'no_tax' => false,
'download_id' => 0,
)
);
}
add_action( 'template_redirect', 'eddwp_add_handling_fee' );

Aqui está uma captura de tela de ambos os exemplos acima sendo aplicados ao mesmo tempo:

remove_fee()

Para remover uma taxa, basta passar o ID da taxa (terceiro parâmetro acima) para o método remove_fee():

function pw_remove_handling_fee() {
EDD()->fees->remove_fee( 'handling_fee' );
}
add_action( 'template_redirect', 'pw_remove_handling_fee', 9999 );

Outros Métodos

Além de simplesmente adicionar e remover taxas, há uma série de métodos para trabalhar com taxas no back-end.

has_fees( string $type = ‘fee’  )

Este método simplesmente verifica se existem taxas.  O padrão é o tipo de taxa, mas também pode aceitar item.

Exemplo:

if ( EDD()->fees->has_fees() ) {
	echo 'yep, we can haz fees!';
}

Retorna: true ou false.

get_fees( string $type = ‘fee’, integer $download_id = 0  )

Este método obterá um array de todas as taxas existentes.  Ele pode ser limitado por tipo e/ou ID de download.

Exemplo

A extensão Simple Shipping é um exemplo perfeito de como a classe EDD_Fees pode ser usada.

$fees = EDD()->fees->get_fees();

Retorna algo como isto:

Array
(
    [handling_fee] => Array
        (
            [amount]      => 11.00
            [label]       => Handling Fee
            [type]        => fee
            [no_tax]      => 
            [download_id] => 0
            [price_id]    =>
        )

    [admin_special] => Array
        (
            [amount]      => -2
            [label]       => You are an admin special!
            [type]        => fee
            [no_tax]      => 
            [download_id] => 0
            [price_id]    =>
        )

    [tophers_fee] => Array
        (
            [amount]      => 42.00
            [label]       => Topher's fee
            [no_tax]      => 
            [type]        => fee
            [download_id] => 114
            [price_id]    =>
        )

)
get_fee( string $id = ”  )

Este método obterá um array de uma taxa específica, identificada pelo nome que lhe foi dado quando foi criada.  

Exemplo: 

$my_custom_fee = EDD()->fees->get_fee( 'my_custom_fee' );

Retorna algo como isto:

 Array
(
    [amount] => 42.00
    [label] => The Final Fee
    [no_tax] => 
    [type] => fee
    [download_id] => 114
)
type_total( string $type = ‘fee’ )

Este método calcula o total para um tipo específico de taxa.  Os tipos suportados são ‘fee’ e ‘item’.

Exemplo: 

$item_total = EDD()->fees->type_total( 'item' );

Retorna um número como 51.00

total( integer $download_id = 0  )

Este método calcula o total de todas as taxas OU todas as taxas especificamente anexadas a um determinado download.

Observação: Se um produto tiver taxas e preços variáveis, a taxa será aplicada apenas uma vez por transação, NÃO uma vez por item.

Exemplo:

$total = EDD()->fees->total();

$total = EDD()->fees->total( '42' );

No exemplo acima, o primeiro retornaria um número como 51,00 que é a soma de todas as taxas.

O segundo exemplo retornaria um número como 51,00 que é a soma de todas as taxas vinculadas especificamente ao Download com o ID 42.

record_fees( array $payment_meta, array $payment_data )

Este método registra as informações de taxa sobre uma transação específica.  Ele nunca deve ser chamado diretamente.

Este artigo foi útil?

Comece a vender hoje mesmo!

Junte-se a mais de 50.000 proprietários de lojas inteligentes e comece a usar a maneira mais fácil de vender produtos digitais com o WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]