Je rencontre des problèmes avec le total du panier affichant uniquement 0
Essentiellement, ce que j'essaie de faire, c'est d'accepter un dépôt total d'un certain montant après que tous les articles du panier ont été ajoutés au sous-total des paniers.
Ainsi, par exemple, si le client ajoute une valeur de 100 $ d'articles, il ne paiera que 10 $ initialement ou (10%) du sous-total comme valeur totale.
J'ai pris le code d'ici: Changer le total et tax_total Woocommerce et le personnaliser de cette façon:
add_action('woocommerce_cart_total', 'calculate_totals', 10, 1);
function calculate_totals($wc_price){
$new_total = ($wc_price*0.10);
return wc_price($new_total);
}
Mais le montant total affiche 0,00 lorsque ce code est activé. Si supprimé le code, j'obtiens le total standard.
Je n'ai pas non plus pu trouver sur le site de woocommerce où l'API complète est répertoriée, uniquement des articles génériques liés à la façon de créer un plugin.
Toute aide ou un point dans la bonne direction serait formidable.
Depuis Woocommerce 3.2+ cela ne fonctionne plus avec la nouvelle classe _
WC_Cart_Totals
_ ...Nouvelle réponse: Modifier le total du panier à l'aide de crochets dans Woocommerce 3.2 +
Le premier _woocommerce_cart_total
_ crochet est un filtre crochet, pas un crochet d'action. Aussi comme _wc_price
_ argument dans _woocommerce_cart_total
_ est le prix formaté , vous ne pourrez pas l'augmenter de 10%. C'est pourquoi il renvoie zéro.
Avant Woocommerce v3.2 cela fonctionne comme certaines _
WC_Cart
_ propriétés peut être accessible directement
Vous devriez mieux utiliser une fonction personnalisée accrochée au _woocommerce_calculate_totals
_ crochet d'action
par ici:
_// Tested and works for WooCommerce versions 2.6.x, 3.0.x and 3.1.x
add_action( 'woocommerce_calculate_totals', 'action_cart_calculate_totals', 10, 1 );
function action_cart_calculate_totals( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( !WC()->cart->is_empty() ):
## Displayed subtotal (+10%)
// $cart_object->subtotal *= 1.1;
## Displayed TOTAL (+10%)
// $cart_object->total *= 1.1;
## Displayed TOTAL CART CONTENT (+10%)
$cart_object->cart_contents_total *= 1.1;
endif;
}
_
Le code va dans le fichier function.php de votre thème enfant (ou thème) actif ou aussi dans n'importe quel fichier de plugin.
Il est également possible d'utiliser WC_cart
add_fee()
méthode dans ce crochet, ou utilisez-la séparément comme dans Cristina réponse.
Cela ne répond pas à cette question. Loic le fait. Voici une autre façon de le faire pour afficher un élément de campagne de 10% de réduction:
function prefix_add_discount_line( $cart ) {
$discount = $cart->subtotal * 0.1;
$cart->add_fee( __( 'Down Payment', 'yourtext-domain' ) , -$discount );
}
add_action( 'woocommerce_cart_calculate_fees', 'prefix_add_discount_line' );