Inloggen
Aan de slag

Easy Digital Downloads Documentatie

Documentatie, Referentiemateriaal en Tutorials voor Easy Digital Downloads 

EDD\Fees\Handler Klasse

De  EDD\Fees\Handler klasse kan worden gebruikt om willekeurige kosten aan de winkelwagen toe te voegen, zowel positieve als negatieve (kortings)kosten. U kunt bijvoorbeeld automatisch een speciale korting van 10% toevoegen voor alle geregistreerde gebruikers met een bepaalde gebruikersrol, of een "afhandelings"kost toevoegen voor alle producten binnen een bepaalde categorie. De mogelijkheden zijn onbeperkt.

Kosten worden opgeslagen als sessievariabelen, wat betekent dat zodra ze voor een gebruiker zijn ingesteld, ze blijven bestaan totdat de gebruiker afrekent of ze worden verwijderd door code op basis van een beslissing of instelling.

Soorten kosten

Kosten kunnen twee soorten hebben:

  • fee: Dit is precies wat het klinkt – een extra kosten of korting toegevoegd aan de gehele aankoop.
  • item: Dit is een kost die niet aan iets anders is gekoppeld. Beschouw het als een tijdelijk product dat ter plekke is gemaakt. Portemonnee-stortingen zijn een voorbeeld van dit soort kosten.

Opmerking: negatieve kosten stellen altijd no_tax in op true.

add_fee()

Het toevoegen van een uitgave of het geven van een korting worden beide beschouwd als het toevoegen van kosten, ondanks het feit dat een van beide geld weghaalt.

Het toevoegen van een kost gebeurt met code die hierop lijkt:

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

Dit voorbeeld voegt automatisch een korting van 20% toe als de huidige gebruiker een beheerder is.

Hier is nog een voorbeeld dat een afhandelingskost toevoegt:

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

Hier is een screenshot van beide bovenstaande voorbeelden die tegelijkertijd worden toegepast:

remove_fee()

Om een kost te verwijderen, geeft u simpelweg de kost-ID (derde parameter hierboven) door aan de remove_fee() methode:

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

Andere Methoden

Naast het simpelweg toevoegen en verwijderen van kosten, zijn er een aantal methoden voor het werken met kosten op de achtergrond.

has_fees( string $type = ‘fee’  )

Deze methode controleert simpelweg of er kosten bestaan.  Standaard is dit van het type fee, maar het kan ook item accepteren.

Voorbeeld:

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

Geeft terug: true of false.

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

Deze methode haalt een array op van alle bestaande kosten.  Het kan worden beperkt op type en/of download-ID.

Voorbeeld

De  Simple Shipping extensie is een perfect voorbeeld van hoe de EDD_Fees klasse kan worden gebruikt.

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

Geeft iets als dit terug:

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

Deze methode haalt een array op van een specifieke kost, geïdentificeerd door de naam die eraan is gegeven toen deze werd aangemaakt.  

Voorbeeld: 

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

Geeft iets als dit terug:

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

Deze methode berekent het totaal voor een specifiek type kost.  De ondersteunde typen zijn ‘fee’ en ‘item’.

Voorbeeld: 

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

Geeft een getal terug zoals 51,00

totaal( integer $download_id = 0  )

Deze methode berekent het totaal van alle kosten OF alle kosten die specifiek zijn gekoppeld aan een bepaalde download.

Opmerking: Als een product kosten en variabele prijzen heeft, wordt de kost slechts één keer per transactie toegepast, NIET één keer per item.

Voorbeeld:

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

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

In het bovenstaande voorbeeld zou de eerste een getal teruggeven zoals 51,00, wat de som is van alle kosten.

Het tweede voorbeeld zou een getal teruggeven zoals 51,00, wat de som is van alle kosten die specifiek zijn gekoppeld aan de download met ID 42.

record_fees( array $payment_meta, array $payment_data )

Deze methode registreert de kosteninformatie van een specifieke transactie.  Deze mag nooit rechtstreeks worden aangeroepen.

Was dit artikel nuttig?

Begin vandaag nog met verkopen!

Sluit u aan bij meer dan 50.000 slimme winkel eigenaren, en begin met de eenvoudigste manier om digitale producten te verkopen met WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]