@@ -83,6 +83,13 @@ public static function initialize()
83
83
2
84
84
);
85
85
}
86
+ // Add a hook to update product variations
87
+ add_action (
88
+ 'woocommerce_api_save_product_variation ' ,
89
+ array ('Academe_Wc_Api_Custom_Meta ' , 'updateVariationCustomMeta ' ),
90
+ 10 ,
91
+ 3
92
+ );
86
93
}
87
94
88
95
/**
@@ -109,6 +116,27 @@ public static function fetchCustomMeta($product_data, $product, $fields, $server
109
116
$ meta = $ all_meta ;
110
117
111
118
$ product_data ['meta ' ] = $ meta ;
119
+
120
+ if (isset ($ product_data ['variations ' ])) {
121
+ foreach ($ product_data ['variations ' ] as $ k => &$ variation ) {
122
+ $ variation_id = $ variation ['id ' ];
123
+
124
+ $ all_meta = get_post_meta ($ variation_id );
125
+
126
+ // Filter out meta we don't want.
127
+ $ all_meta = array_diff_key ($ all_meta , array_flip (static ::$ protected_fields ));
128
+
129
+ // Unserialize the meta field data where necessary.
130
+ foreach ($ all_meta as $ key => &$ value ) {
131
+ $ value = maybe_unserialize (reset ($ value ));
132
+ }
133
+ unset($ value );
134
+
135
+ $ meta = $ all_meta ;
136
+
137
+ $ variation ['meta ' ] = $ meta ;
138
+ }
139
+ }
112
140
}
113
141
114
142
return $ product_data ;
@@ -152,6 +180,13 @@ public static function updateCustomMeta($id, $data) {
152
180
}
153
181
}
154
182
}
183
+
184
+ /**
185
+ * Update or create a product variation using above function.
186
+ */
187
+ public static function updateVariationCustomMeta ($ id , $ menu_order , $ data ) {
188
+ Academe_Wc_Api_Custom_Meta::updateCustomMeta ($ id , $ data );
189
+ }
155
190
}
156
191
157
192
Academe_Wc_Api_Custom_Meta::initialize ();
0 commit comments