J'essaie de modifier le prix du produit dans le panier en utilisant la fonction suivante:
add_action( 'woocommerce_before_shipping_calculator', 'add_custom_price'
);
function add_custom_price( $cart_object ) {
foreach ( $cart_object->cart_contents as $key => $value ) {
$value['data']->price = 400;
}
}
Il fonctionnait correctement dans WooCommerce version 2.6.x mais ne fonctionnait plus dans la version 3.0+.
Comment puis-je le faire fonctionner dans WooCommerce Version 3.0+?
Merci.
Mise à jour(septembre 2018)
Avec WooCommerce version 3.0+, vous avez besoin des éléments suivants:
woocommerce_before_calculate_totals
hook à la place.get_cart()
method à la placeset_price()
method à la placeVoici le code:
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 20, 1);
function add_custom_price( $cart_obj ) {
// This is necessary for WC 3.0+
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Avoiding hook repetition (when using price calculations for example)
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
// Loop through cart items
foreach ( $cart_obj->get_cart() as $cart_item ) {
$cart_item['data']->set_price( 40 );
}
}
Le code va dans le fichier function.php de votre thème enfant actif (ou thème) ou également dans n'importe quel fichier plugin.
Ce code est testé et fonctionne.
Remarque: vous pouvez augmenter la priorité de raccordement de
20
à1000
(ou même2000
) lors de l'utilisation de quelques plugins spécifiques ou d'autres personnalisations.
En relation: