PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / trunk
WPML Multilingual & Multicurrency for WooCommerce vtrunk
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 month ago ShippingMethod.php 1 month ago StoreInDefaultLanguage.php 1 month 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