- סטטוס
- פתוח
- דווח עבור
- 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; }