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 / AdminHooks.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
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 }