PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / classes / OrderItems / Shipping / ShippingMethod.php
woocommerce-multilingual / classes / OrderItems / Shipping Last commit date
Factory.php 1 week ago ShippingMethod.php 1 week ago StoreInDefaultLanguage.php 1 week ago
ShippingMethod.php
88 lines
1 <?php
2
3 namespace WCML\OrderItems\Shipping;
4
5 use WCML\OrderItems\Translator;
6 use woocommerce_wpml;
7 use wpdb;
8 class ShippingMethod implements Translator {
9
10 use StoreInDefaultLanguage;
11
12 private $woocommerce_wpml;
13
14 private $wpdb;
15
16 public function __construct( woocommerce_wpml $woocommerce_wpml, wpdb $wpdb ) {
17 $this->woocommerce_wpml = $woocommerce_wpml;
18 $this->wpdb = $wpdb;
19 }
20
21 public function translateItem( $item, $targetLanguage ) {
22 if ( ! $item instanceof \WC_Order_Item_Shipping ) {
23 return;
24 }
25
26 $shippingId = $item->get_method_id();
27 if ( ! $shippingId ) {
28 return;
29 }
30
31 $shippingTitle = $item->get_method_title();
32 $shippingInstanceId = $item->get_instance_id();
33
34 $canGetStoredShippingMethods = class_exists( '\WC_Shipping_Zones' );
35 if ( ! $canGetStoredShippingMethods ) {
36 return;
37 }
38
39 $shippingMethod = \WC_Shipping_Zones::get_shipping_method( $shippingInstanceId );
40 if ( false === $shippingMethod ) {
41 return;
42 }
43 if ( $shippingTitle === $shippingMethod->get_title() ) {
44 $item->set_method_title(
45 $this->woocommerce_wpml->shipping->translate_shipping_method_title(
46 $shippingTitle,
47 $shippingId . $shippingInstanceId,
48 $targetLanguage
49 )
50 );
51 return;
52 }
53
54 $itemShippingMethodData = $this->wpdb->get_row( $this->wpdb->prepare(
55 "SELECT s.value as originalMethodTitle, st.language as itemMethodTitleLanguage FROM {$this->wpdb->prefix}icl_strings AS s
56 LEFT JOIN {$this->wpdb->prefix}icl_string_translations AS st
57 ON st.string_id = s.id
58 WHERE s.context = %s
59 AND st.value = %s
60 AND s.name = %s
61 LIMIT 1
62 ",
63 \WCML_WC_Shipping::STRINGS_CONTEXT,
64 $shippingTitle,
65 str_replace( ':', '', $shippingId . $shippingInstanceId ) . \WCML_WC_Shipping::NAME_SUFFIX
66 ) );
67
68 if ( ! $itemShippingMethodData ) {
69 return;
70 }
71
72 $this->maybeSaveItem( $item, $itemShippingMethodData->originalMethodTitle, $targetLanguage );
73
74 if ( $targetLanguage === $itemShippingMethodData->itemMethodTitleLanguage ) {
75 return;
76 }
77
78 $item->set_method_title(
79 $this->woocommerce_wpml->shipping->translate_shipping_method_title(
80 $itemShippingMethodData->originalMethodTitle,
81 $shippingId . $shippingInstanceId,
82 $targetLanguage
83 )
84 );
85 }
86
87 }
88