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 / compatibility / WcTabManager / TranslationEditor / GroupsAndLabels.php
woocommerce-multilingual / compatibility / WcTabManager / TranslationEditor Last commit date
GroupsAndLabels.php 1 week ago
GroupsAndLabels.php
90 lines
1 <?php
2
3 namespace WCML\Compatibility\WcTabManager\TranslationEditor;
4
5 use WCML_Tab_Manager;
6 use WCML\TranslationJob\Hooks as TranslationJobHooks;
7 use WPML\FP\Obj;
8 use WPML\FP\Str;
9
10 class GroupsAndLabels implements \IWPML_Action {
11
12 const TAB_GROUP_SLUG = 'product-tab';
13 const TAB_GROUP_LABEL = 'Product Tab';
14
15 const DEFAULT_FIELD_LABEL = 'Field';
16 const TAB_CONTENT_LABEL = 'Content';
17
18 public function add_hooks() {
19 add_filter( 'wpml_tm_adjust_translation_fields', [ $this, 'adjustFields' ] );
20 }
21
22 public function adjustFields( $fields ) {
23 foreach ( $fields as &$field ) {
24 if ( Str::startsWith( WCML_Tab_Manager::TAB_FIELD_PREFIX, Obj::prop( 'field_type', $field ) ) ) {
25 $field = $this->adjustField( $field );
26 }
27 }
28
29 return $fields;
30 }
31
32 private function adjustField( $field ) {
33 $fieldData = Str::replace( WCML_Tab_Manager::TAB_FIELD_PREFIX, '', $field['field_type'] );
34
35 if ( Str::startsWith( WCML_Tab_Manager::TAB_FIELD_CORE_INTERFIX, $fieldData ) ) {
36 $field = $this->adjustCoreTabField( $field );
37 } elseif ( Str::startsWith( WCML_Tab_Manager::TAB_FIELD_PRODUCT_INTERFIX, $fieldData ) ) {
38 $field = $this->adjustProductTabField( $field );
39 }
40
41 return $field;
42 }
43
44 private function adjustCoreTabField( $field ) {
45 $fieldData = Str::replace( WCML_Tab_Manager::TAB_FIELD_PREFIX . WCML_Tab_Manager::TAB_FIELD_CORE_INTERFIX, '', $field['field_type'] );
46 $fieldParts = explode( ':', $fieldData );
47 $name = reset( $fieldParts );
48 $tabId = count( $fieldParts ) > 1 ? end( $fieldParts ) : false;
49
50 return $this->adjustTabField( $field, $name, $tabId );
51 }
52
53 private function adjustProductTabField( $field ) {
54 $fieldData = Str::replace( WCML_Tab_Manager::TAB_FIELD_PREFIX . WCML_Tab_Manager::TAB_FIELD_PRODUCT_INTERFIX, '', $field['field_type'] );
55 $fieldParts = explode( ':', $fieldData );
56 $name = count( $fieldParts ) > 1 ? end( $fieldParts ) : false;
57 $tabId = reset( $fieldParts );
58
59 return $this->adjustTabField( $field, $name, $tabId );
60 }
61
62 private function adjustTabField( $field, $name, $tabId ) {
63 $getTitle = function( $slug ) {
64 if ( empty( $slug ) ) {
65 return self::DEFAULT_FIELD_LABEL;
66 }
67 if ( 'description' === $slug ) {
68 return self::TAB_CONTENT_LABEL;
69 }
70 return apply_filters( 'wpml_labelize_string', $slug, 'TranslationJob' );
71 };
72
73 $getGroup = function( $id ) {
74 if ( empty( $id ) ) {
75 return self::TAB_GROUP_SLUG . '-0';
76 }
77 return self::TAB_GROUP_SLUG . '-' . $id;
78 };
79
80 $group = $getGroup( $tabId );
81
82 $field['title'] = $getTitle( $name );
83 $field['group'] = TranslationJobHooks::getTopLevelGroup();
84 $field['group'][ $group ] = self::TAB_GROUP_LABEL;
85
86 return $field;
87 }
88
89 }
90