Maison >développement back-end >tutoriel php >Comment modifier par programme les prix des produits dans un panier WooCommerce ?

Comment modifier par programme les prix des produits dans un panier WooCommerce ?

DDD
DDDoriginal
2024-11-29 15:42:14362parcourir

How to Programmatically Change Product Prices in a WooCommerce Cart?

Modifier les prix des produits dans le panier pour WooCommerce 3

Pour modifier les prix des produits dans le panier, vous pouvez utiliser le code suivant :

// Set custom cart item price
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 1000, 1);

// Handle mini cart custom item price (Optional)
if ( ! is_admin() || defined( 'DOING_AJAX' ) ) :
    add_filter( 'woocommerce_cart_item_price', 'filter_cart_item_price', 10, 3 );
endif;

// Respective Functions
function add_custom_price( $cart ) {
   // Required for WC 3.0+
   if ( is_admin() && ! defined( 'DOING_AJAX' ) )
       return;

   // Avoid hook repetition
   if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
       return;

   // Loop through cart items
   foreach ( $cart->get_cart() as $cart_item ) {
       $cart_item['data']->set_price( 40 );
   }
}

function filter_cart_item_price( $price_html, $cart_item, $cart_item_key ) {
   if ( isset( $cart_item['custom_price'] ) ) {
       $args = array( 'price' => 40 );

       if ( WC()->cart->display_prices_including_tax() ) {
           $product_price = wc_get_price_including_tax( $cart_item['data'], $args );
       } else {
           $product_price = wc_get_price_excluding_tax( $cart_item['data'], $args );
       }
       return wc_price( $product_price );
   }
   return $price_html;
}

Remarques :

  • Utilisez le Hook woocommerce_before_calculate_totals au lieu de woocommerce_before_shipping_calculator.
  • Utilisez la méthode WC_Cart::get_cart() pour obtenir les articles du panier.
  • Utilisez la méthode WC_Product::set_price() pour définir le prix de chaque article du panier. .

Supplémentaire Informations :

  • La fonction add_custom_price() doit être placée dans le fichier function.php de votre thème WordPress.
  • Pour la rendre compatible avec WooCommerce 5.1.x et versions ultérieures , augmentez la priorité du hook dans la fonction add_custom_price() à 1000 voire 2000 si nécessaire.
  • Si vous utilisez des plugins ou les personnalisations qui peuvent entrer en conflit avec les calculs de prix augmentent également la priorité du crochet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn