WPML
Statut
Résolu
Résolu dans
4.12.0
Extension/thème associé
WooCommerce Dynamic Pricing

Aperçu de l’anomalie

Lors de l’utilisation de la fonctionnalité Advanced Category Pricing de l’extension WooCommerce Dynamic Pricing, les réductions ne sont pas appliquées aux produits variables (uniquement aux produits simples).

Solution de contournement

Nous avons déjà un correctif permanent pour ce problème qui est en attente de tests complets et d’une version publiée. En attendant, vous pouvez utiliser la solution de contournement suivante pour corriger le problème sur votre site :


  1. Effectuez une sauvegarde complète de votre site avant de continuer.

  2. Ouvrez wp-content/plugins/woocommerce-multilingual/compatibility/class-wcml-dynamic-pricing.php et cherchez la ligne 118.

  3. Remplacez ceci :
    	public function woocommerce_dynamic_pricing_is_applied_to( $process_discounts, WC_Product $_product, $module_id, $dynamic_pricing, $cat_ids ) {
    		if ( ! $_product || ! $cat_ids || ! $this->has_requirements( $dynamic_pricing ) ) {
    			return $process_discounts;
    		}
    
    		$taxonomy   = $this->get_taxonomy( $dynamic_pricing );
    		$product_id = apply_filters( 'wpml_object_id', $_product->get_id(), 'product', true );
    
    		return is_object_in_term( $product_id, $taxonomy, $this->adjust_cat_ids( $cat_ids, $taxonomy ) );
    	}

    Par

    	public function woocommerce_dynamic_pricing_is_applied_to( $process_discounts, WC_Product $_product, $module_id, $dynamic_pricing, $cat_ids ) {
    		if ( ! $_product || ! $cat_ids || ! $this->has_requirements( $dynamic_pricing ) ) {
    			return $process_discounts;
    		}
    
    		$taxonomy   = $this->get_taxonomy( $dynamic_pricing );
    		$product_id = apply_filters( 'wpml_object_id', $_product->get_id(), 'product', true );
                    //fix for variable products
                    if  ($_product->post_type === "product_variation") {
    			$product_id = wc_get_product( $_product->get_parent_id() )->get_id();
    			$product_id = apply_filters( 'wpml_object_id', $product_id, 'product', true );
    			return is_object_in_term( $product_id, $taxonomy, $this->adjust_cat_ids( $cat_ids, $taxonomy ) );
    		}
    
    		return is_object_in_term( $product_id, $taxonomy, $this->adjust_cat_ids( $cat_ids, $taxonomy ) );
    	}

Toutes les anomalies connues →