Connexion
Commencer

Documentation Easy Digital Downloads

Documentation, matériel de référence et tutoriels pour Easy Digital Downloads 

Classe EDD\Fees\Handler

La classe EDD\Fees\Handler peut être utilisée pour ajouter des frais arbitraires au panier, qu'ils soient positifs ou négatifs (remise). Par exemple, vous pourriez ajouter automatiquement des frais spéciaux de 10 % de réduction pour tous les utilisateurs enregistrés ayant un certain rôle, ou ajouter des frais de « manutention » pour tous les produits d'une certaine catégorie. Les options sont illimitées.

Les frais sont stockés sous forme de variables de session, ce qui signifie qu'une fois qu'ils sont définis pour un utilisateur, ils persistent jusqu'à ce que l'utilisateur finalise sa commande ou qu'ils soient supprimés par du code basé sur une décision ou un paramètre.

Types de frais

Les frais peuvent avoir deux types :

  • fee : C'est exactement ce que son nom indique – un coût supplémentaire ou une remise ajoutée à l'ensemble de l'achat.
  • item : Il s'agit de frais qui ne sont associés à rien d'autre. Pensez-y comme à un produit temporaire créé sur le moment. Les dépôts de portefeuille sont un exemple de ce type de frais.

Note : les frais négatifs définissent toujours no_tax à true.

add_fee()

L'ajout d'une dépense ou l'octroi d'une remise sont tous deux considérés comme l'ajout de frais, malgré le fait que l'un d'eux retire de l'argent.

L'ajout d'un frais se fait avec un code similaire à celui-ci :

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

Cet exemple ajoute automatiquement une remise de 20 % si l'utilisateur actuel est un administrateur.

Voici un autre exemple qui ajoute des frais de manutention :

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

Here’s a screenshot of both of the above examples being applied at the same time:

remove_fee()

Pour supprimer un frais, passez simplement l'ID du frais (troisième paramètre ci-dessus) à la méthode remove_fee() :

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

Autres méthodes

En plus d'ajouter et de supprimer simplement des frais, il existe un certain nombre de méthodes pour travailler avec les frais en arrière-plan.

has_fees( string $type = ‘fee’  )

Cette méthode vérifie simplement s'il existe des frais.  Par défaut, elle utilise le type de frais, mais peut également accepter le type « item ».

Exemple :

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

Retourne : true ou false.

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

Cette méthode renvoie un tableau de tous les frais existants.  Elle peut être limitée par type et/ou par ID de téléchargement.

Exemple

L'extension Simple Shipping est un exemple parfait de la façon dont la classe EDD_Fees peut être utilisée.

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

Retourne quelque chose comme ceci :

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

Cette méthode renvoie un tableau d'un frais spécifique, identifié par le nom qui lui a été donné lors de sa création.  

Exemple: 

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

Retourne quelque chose comme ceci :

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

Cette méthode calcule le total pour un type de frais spécifique.  Les types pris en charge sont « fee » et « item ».

Exemple: 

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

Retourne un nombre comme 51.00

total( integer $download_id = 0  )

Cette méthode calcule le total de tous les frais OU de tous les frais spécifiquement attachés à un téléchargement donné.

Note : Si un produit a des frais et des prix variables, les frais ne seront appliqués qu'une seule fois par transaction, PAS une fois par article.

Exemple :

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

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

Dans l'exemple ci-dessus, le premier renverrait un nombre comme 51,00 qui est la somme de tous les frais.

Le deuxième exemple renverrait un nombre comme 51,00 qui est la somme de tous les frais liés spécifiquement au téléchargement avec l'ID 42.

record_fees( array $payment_meta, array $payment_data )

Cette méthode enregistre les informations sur les frais d'une transaction spécifique. Elle ne devrait jamais être appelée directement.

Was this article helpful?

Commencez à vendre dès aujourd'hui !

Rejoignez plus de 50 000 propriétaires de boutiques avisés et commencez à utiliser le moyen le plus simple de vendre des produits numériques avec WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]