WPML
סטטוס
פתוח
דווח עבור
WPML Multilingual & Multicurrency for WooCommerce 5.3.2
תוסף/ערכת עיצוב קשורים
WooCommerce Subscriptions
תגיות נושא
Compatibility, WCML

סקירה כללית של התקלה

ב־WooCommerce Subscriptions, בעת עדכון מנוי (בין אם מדובר בשדרוג, שנמוך או שדרוג רוחבי), המחיר אינו מסונן כראוי. הדבר גורם לתמחור שגוי במהלך שינוי תוכניות מנוי.

פתרון עוקף

אנא ודא שיש לך גיבוי מלא של האתר לפני שתמשיך.


  • פתח את הקובץ …/wp-content/plugins/woocommerce-multilingual/compatibility/WcSubscriptions/MulticurrencyHooks.php.

  • חפש את שורה 253.

  • שנה את:
    	public function woocommerce_subscription_price_from( $price, $product ) {
    		if ( $product instanceof WC_Product_Subscription_Variation ) {
    			$customPricesOn = get_post_meta( $product->get_id(), '_wcml_custom_prices_status', true );
    
    			if ( $customPricesOn ) {
    				$price = get_post_meta( $product->get_id(), '_price_' . $this->woocommerce_wpml->multi_currency->get_client_currency(), true );
    			} else {
    				$price = apply_filters( 'wcml_raw_price_amount', $price );
    			}
    		}
    
    		return $price;
    	}

  • לכך:
    	public function woocommerce_subscription_price_from( $price, $product ) {
    		if ( $product instanceof WC_Product_Subscription_Variation || $product instanceof \WC_Product_Subscription) {
    			$customPricesOn = get_post_meta( $product->get_id(), '_wcml_custom_prices_status', true );
    
    			if ( $customPricesOn ) {
    				$price = get_post_meta( $product->get_id(), '_price_' . $this->woocommerce_wpml->multi_currency->get_client_currency(), true );
    			} else {
                    $id = $product->get_id();
                    $type = get_post_type($id);
    				$trid = apply_filters( 'wpml_element_trid', NULL, $id,  'post_'.$type );
    				$translations = apply_filters( 'wpml_get_element_translations', NULL, $trid , 'post_'.$type );
                    foreach ($translations as $translation){
                        if ($translation->original == 1){
                            if ( get_post_meta( $translation->element_id, '_wcml_custom_prices_status', true ) ) {
    	                        $price = get_post_meta( $translation->element_id, '_price_' . $this->woocommerce_wpml->multi_currency->get_client_currency(), true );
                            } else {
    	                        $price = apply_filters( 'wcml_raw_price_amount', $price );
                            }
                        }
                    }
                }
    		}
    
    		return (int)$price;
    	}

כל התקלות הידועות →