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 / Multicurrency / Shipping / ShippingClasses.php
woocommerce-multilingual / classes / Multicurrency / Shipping Last commit date
AdminHooks.php 1 month ago DefaultConversion.php 1 month ago FlatRateShipping.php 5 years ago FreeShipping.php 1 month ago FrontEndHooks.php 1 month ago LocalPickup.php 5 years ago ShippingClasses.php 1 month ago ShippingClassesMode.php 1 month ago ShippingHooksFactory.php 1 month ago ShippingMode.php 1 month ago ShippingModeBase.php 1 month ago ShippingModeProvider.php 1 month ago UnsupportedShipping.php 1 month ago VariableCost.php 1 month ago
ShippingClasses.php
69 lines
1 <?php
2
3 namespace WCML\Multicurrency\Shipping;
4
5 class ShippingClasses {
6 public static function addFields( array $field, \WCML_Multi_Currency $wcmlMultiCurrency ) {
7 $shippingClasses = WC()->shipping()->get_shipping_classes();
8 if ( ! empty( $shippingClasses ) ) {
9 foreach ( $wcmlMultiCurrency->get_currency_codes() as $currencyCode ) {
10 if ( $wcmlMultiCurrency->get_default_currency() === $currencyCode ) {
11 continue;
12 }
13 foreach ( $shippingClasses as $shippingClass ) {
14 $classSourceLanguageCode = self::getSourceLanguageCode( $shippingClass );
15 if ( $classSourceLanguageCode === null ) {
16 $field = self::addShippingClassField( $field, $shippingClass, $currencyCode );
17 } else {
18 $field = self::askToSwitchLanguage( $field, $shippingClass, $classSourceLanguageCode );
19 }
20 }
21 $field = self::addNoShippingClassField( $field, $currencyCode );
22 }
23 }
24 return $field;
25 }
26
27 protected static function getSourceLanguageCode( $shippingClass ) {
28 $classLanguageDetails = apply_filters( 'wpml_element_language_details', false, [
29 'element_id' => $shippingClass->term_id,
30 'element_type' => $shippingClass->taxonomy,
31 ] );
32 return $classLanguageDetails->source_language_code ?? null;
33 }
34
35 protected static function askToSwitchLanguage( $field, $shippingClass, $classSourceLanguageCode ) {
36 $field[ 'wcml_ask_to_switch_language_' . $shippingClass->term_id ] = [
37 'title' => '',
38 /* translators: %1$s is a shipping class name and %2$s is a language code */
39 'description' => sprintf( __( 'Your shipping class %1$s has been created in %2$s language. Please switch your language if you want to provide shipping costs in different currencies for this class.', 'woocommerce-multilingual' ),
40 $shippingClass->name,
41 $classSourceLanguageCode),
42 'type' => 'title'
43 ];
44 return $field;
45 }
46
47 protected static function addShippingClassField( $field, $shippingClass, $currencyCode ) {
48 $field[ 'class_cost_' . $shippingClass->term_id . '_' . $currencyCode ] = [
49 /* translators: %1$s is a shipping class name and %2$s is a currency code */
50 'title' => sprintf( __( '"%1$s" shipping class cost in %2$s', 'woocommerce-multilingual' ), esc_html( $shippingClass->name ), esc_html( $currencyCode ) ),
51 'type' => 'text',
52 'placeholder' => __( 'N/A', 'woocommerce-multilingual' ),
53 'class' => 'wcml-shipping-cost-currency'
54 ];
55 return $field;
56 }
57
58 protected static function addNoShippingClassField( $field, $currencyCode ) {
59 $field[ 'no_class_cost_' . $currencyCode ] = [
60 /* translators: %s is a currency code */
61 'title' => sprintf( __( 'No shipping class cost in %s', 'woocommerce-multilingual' ), esc_html( $currencyCode ) ),
62 'type' => 'text',
63 'placeholder' => __( 'N/A', 'woocommerce-multilingual' ),
64 'default' => '',
65 'class' => 'wcml-shipping-cost-currency'
66 ];
67 return $field;
68 }
69 }