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 / Multicurrency / Shipping / AdminHooks.php
woocommerce-multilingual / classes / Multicurrency / Shipping Last commit date
AdminHooks.php 1 week ago DefaultConversion.php 1 week ago FlatRateShipping.php 5 years ago FreeShipping.php 1 week ago FrontEndHooks.php 1 week ago LocalPickup.php 5 years ago ShippingClasses.php 1 week ago ShippingClassesMode.php 1 week ago ShippingHooksFactory.php 1 week ago ShippingMode.php 1 week ago ShippingModeBase.php 1 week ago ShippingModeProvider.php 1 week ago UnsupportedShipping.php 1 week ago VariableCost.php 1 week ago
AdminHooks.php
109 lines
1 <?php
2
3 namespace WCML\Multicurrency\Shipping;
4
5 use IWPML_Action;
6 use WCML\StandAlone\IStandAloneAction;
7 use WCML_Multi_Currency;
8
9 class AdminHooks implements IWPML_Action, IStandAloneAction {
10 const WCML_SHIPPING_COSTS = 'wcml_shipping_costs';
11
12 private $wcmlMultiCurrency;
13
14 public function __construct( \WCML_Multi_Currency $wcmlMultiCurrency ) {
15 $this->wcmlMultiCurrency = $wcmlMultiCurrency;
16 }
17
18 public function add_hooks() {
19 ShippingModeProvider::getAll()->each( function( ShippingMode $shippingMode ) {
20 add_filter(
21 'woocommerce_shipping_instance_form_fields_' . $shippingMode->getMethodId(),
22 $this->addCurrencyShippingFields( $shippingMode ),
23 10,
24 1
25 );
26 }
27 );
28 add_action( 'admin_enqueue_scripts', [ $this, 'loadJs' ] );
29 }
30
31 public function addCurrencyShippingFields( ShippingMode $shippingMode ) {
32 return function( array $field ) use ( $shippingMode ) {
33 return $this->addCurrencyShippingFieldsToShippingMethodForm( $field, $shippingMode );
34 };
35 }
36
37 private function addCurrencyShippingFieldsToShippingMethodForm( array $field, ShippingMode $shippingMode ) {
38 $field = $this->addTitleField( $field );
39 $field = $this->addEnableField( $field );
40 $field = $this->addCurrenciesFields( $field, $shippingMode );
41 if ( $shippingMode instanceof ShippingClassesMode ) {
42 $field = ShippingClasses::addFields( $field, $this->wcmlMultiCurrency );
43 }
44 return $field;
45 }
46
47 private function addTitleField( $field ) {
48 $field[ 'wcml_shipping_costs_title' ] = [
49 'title' => __( 'Costs and values in custom currencies', 'woocommerce-multilingual' ),
50 'type' => 'title',
51 'default' => '',
52 'description' => __( 'WPML Multilingual & Multicurrency for WooCommerce by default will multiply all your costs and values defined above by currency exchange rates. If you don\'t want this and you prefer static values instead, you can define them here.', 'woocommerce-multilingual' ),
53 ];
54 return $field;
55 }
56
57 private function addEnableField( array $field ) {
58 $enable_field = [
59 'title' => esc_html__( 'Enable costs in custom currencies', 'woocommerce-multilingual' ),
60 'type' => 'select',
61 'class' => 'wcml-enable-shipping-custom-currency',
62 'default' => 'auto',
63 'options' => [
64 'auto' => esc_html__( 'Calculate shipping costs in other currencies automatically', 'woocommerce-multilingual' ),
65 'manual' => esc_html__( 'Set shipping costs in other currencies manually', 'woocommerce-multilingual' )
66 ]
67 ];
68 $field[ self::WCML_SHIPPING_COSTS ] = $enable_field;
69
70 return $field;
71 }
72
73 public function addCurrenciesFields( array $field, ShippingMode $shippingMode ) {
74 foreach ( $this->wcmlMultiCurrency->get_currency_codes() as $currencyCode ) {
75 if ( $this->wcmlMultiCurrency->get_default_currency() === $currencyCode ) {
76 continue;
77 }
78 $field = $this->getCurrencyField( $field, $currencyCode, $shippingMode );
79 }
80 return $field;
81 }
82
83 protected function getCurrencyField( $field, $currencyCode, ShippingMode $shippingMode ) {
84 $fieldKey = $shippingMode->getSettingsFormKey( $currencyCode );
85 if ( $fieldKey ) {
86 $fieldValue = [
87 'title' => $shippingMode->getFieldTitle( $currencyCode ),
88 'type' => 'text',
89 'description' => $shippingMode->getFieldDescription( $currencyCode ),
90 'default' => '0',
91 'desc_tip' => true,
92 'class' => 'wcml-shipping-cost-currency'
93 ];
94
95 $field[ $fieldKey] = $fieldValue;
96 }
97 return $field;
98 }
99
100 public function loadJs() {
101 wp_enqueue_script(
102 'wcml-admin-shipping-currency-selector',
103 constant( 'WCML_PLUGIN_URL' ) . '/dist/js/multicurrencyShippingAdmin/app.js',
104 [],
105 constant( 'WCML_VERSION' ),
106 true
107 );
108 }
109 }