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 / Endpoints / Settings / TranslationControls.php
woocommerce-multilingual / classes / Endpoints / Settings Last commit date
TranslationControls.php 1 week ago
TranslationControls.php
106 lines
1 <?php
2
3 namespace WCML\Endpoints\Settings;
4
5 use WCML\TranslationControls\Hooks as TranslationControlsBase;
6 use WCML\Utilities\WcAdminPages;
7 use WCML_Tracking_Link;
8 use WPML\FP\Obj;
9 use WPML\FP\Str;
10
11 class TranslationControls extends TranslationControlsBase {
12
13 const TRANSLATION_DOMAIN = 'WP Endpoints';
14
15 const OPTION_NAMES = [
16 'order-pay' => 'woocommerce_checkout_pay_endpoint',
17 'order-received' => 'woocommerce_checkout_order_received_endpoint',
18 'add-payment-method' => 'woocommerce_myaccount_add_payment_method_endpoint',
19 'delete-payment-method' => 'woocommerce_myaccount_delete_payment_method_endpoint',
20 'set-default-payment-method' => 'woocommerce_myaccount_set_default_payment_method_endpoint',
21 'orders' => 'woocommerce_myaccount_orders_endpoint',
22 'view-order' => 'woocommerce_myaccount_view_order_endpoint',
23 'downloads' => 'woocommerce_myaccount_downloads_endpoint',
24 'edit-account' => 'woocommerce_myaccount_edit_account_endpoint',
25 'edit-address' => 'woocommerce_myaccount_edit_address_endpoint',
26 'payment-methods' => 'woocommerce_myaccount_payment_methods_endpoint',
27 'lost-password' => 'woocommerce_myaccount_lost_password_endpoint',
28 'customer-logout' => 'woocommerce_logout_endpoint',
29 ];
30
31 protected function addAdminPageHooks() {
32 add_action( 'woocommerce_after_settings_advanced', [ $this, 'translationControls' ] );
33 add_action( 'woocommerce_update_options_advanced', [ $this, 'registerStringsOnSave' ] );
34 }
35
36 protected function isAdminPage() {
37 return WcAdminPages::isAdvancedSettings();
38 }
39
40 public function translationInstructions() {}
41
42 private function getOptionNames() {
43 return apply_filters( 'wcml_endpoints_translation_controls', self::OPTION_NAMES );
44 }
45
46 protected function getTranslationControls() {
47 $optionNames = $this->getOptionNames();
48 $translationControls = [];
49 foreach ( $optionNames as $stringName => $optionName ) {
50 $translationControls[] = $this->getTranslationControl(
51 $stringName,
52 $optionName,
53 get_option( $optionName, '' ),
54 self::TRANSLATION_DOMAIN,
55 $this->getStringName( $stringName, $optionName )
56 );
57 }
58
59 return $translationControls;
60 }
61
62 public function registerStringsOnSave() {
63 $optionNames = $this->getOptionNames();
64
65 wpml_collect( $_POST )
66 ->filter( function( $language, $key ) {
67 return Str::startsWith( self::KEY_PREFIX . '-', $key );
68 } )
69 ->map( function( $language, $key ) use ( $optionNames ) {
70 $stringName = str_replace( self::KEY_PREFIX . '-', '', $key );
71 if ( ! array_key_exists( $stringName, $optionNames ) ) {
72 return;
73 }
74
75 $optionName = $optionNames[ $stringName ];
76 $domain = self::TRANSLATION_DOMAIN;
77 $name = $this->getStringName( $stringName, $optionName );
78 $stringValue = wp_kses_post( Obj::propOr(
79 '',
80 $this->getInputName( $stringName, $optionName ),
81 $_POST
82 ) );
83 if ( empty( $stringValue ) ) {
84 return;
85 }
86 $this->replaceStringAndLanguage( $stringValue, $domain, $name, $language );
87 } );
88 }
89
90 protected function getStringName( $stringName, $optionName ) {
91 return $stringName;
92 }
93
94 protected function getInputId( $stringName, $optionName ) {
95 return $optionName;
96 }
97
98 protected function getLanguageSelectorId( $stringName, $optionName ) {
99 return $stringName . '_' . self::LANGUAGE_SELECTOR_ID_SUFFIX;
100 }
101
102 protected function getLanguageSelectorName( $stringName, $optionName ) {
103 return self::KEY_PREFIX . '-' . $stringName;
104 }
105 }
106