Accedi
Inizia

Documentazione di Easy Digital Downloads

Documentazione, Materiali di Riferimento e Tutorial per Easy Digital Downloads 

Classe Handler EDD\Fees

La classe EDD\Fees\Handler può essere utilizzata per aggiungere commissioni arbitrarie al carrello, sia positive che negative (sconto). Ad esempio, potresti aggiungere una commissione speciale di sconto del 10% automaticamente per tutti gli utenti registrati che hanno un certo ruolo utente, o aggiungere una commissione di “gestione” per tutti i prodotti all'interno di una certa categoria. Le opzioni sono illimitate.

Le commissioni vengono memorizzate come variabili di sessione, il che significa che una volta impostate per un utente, persisteranno finché l'utente non effettuerà il checkout o non verranno rimosse da qualche codice basato su una decisione o impostazione.

Tipi di commissioni

Le commissioni possono avere due tipi:

  • fee: Questo è esattamente ciò che sembra: un costo o uno sconto aggiuntivo aggiunto all'intero acquisto.
  • item: Questa è una commissione non associata a nient'altro. Pensala come un prodotto temporaneo creato al momento. I depositi del portafoglio sono un esempio di questo tipo di commissione.

Nota: le commissioni negative impostano sempre no_tax su true.

add_fee()

Aggiungere una spesa o dare uno sconto sono entrambi considerati l'aggiunta di commissioni, nonostante il fatto che uno di essi stia rimuovendo denaro.

L'aggiunta di una commissione viene effettuata con codice simile a questo:

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' );

Questo esempio aggiunge automaticamente uno sconto del 20% se l'utente corrente è un amministratore.

Ecco un altro esempio che aggiunge una commissione di gestione:

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' );

Ecco uno screenshot di entrambi gli esempi precedenti applicati contemporaneamente:

remove_fee()

Per rimuovere una commissione, è sufficiente passare l'ID della commissione (terzo parametro sopra) al metodo remove_fee():

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

Altri Metodi

Oltre ad aggiungere e rimuovere semplicemente le commissioni, ci sono una serie di metodi per lavorare con le commissioni nel backend.

has_fees( string $type = ‘fee’  )

Questo metodo controlla semplicemente se esistono commissioni.  Per impostazione predefinita utilizza il tipo di commissione, ma può accettare anche item.

Esempio:

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

Restituisce: true o false.

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

Questo metodo restituirà un array di tutte le commissioni esistenti.  Può essere limitato per tipo e/o ID download.

Esempio

La  estensione Simple Shipping è un esempio perfetto di come può essere utilizzata la classe EDD_Fees.

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

Restituisce qualcosa di simile a questo:

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 = ”  )

Questo metodo restituirà un array di una commissione specifica, identificata dal nome che le è stato dato al momento della creazione.  

Esempio: 

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

Restituisce qualcosa di simile a questo:

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

Questo metodo calcola il totale per un tipo specifico di commissione.  I tipi supportati sono ‘fee’ e ‘item’.

Esempio: 

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

Restituisce un numero come 51.00

totale( integer $download_id = 0  )

Questo metodo calcola il totale per tutte le commissioni O tutte le commissioni specificamente collegate a un dato download.

Nota: Se un prodotto ha commissioni e prezzi variabili, la commissione verrà applicata solo una volta per transazione, NON una volta per articolo.

Esempio:

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

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

Nell'esempio sopra, il primo restituirebbe un numero come 51,00 che è la somma di tutte le commissioni.

Il secondo esempio restituirebbe un numero come 51,00 che è la somma di tutte le commissioni legate specificamente al Download con ID 42.

record_fees( array $payment_meta, array $payment_data )

Questo metodo registra le informazioni sulle commissioni relative a una specifica transazione. Non dovrebbe mai essere chiamato direttamente.

Questo articolo è stato utile?

Inizia a vendere oggi!

Unisciti a oltre 50.000 proprietari di negozi intelligenti e inizia a usare il modo più semplice per vendere prodotti digitali con WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]