WPML
Stato
Risolto
Risolto in
4.12.0
Plugin/tema correlato
WooCommerce Dynamic Pricing

Panoramica del problema

Quando utilizzi la funzionalità Advanced Category Pricing del plugin WooCommerce Dynamic Pricing, gli sconti non vengono applicati ai prodotti variabili (solo ai prodotti semplici).

Soluzione alternativa

Abbiamo già una correzione permanente per il problema, in attesa di test completi e della versione. Nel frattempo, puoi usare la seguente soluzione alternativa per risolvere il problema sul tuo sito:


  1. Fai un backup completo del tuo sito prima di procedere.

  2. Apri wp-content/plugins/woocommerce-multilingual/compatibility/class-wcml-dynamic-pricing.php e trova la riga 118.

  3. Sostituisci questo:
    	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 ) );
    	}

    Con

    	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 ) );
    	}

Tutti i problemi noti →