web-dev-qa-db-fra.com

Modifier les prix des articles du panier dans Woocommerce 3

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.

8
Archana

Mise à jour(septembre 2018)

Avec WooCommerce version 3.0+, vous avez besoin des éléments suivants:

Voici 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ême 2000) lors de l'utilisation de quelques plugins spécifiques ou d'autres personnalisations.

En relation:

27
LoicTheAztec