@@ -88,6 +88,13 @@ public static function initialize()
88
88
2
89
89
);
90
90
}
91
+ // Add a hook to update product variations
92
+ add_action (
93
+ 'woocommerce_api_save_product_variation ' ,
94
+ array ('Academe_Wc_Api_Custom_Meta ' , 'updateVariationCustomMeta ' ),
95
+ 10 ,
96
+ 3
97
+ );
91
98
}
92
99
93
100
/**
@@ -115,6 +122,27 @@ public static function fetchCustomMeta($product_data, $product, $fields, $server
115
122
$ meta = $ all_meta ;
116
123
117
124
$ product_data ['meta ' ] = $ meta ;
125
+
126
+ if (isset ($ product_data ['variations ' ])) {
127
+ foreach ($ product_data ['variations ' ] as $ k => &$ variation ) {
128
+ $ variation_id = $ variation ['id ' ];
129
+
130
+ $ all_meta = get_post_meta ($ variation_id );
131
+
132
+ // Filter out meta we don't want.
133
+ $ all_meta = array_diff_key ($ all_meta , array_flip (static ::$ protected_fields ));
134
+
135
+ // Unserialize the meta field data where necessary.
136
+ foreach ($ all_meta as $ key => &$ value ) {
137
+ $ value = maybe_unserialize (reset ($ value ));
138
+ }
139
+ unset($ value );
140
+
141
+ $ meta = $ all_meta ;
142
+
143
+ $ variation ['meta ' ] = $ meta ;
144
+ }
145
+ }
118
146
}
119
147
120
148
return $ product_data ;
@@ -158,6 +186,13 @@ public static function updateCustomMeta($id, $data) {
158
186
}
159
187
}
160
188
}
189
+
190
+ /**
191
+ * Update or create a product variation using above function.
192
+ */
193
+ public static function updateVariationCustomMeta ($ id , $ menu_order , $ data ) {
194
+ Academe_Wc_Api_Custom_Meta::updateCustomMeta ($ id , $ data );
195
+ }
161
196
}
162
197
163
198
Academe_Wc_Api_Custom_Meta::initialize ();
0 commit comments