CTX Feed – WooCommerce Product Feed Manager Plugin - Version 4.4.51

Version Description

(2022-02-24) = * Updated: Pinterest catalog feed attributes updated.

Download this release

Release Info

Developer wahid0003
Plugin Icon 128x128 CTX Feed – WooCommerce Product Feed Manager Plugin
Version 4.4.51
Comparing to
See all releases

Code changes from version 4.4.48 to 4.4.51

README.txt CHANGED
@@ -5,7 +5,7 @@ Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Cata
5
  Requires at least: 4.4
6
  Tested Up To: 5.8.2
7
  Requires PHP: 5.6
8
- Stable tag: 4.4.48
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -516,6 +516,16 @@ Using pro version:
516
 
517
  == Changelog ==
518
 
 
 
 
 
 
 
 
 
 
 
519
  = 4.4.48 (2022-01-31) =
520
  * Updated: Idealo template attributes and link updated.
521
 
5
  Requires at least: 4.4
6
  Tested Up To: 5.8.2
7
  Requires PHP: 5.6
8
+ Stable tag: 4.4.51
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
516
 
517
  == Changelog ==
518
 
519
+ = 4.4.51 (2022-02-24) =
520
+ * Updated: Pinterest catalog feed attributes updated.
521
+
522
+ = 4.4.50 (2022-02-16) =
523
+ * Fixed: Review feed not generating when the special character in review title or description - issue has been fixed.
524
+
525
+ = 4.4.49 (2022-02-08) =
526
+ * Fixed: Review reply comes as a review for Google Review Template - issue has been fixed.
527
+ * Updated: Learn more button's link in feed configuration setting has been updated.
528
+
529
  = 4.4.48 (2022-01-31) =
530
  * Updated: Idealo template attributes and link updated.
531
 
admin/partials/woo-feed-edit-config.php CHANGED
@@ -75,7 +75,7 @@ if ( ! defined( 'ABSPATH' ) ) {
75
  ?>
76
  </select>
77
  </span>
78
- <span style="font-size:x-small;"><a style="color: red" href="http://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category" target="_blank">Learn More..</a></span>
79
  <?php } else { ?>
80
  <input <?php echo ( 'pattern' == $attr_type[$k] ) ? '' : 'style=" display: none;"'; ?>autocomplete="off" class="wf_default wf_attributes " type="text" name="default[<?php echo esc_attr( $k ); ?>]" value="<?php echo isset($default[ $k ]) ? esc_attr( $default[ $k ] ) : ""; ?>"/>
81
  <?php } ?>
75
  ?>
76
  </select>
77
  </span>
78
+ <span style="font-size:x-small;"><a style="color: red" href="https://webappick.com/docs/ctx-feed/configuration/how-to-map-store-category-with-merchant-category/" target="_blank">Learn More..</a></span>
79
  <?php } else { ?>
80
  <input <?php echo ( 'pattern' == $attr_type[$k] ) ? '' : 'style=" display: none;"'; ?>autocomplete="off" class="wf_default wf_attributes " type="text" name="default[<?php echo esc_attr( $k ); ?>]" value="<?php echo isset($default[ $k ]) ? esc_attr( $default[ $k ] ) : ""; ?>"/>
81
  <?php } ?>
includes/classes/class-woo-feed-admin-message.php CHANGED
@@ -262,7 +262,7 @@ final class Woo_Feed_Message {
262
  $notice = '<b style="color: #008779;">' . $notice . '</b>';
263
  if ( isset( $_GET['cat'] ) && 'no' == $_GET['cat'] ) {
264
  $notice .= sprintf( '<br/><br/><b style="color: #f49242;">%s</b>', esc_html__( 'Warning:', 'woo-feed' ) );
265
- $link = 'https://webappick.helpscoutdocs.com/article/19-how-to-map-store-category-with-merchant-category';
266
  /** @noinspection HtmlUnknownTarget */
267
  $link = sprintf( '<a href="%s" target="_blank">%s</a>', esc_url( $link ), esc_html__( 'Learn more...', 'woo-feed' ) );
268
  $notice .= sprintf( '<ul><li>%s %s</li></ul>', esc_html__( 'Google Product category is not selected. Your Google Ads CPC rate will be high. Add proper Google Product Category to each product & reduce CPC rate.', 'woo-feed' ), $link );
262
  $notice = '<b style="color: #008779;">' . $notice . '</b>';
263
  if ( isset( $_GET['cat'] ) && 'no' == $_GET['cat'] ) {
264
  $notice .= sprintf( '<br/><br/><b style="color: #f49242;">%s</b>', esc_html__( 'Warning:', 'woo-feed' ) );
265
+ $link = 'https://webappick.com/docs/ctx-feed/configuration/how-to-map-store-category-with-merchant-category/';
266
  /** @noinspection HtmlUnknownTarget */
267
  $link = sprintf( '<a href="%s" target="_blank">%s</a>', esc_url( $link ), esc_html__( 'Learn more...', 'woo-feed' ) );
268
  $notice .= sprintf( '<ul><li>%s %s</li></ul>', esc_html__( 'Google Product category is not selected. Your Google Ads CPC rate will be high. Add proper Google Product Category to each product & reduce CPC rate.', 'woo-feed' ), $link );
includes/classes/class-woo-feed-constants.php CHANGED
@@ -22,7 +22,7 @@ class Woo_Feed_Constants {
22
  * @var string
23
  * @since 3.1.6
24
  */
25
- define( 'WOO_FEED_FREE_VERSION', '4.4.48' );
26
  }
27
 
28
  if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
22
  * @var string
23
  * @since 3.1.6
24
  */
25
+ define( 'WOO_FEED_FREE_VERSION', '4.4.51' );
26
  }
27
 
28
  if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
includes/classes/class-woo-feed-default-attributes.php CHANGED
@@ -15,6 +15,127 @@
15
  */
16
  class Woo_Feed_Default_Attributes {
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  public $googleXMLAttribute
19
  = array(
20
  'id' => array( 'g:id', false ),
@@ -79,6 +200,11 @@ class Woo_Feed_Default_Attributes {
79
  'tax_rate' => array( 'g:tax_rate', true ),
80
  'tax_ship' => array( 'g:tax_ship', true ),
81
  'tax_category' => array( 'g:tax_category', true ),
 
 
 
 
 
82
  'shipping' => array( 'g:shipping', true ),
83
  'weight' => array( 'g:shipping_weight', false ),
84
  'length' => array( 'g:shipping_length', false ),
@@ -145,122 +271,6 @@ class Woo_Feed_Default_Attributes {
145
  false,
146
  ),
147
  );
148
- public $googleCSVTXTAttribute
149
- = array(
150
- 'id' => array( 'id', false ),
151
- 'webitemid' => array( 'webitemid', false ),
152
- 'region_id' => array( 'region_id', false ),
153
- 'title' => array( 'title', true ),
154
- 'description' => array( 'description', true ),
155
- 'link' => array( 'link', true ),
156
- 'canonical_link' => array( 'canonical link', true ),
157
- 'mobile_link' => array( 'mobile_link', true ),
158
- 'product_type' => array( 'product type', true ),
159
- 'current_category' => array( 'google product category', true ),
160
- 'image' => array( 'image link', true ),
161
- 'images' => array( 'additional image link', true ),
162
- 'images_1' => array( 'additional image link 1', true ),
163
- 'images_2' => array( 'additional image link 2', true ),
164
- 'images_3' => array( 'additional image link 3', true ),
165
- 'images_4' => array( 'additional image link 4', true ),
166
- 'images_5' => array( 'additional image link 5', true ),
167
- 'images_6' => array( 'additional image link 6', true ),
168
- 'images_7' => array( 'additional image link 7', true ),
169
- 'images_8' => array( 'additional image link 8', true ),
170
- 'images_9' => array( 'additional image link 9', true ),
171
- 'images_10' => array( 'additional image link 10', true ),
172
- 'condition' => array( 'condition', false ),
173
- 'availability' => array( 'availability', false ),
174
- 'availability_date' => array( 'availability date', false ),
175
- 'inventory' => array( 'inventory', false ),
176
- 'price' => array( 'price', true ),
177
- 'sale_price' => array( 'sale price', true ),
178
- 'sale_price_effective_date' => array( 'sale price effective date', true ),
179
- 'brand' => array( 'brand', true ),
180
- 'sku' => array( 'mpn', true ),
181
- 'upc' => array( 'gtin', true ),
182
- 'identifier_exists' => array( 'identifier exists', true ),
183
- 'item_group_id' => array( 'item group id', false ),
184
- 'product_length' => array( 'product length', true ),
185
- 'product_width' => array( 'product width', true ),
186
- 'product_height' => array( 'product height', true ),
187
- 'product_weight' => array( 'product weight', true ),
188
- 'product_highlight_1' => array( 'product highlight 1', true ),
189
- 'product_highlight_2' => array( 'product highlight 2', true ),
190
- 'product_highlight_3' => array( 'product highlight 3', true ),
191
- 'product_highlight_4' => array( 'product highlight 4', true ),
192
- 'product_highlight_5' => array( 'product highlight 5', true ),
193
- 'product_highlight_6' => array( 'product highlight 6', true ),
194
- 'product_highlight_7' => array( 'product highlight 7', true ),
195
- 'product_highlight_8' => array( 'product highlight 8', true ),
196
- 'product_highlight_9' => array( 'product highlight 9', true ),
197
- 'product_highlight_10' => array( 'product highlight 10', true ),
198
- 'color' => array( 'color', true ),
199
- 'gender' => array( 'gender', true ),
200
- 'age_group' => array( 'age group', true ),
201
- 'material' => array( 'material', true ),
202
- 'pattern' => array( 'pattern', true ),
203
- 'size' => array( 'size', true ),
204
- 'size_type' => array( 'size type', true ),
205
- 'size_system' => array( 'size system', true ),
206
- 'tax' => array( 'tax', true ),
207
- 'tax_category' => array( 'tax category', true ),
208
- 'shipping' => array( 'shipping', true ),
209
- 'weight' => array( 'shipping weight', false ),
210
- 'length' => array( 'shipping length', false ),
211
- 'width' => array( 'shipping width', false ),
212
- 'height' => array( 'shipping height', false ),
213
- 'ships_from_country' => array( 'ships from country', false ),
214
- 'shipping_label' => array( 'shipping label', false ),
215
- 'shipping_country' => array( 'shipping country', false ),
216
- 'shipping_service' => array( 'shipping service', false ),
217
- 'shipping_price' => array( 'shipping price', false ),
218
- 'shipping_region' => array( 'shipping region', false ),
219
- 'multipack' => array( 'multipack', true ),
220
- 'is_bundle' => array( 'is bundle', true ),
221
- 'adult' => array( 'adult', true ),
222
- 'ads_redirect' => array( 'ads redirect', true ),
223
- 'custom_label_0' => array( 'custom label 0', true ),
224
- 'custom_label_1' => array( 'custom label 1', true ),
225
- 'custom_label_2' => array( 'custom label 2', true ),
226
- 'custom_label_3' => array( 'custom label 3', true ),
227
- 'custom_label_4' => array( 'custom label 4', true ),
228
- 'excluded_destination' => array( 'excluded destination', true ),
229
- 'shopping_ads_excluded_country' => array( 'shopping ads excluded country', true ),
230
- 'included_destination' => array( 'included destination', true ),
231
- 'expiration_date' => array( 'expiration date', true ),
232
- 'unit_pricing_measure' => array( 'unit pricing measure', true ),
233
- 'unit_pricing_base_measure' => array( 'unit pricing base measure', true ),
234
- 'installment_months' => array( 'months', true ),
235
- 'installment_amount' => array( 'amount', true ),
236
- 'subscription_period' => array( 'period', true ),
237
- 'subscription_period_length' => array( 'period_length', true ),
238
- 'subscription_amount' => array( 'amount', true ),
239
- 'energy_efficiency_class' => array( 'energy efficiency class', true ),
240
- 'min_energy_efficiency_class' => array( 'min energy efficiency class', true ),
241
- 'max_energy_efficiency_class' => array( 'max energy efficiency class', true ),
242
- 'loyalty_points' => array( 'loyalty points', true ),
243
- 'installment' => array( 'installment', true ),
244
- 'promotion_id' => array( 'promotion id', true ),
245
- 'cost_of_goods_sold' => array( 'cost of goods sold', true ),
246
- 'sell_on_google_quantity' => array( 'sell on google quantity', false ),
247
- 'min_handling_time' => array( 'min handling time', false ),
248
- 'max_handling_time' => array( 'max handling time', false ),
249
- 'transit_time_label' => array( 'transit time label', false ),
250
- 'return_address_label' => array( 'return address label', false ),
251
- 'return_policy_label' => array( 'return policy label', false ),
252
- 'store_code' => array( 'store code', false ),
253
- 'pickup_method' => array( 'pickup method', true ),
254
- 'pickup_sla' => array( 'pickup sla', true ),
255
- 'pickup_link_template' => array( 'pickup link template', true ),
256
- 'link_template' => array( 'link template', true ),
257
- 'mobile_link_template' => array( 'mobile link template', true ),
258
- 'mobile_pickup_link_template' => array( 'mobile pickup link template', true ),
259
- 'google_funded_promotion_eligibility' => array(
260
- 'google funded promotion eligibility',
261
- false,
262
- ),
263
- );
264
  public $facebookXMLAttribute
265
  = array(
266
  'id' => array( 'g:id', false ),
@@ -458,6 +468,11 @@ class Woo_Feed_Default_Attributes {
458
  'tax_rate' => array( 'g:tax_rate', true ),
459
  'tax_ship' => array( 'g:tax_ship', true ),
460
  'tax_category' => array( 'g:tax_category', true ),
 
 
 
 
 
461
  'weight' => array( 'g:shipping_weight', false ),
462
  'length' => array( 'g:shipping_length', false ),
463
  'width' => array( 'g:shipping_width', false ),
@@ -535,6 +550,11 @@ class Woo_Feed_Default_Attributes {
535
  'tax_rate' => array( 'tax_rate', true ),
536
  'tax_ship' => array( 'tax_ship', true ),
537
  'tax_category' => array( 'tax_category', true ),
 
 
 
 
 
538
  'weight' => array( 'shipping_weight', false ),
539
  'length' => array( 'shipping_length', false ),
540
  'width' => array( 'shipping_width', false ),
@@ -743,7 +763,14 @@ class Woo_Feed_Default_Attributes {
743
  '--14' => 'Multiple Installments (Brazil Only)',
744
  'installment' => 'Installment[installment]',
745
  '---14' => '',
746
- '--15' => 'Merchant Promotions Attributes',
 
 
 
 
 
 
 
747
  'promotion_id' => 'Promotion Id[promotion_id]',
748
  'product_applicability' => 'Product Applicability[product_applicability]',
749
  'offer_type' => 'Offer Type[offer_type]',
@@ -758,14 +785,14 @@ class Woo_Feed_Default_Attributes {
758
  'free_gift_value' => 'Free Gift Value[free_gift_value]',
759
  'free_gift_description' => 'Free Gift Description[free_gift_description]',
760
  'free_gift_item_id' => 'Free Gift Item ID[free_gift_item_id]',
761
- '---15' => '',
762
- '--16' => 'Shopping Action Attributes',
763
  'sell_on_google_quantity' => 'Number of Product Sold On Google [sell_on_google_quantity]',
764
  'return_address_label' => 'Return Address [return_address_label]',
765
  'return_policy_label' => 'Return Policy [return_policy_label]',
766
  'google_funded_promotion_eligibility' => 'Google Funded Promotion Eligibility [google_funded_promotion_eligibility]',
767
- '---16' => '',
768
- '--17' => 'Local Inventory / Product Inventory',
769
  'store_code' => 'Store Code [store_code]',
770
  'quantity' => 'Quantity [quantity]',
771
  'pickup_method' => 'Pickup Method [pickup_method]',
@@ -774,7 +801,7 @@ class Woo_Feed_Default_Attributes {
774
  'link_template' => 'Link Template [link_template]',
775
  'mobile_link_template' => 'Mobile Link Template [mobile_link_template]',
776
  'mobile_pickup_link_template' => 'Mobile Pickup Link Template [mobile_pickup_link_template]',
777
- '---17' => '',
778
  );
779
  }
780
 
15
  */
16
  class Woo_Feed_Default_Attributes {
17
 
18
+ public $googleCSVTXTAttribute
19
+ = array(
20
+ 'id' => array( 'id', false ),
21
+ 'webitemid' => array( 'webitemid', false ),
22
+ 'region_id' => array( 'region_id', false ),
23
+ 'title' => array( 'title', true ),
24
+ 'description' => array( 'description', true ),
25
+ 'link' => array( 'link', true ),
26
+ 'canonical_link' => array( 'canonical link', true ),
27
+ 'mobile_link' => array( 'mobile_link', true ),
28
+ 'product_type' => array( 'product type', true ),
29
+ 'current_category' => array( 'google product category', true ),
30
+ 'image' => array( 'image link', true ),
31
+ 'images' => array( 'additional image link', true ),
32
+ 'images_1' => array( 'additional image link 1', true ),
33
+ 'images_2' => array( 'additional image link 2', true ),
34
+ 'images_3' => array( 'additional image link 3', true ),
35
+ 'images_4' => array( 'additional image link 4', true ),
36
+ 'images_5' => array( 'additional image link 5', true ),
37
+ 'images_6' => array( 'additional image link 6', true ),
38
+ 'images_7' => array( 'additional image link 7', true ),
39
+ 'images_8' => array( 'additional image link 8', true ),
40
+ 'images_9' => array( 'additional image link 9', true ),
41
+ 'images_10' => array( 'additional image link 10', true ),
42
+ 'condition' => array( 'condition', false ),
43
+ 'availability' => array( 'availability', false ),
44
+ 'availability_date' => array( 'availability date', false ),
45
+ 'inventory' => array( 'inventory', false ),
46
+ 'price' => array( 'price', true ),
47
+ 'sale_price' => array( 'sale price', true ),
48
+ 'sale_price_effective_date' => array( 'sale price effective date', true ),
49
+ 'brand' => array( 'brand', true ),
50
+ 'sku' => array( 'mpn', true ),
51
+ 'upc' => array( 'gtin', true ),
52
+ 'identifier_exists' => array( 'identifier exists', true ),
53
+ 'item_group_id' => array( 'item group id', false ),
54
+ 'product_length' => array( 'product length', true ),
55
+ 'product_width' => array( 'product width', true ),
56
+ 'product_height' => array( 'product height', true ),
57
+ 'product_weight' => array( 'product weight', true ),
58
+ 'product_highlight_1' => array( 'product highlight 1', true ),
59
+ 'product_highlight_2' => array( 'product highlight 2', true ),
60
+ 'product_highlight_3' => array( 'product highlight 3', true ),
61
+ 'product_highlight_4' => array( 'product highlight 4', true ),
62
+ 'product_highlight_5' => array( 'product highlight 5', true ),
63
+ 'product_highlight_6' => array( 'product highlight 6', true ),
64
+ 'product_highlight_7' => array( 'product highlight 7', true ),
65
+ 'product_highlight_8' => array( 'product highlight 8', true ),
66
+ 'product_highlight_9' => array( 'product highlight 9', true ),
67
+ 'product_highlight_10' => array( 'product highlight 10', true ),
68
+ 'color' => array( 'color', true ),
69
+ 'gender' => array( 'gender', true ),
70
+ 'age_group' => array( 'age group', true ),
71
+ 'material' => array( 'material', true ),
72
+ 'pattern' => array( 'pattern', true ),
73
+ 'size' => array( 'size', true ),
74
+ 'size_type' => array( 'size type', true ),
75
+ 'size_system' => array( 'size system', true ),
76
+ 'free_shipping_label' => array( 'free_shipping_label', true ),
77
+ 'free_shipping_limit' => array( 'free_shipping_limit', true ),
78
+ 'average_review_rating' => array( 'average_review_rating', true ),
79
+ 'number_of_ratings' => array( 'number_of_ratings', true ),
80
+ 'number_of_reviews' => array( 'number_of_reviews', true ),
81
+ 'tax' => array( 'tax', true ),
82
+ 'tax_category' => array( 'tax category', true ),
83
+ 'shipping' => array( 'shipping', true ),
84
+ 'weight' => array( 'shipping weight', false ),
85
+ 'length' => array( 'shipping length', false ),
86
+ 'width' => array( 'shipping width', false ),
87
+ 'height' => array( 'shipping height', false ),
88
+ 'ships_from_country' => array( 'ships from country', false ),
89
+ 'shipping_label' => array( 'shipping label', false ),
90
+ 'shipping_country' => array( 'shipping country', false ),
91
+ 'shipping_service' => array( 'shipping service', false ),
92
+ 'shipping_price' => array( 'shipping price', false ),
93
+ 'shipping_region' => array( 'shipping region', false ),
94
+ 'multipack' => array( 'multipack', true ),
95
+ 'is_bundle' => array( 'is bundle', true ),
96
+ 'adult' => array( 'adult', true ),
97
+ 'ads_redirect' => array( 'ads redirect', true ),
98
+ 'custom_label_0' => array( 'custom label 0', true ),
99
+ 'custom_label_1' => array( 'custom label 1', true ),
100
+ 'custom_label_2' => array( 'custom label 2', true ),
101
+ 'custom_label_3' => array( 'custom label 3', true ),
102
+ 'custom_label_4' => array( 'custom label 4', true ),
103
+ 'excluded_destination' => array( 'excluded destination', true ),
104
+ 'shopping_ads_excluded_country' => array( 'shopping ads excluded country', true ),
105
+ 'included_destination' => array( 'included destination', true ),
106
+ 'expiration_date' => array( 'expiration date', true ),
107
+ 'unit_pricing_measure' => array( 'unit pricing measure', true ),
108
+ 'unit_pricing_base_measure' => array( 'unit pricing base measure', true ),
109
+ 'installment_months' => array( 'months', true ),
110
+ 'installment_amount' => array( 'amount', true ),
111
+ 'subscription_period' => array( 'period', true ),
112
+ 'subscription_period_length' => array( 'period_length', true ),
113
+ 'subscription_amount' => array( 'amount', true ),
114
+ 'energy_efficiency_class' => array( 'energy efficiency class', true ),
115
+ 'min_energy_efficiency_class' => array( 'min energy efficiency class', true ),
116
+ 'max_energy_efficiency_class' => array( 'max energy efficiency class', true ),
117
+ 'loyalty_points' => array( 'loyalty points', true ),
118
+ 'installment' => array( 'installment', true ),
119
+ 'promotion_id' => array( 'promotion id', true ),
120
+ 'cost_of_goods_sold' => array( 'cost of goods sold', true ),
121
+ 'sell_on_google_quantity' => array( 'sell on google quantity', false ),
122
+ 'min_handling_time' => array( 'min handling time', false ),
123
+ 'max_handling_time' => array( 'max handling time', false ),
124
+ 'transit_time_label' => array( 'transit time label', false ),
125
+ 'return_address_label' => array( 'return address label', false ),
126
+ 'return_policy_label' => array( 'return policy label', false ),
127
+ 'store_code' => array( 'store code', false ),
128
+ 'pickup_method' => array( 'pickup method', true ),
129
+ 'pickup_sla' => array( 'pickup sla', true ),
130
+ 'pickup_link_template' => array( 'pickup link template', true ),
131
+ 'link_template' => array( 'link template', true ),
132
+ 'mobile_link_template' => array( 'mobile link template', true ),
133
+ 'mobile_pickup_link_template' => array( 'mobile pickup link template', true ),
134
+ 'google_funded_promotion_eligibility' => array(
135
+ 'google funded promotion eligibility',
136
+ false,
137
+ ),
138
+ );
139
  public $googleXMLAttribute
140
  = array(
141
  'id' => array( 'g:id', false ),
200
  'tax_rate' => array( 'g:tax_rate', true ),
201
  'tax_ship' => array( 'g:tax_ship', true ),
202
  'tax_category' => array( 'g:tax_category', true ),
203
+ 'free_shipping_label' => array( 'g:free_shipping_label', true ),
204
+ 'free_shipping_limit' => array( 'g:free_shipping_limit', true ),
205
+ 'average_review_rating' => array( 'g:average_review_rating', true ),
206
+ 'number_of_ratings' => array( 'g:number_of_ratings', true ),
207
+ 'number_of_reviews' => array( 'g:number_of_reviews', true ),
208
  'shipping' => array( 'g:shipping', true ),
209
  'weight' => array( 'g:shipping_weight', false ),
210
  'length' => array( 'g:shipping_length', false ),
271
  false,
272
  ),
273
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  public $facebookXMLAttribute
275
  = array(
276
  'id' => array( 'g:id', false ),
468
  'tax_rate' => array( 'g:tax_rate', true ),
469
  'tax_ship' => array( 'g:tax_ship', true ),
470
  'tax_category' => array( 'g:tax_category', true ),
471
+ 'free_shipping_label' => array( 'g:free_shipping_label', true ),
472
+ 'free_shipping_limit' => array( 'g:free_shipping_limit', true ),
473
+ 'average_review_rating' => array( 'g:average_review_rating', true ),
474
+ 'number_of_ratings' => array( 'g:number_of_ratings', true ),
475
+ 'number_of_reviews' => array( 'g:number_of_reviews', true ),
476
  'weight' => array( 'g:shipping_weight', false ),
477
  'length' => array( 'g:shipping_length', false ),
478
  'width' => array( 'g:shipping_width', false ),
550
  'tax_rate' => array( 'tax_rate', true ),
551
  'tax_ship' => array( 'tax_ship', true ),
552
  'tax_category' => array( 'tax_category', true ),
553
+ 'free_shipping_label' => array( 'free_shipping_label', true ),
554
+ 'free_shipping_limit' => array( 'free_shipping_limit', true ),
555
+ 'average_review_rating' => array( 'average_review_rating', true ),
556
+ 'number_of_ratings' => array( 'number_of_ratings', true ),
557
+ 'number_of_reviews' => array( 'number_of_reviews', true ),
558
  'weight' => array( 'shipping_weight', false ),
559
  'length' => array( 'shipping_length', false ),
560
  'width' => array( 'shipping_width', false ),
763
  '--14' => 'Multiple Installments (Brazil Only)',
764
  'installment' => 'Installment[installment]',
765
  '---14' => '',
766
+ '--15' => 'Pinterest Catalog Attributes',
767
+ 'free_shipping_label' => 'Free Shipping Label[free_shipping_label]',
768
+ 'free_shipping_limit' => 'Free Shipping Limit[free_shipping_limit]',
769
+ 'average_review_rating' => 'Average Review Rating[average_review_rating]',
770
+ 'number_of_ratings' => 'Number of Ratings[number_of_ratings]',
771
+ 'number_of_reviews' => 'Number of Reviews[number_of_reviews]',
772
+ '---15' => '',
773
+ '--16' => 'Merchant Promotions Attributes',
774
  'promotion_id' => 'Promotion Id[promotion_id]',
775
  'product_applicability' => 'Product Applicability[product_applicability]',
776
  'offer_type' => 'Offer Type[offer_type]',
785
  'free_gift_value' => 'Free Gift Value[free_gift_value]',
786
  'free_gift_description' => 'Free Gift Description[free_gift_description]',
787
  'free_gift_item_id' => 'Free Gift Item ID[free_gift_item_id]',
788
+ '---16' => '',
789
+ '--17' => 'Shopping Action Attributes',
790
  'sell_on_google_quantity' => 'Number of Product Sold On Google [sell_on_google_quantity]',
791
  'return_address_label' => 'Return Address [return_address_label]',
792
  'return_policy_label' => 'Return Policy [return_policy_label]',
793
  'google_funded_promotion_eligibility' => 'Google Funded Promotion Eligibility [google_funded_promotion_eligibility]',
794
+ '---17' => '',
795
+ '--18' => 'Local Inventory / Product Inventory',
796
  'store_code' => 'Store Code [store_code]',
797
  'quantity' => 'Quantity [quantity]',
798
  'pickup_method' => 'Pickup Method [pickup_method]',
801
  'link_template' => 'Link Template [link_template]',
802
  'mobile_link_template' => 'Mobile Link Template [mobile_link_template]',
803
  'mobile_pickup_link_template' => 'Mobile Pickup Link Template [mobile_pickup_link_template]',
804
+ '---18' => '',
805
  );
806
  }
807
 
includes/classes/class-woo-feed-products-v3.php CHANGED
@@ -3863,7 +3863,7 @@ class Woo_Feed_Products_v3
3863
  $getproductattribute = implode(',', wc_get_product_terms($id, $attr, array('fields' => 'names')));
3864
  }
3865
 
3866
- return apply_filters('woo_feed_filter_product_attribute', $getproductattribute, $product, $this->config);
3867
  }
3868
 
3869
  /**
3863
  $getproductattribute = implode(',', wc_get_product_terms($id, $attr, array('fields' => 'names')));
3864
  }
3865
 
3866
+ return apply_filters('woo_feed_filter_product_attribute', $getproductattribute, $product, $attr, $this->config);
3867
  }
3868
 
3869
  /**
includes/feeds/class-woo-feed-review.php CHANGED
@@ -240,6 +240,7 @@ class Woo_Feed_Review {
240
  array(
241
  'post_id' => $id,
242
  'post_type' => 'product',
 
243
  )
244
  );
245
 
@@ -247,13 +248,24 @@ class Woo_Feed_Review {
247
 
248
  if ( $reviews && is_array($reviews) ) {
249
  foreach ( $reviews as $single_review ) {
250
- $review['review']['review_id'] = $single_review->comment_ID;
251
- $review['review']['reviewer']['name'] = $single_review->comment_author;
252
- $review['review']['reviewer']['reviewer_id'] = $single_review->user_id;
253
- $review['review']['content'] = $single_review->comment_content;
254
- $review['review']['review_timestamp'] = $single_review->comment_date_gmt;
255
- $review['review']['review_url'] = $product->get_permalink();
256
- $review['review']['ratings']["overall"] = get_comment_meta( $single_review->comment_ID, 'rating', true);
 
 
 
 
 
 
 
 
 
 
 
257
  $review['review']['products'] = array();
258
  $review['review']['products']['product'] = array();
259
 
@@ -275,6 +287,7 @@ class Woo_Feed_Review {
275
 
276
  //add prefix - suffix to attribute value
277
  $attributeValue = $prefix . $attributeValue . $suffix;
 
278
 
279
  if ( "review_temp_gtin" === $merchant_attribute ) {
280
  $review['review']['products']['product']['product_ids']['gtins']['gtin'] = $attributeValue;
@@ -287,7 +300,7 @@ class Woo_Feed_Review {
287
  } else {
288
  $review['review']['products']['product'][ $merchant_attribute ] = $attributeValue;
289
  }
290
- }
291
 
292
  array_push($feed['reviews'], $review);
293
  }
240
  array(
241
  'post_id' => $id,
242
  'post_type' => 'product',
243
+ 'parent' => 0
244
  )
245
  );
246
 
248
 
249
  if ( $reviews && is_array($reviews) ) {
250
  foreach ( $reviews as $single_review ) {
251
+ $review_content = $single_review->comment_content;
252
+ $rating = get_comment_meta( $single_review->comment_ID, 'rating', true);
253
+ $review_content = woo_feed_strip_all_tags(wp_specialchars_decode($review_content));
254
+ $review_content = preg_replace('/[^A-Za-z0-9-]/', ' ', $review_content);;
255
+ $review_content = !empty($review_content) ? "<![CDATA[" . woo_feed_strip_all_tags(wp_specialchars_decode($review_content)) . "]]>" : "";
256
+ $review_product_url = !empty($product->get_permalink()) ? "<![CDATA[" . $product->get_permalink() . "]]>" : "";
257
+ $review_id = !empty($single_review->comment_ID) ? "<![CDATA[" . $single_review->comment_ID . "]]>" : "";
258
+ $review_author = !empty($single_review->comment_author) ? "<![CDATA[" . $single_review->comment_author . "]]>" : "";
259
+ $review_user_id = !empty($single_review->user_id) ? "<![CDATA[" . $single_review->user_id . "]]>" : "";
260
+ $review_time = !empty($single_review->comment_date_gmt) ? "<![CDATA[" . $single_review->comment_date_gmt . "]]>" : "";
261
+
262
+ $review['review']['review_id'] = $review_id;
263
+ $review['review']['reviewer']['name'] = $review_author;
264
+ $review['review']['reviewer']['reviewer_id'] = $review_user_id;
265
+ $review['review']['content'] = $review_content;
266
+ $review['review']['review_timestamp'] = $review_time;
267
+ $review['review']['review_url'] = $review_product_url;
268
+ $review['review']['ratings']["overall"] = $rating;
269
  $review['review']['products'] = array();
270
  $review['review']['products']['product'] = array();
271
 
287
 
288
  //add prefix - suffix to attribute value
289
  $attributeValue = $prefix . $attributeValue . $suffix;
290
+ $attributeValue = !empty($attributeValue) ? "<![CDATA[" . $attributeValue . "]]>" : "";
291
 
292
  if ( "review_temp_gtin" === $merchant_attribute ) {
293
  $review['review']['products']['product']['product_ids']['gtins']['gtin'] = $attributeValue;
300
  } else {
301
  $review['review']['products']['product'][ $merchant_attribute ] = $attributeValue;
302
  }
303
+ }
304
 
305
  array_push($feed['reviews'], $review);
306
  }
includes/helper.php CHANGED
@@ -3749,6 +3749,18 @@ if (!function_exists('woo_feed_filter_woocommerce_structured_data_product')) {
3749
  }
3750
  }
3751
 
 
 
 
 
 
 
 
 
 
 
 
 
3752
  // Check if we have mpn data.
3753
  if ('enable' === $disable_mpn && !empty($mpn)) {
3754
  $mpn = $product->get_meta('woo_feed_mpn');
3749
  }
3750
  }
3751
 
3752
+ //get price and currency to work with all the compatible currency plugin
3753
+ $price = $product->get_price();
3754
+ $currency = get_woocommerce_currency();
3755
+
3756
+ //filter schema price & currency
3757
+ $price = apply_filters('woo_feed_schema_product_price', $price, $markup, $product);
3758
+ $currency = apply_filters('woo_feed_schema_product_currency', $currency, $markup, $product);
3759
+ $markup['offers'][0]['price'] = $price;
3760
+ $markup['offers'][0]['priceSpecification']['price'] = $price;
3761
+ $markup['offers'][0]['priceSpecification']['priceCurrency'] = $currency;
3762
+ $markup['offers'][0]['priceCurrency'] = $currency;
3763
+
3764
  // Check if we have mpn data.
3765
  if ('enable' === $disable_mpn && !empty($mpn)) {
3766
  $mpn = $product->get_meta('woo_feed_mpn');
languages/woo-feed.pot CHANGED
@@ -16,7 +16,7 @@ msgstr ""
16
  msgid "Unauthorized Action."
17
  msgstr ""
18
 
19
- #: woo-feed.php:141, woo-feed.php:260, includes/helper.php:853, includes/helper.php:1904, includes/helper.php:2949, includes/helper.php:2978, includes/helper.php:3366, includes/helper.php:3564, includes/helper.php:3592, includes/helper.php:4833, includes/helper.php:5342
20
  msgid "Invalid Request."
21
  msgstr ""
22
 
@@ -709,31 +709,31 @@ msgstr ""
709
  msgid "Choose from the most used"
710
  msgstr ""
711
 
712
- #: includes/helper.php:4521
713
  msgid "Option Successfully Added."
714
  msgstr ""
715
 
716
- #: includes/helper.php:4512
717
  msgid "Option Already Added."
718
  msgstr ""
719
 
720
- #: includes/helper.php:5247
721
  msgid "Delivery up to 30 days"
722
  msgstr ""
723
 
724
- #: includes/helper.php:5245
725
  msgid "Delivery 1 to 3 days"
726
  msgstr ""
727
 
728
- #: includes/helper.php:5350
729
  msgid "Feed data is empty. Can't duplicate feed."
730
  msgstr ""
731
 
732
- #: includes/helper.php:5366
733
  msgid "Unable to save the duplicate feed data."
734
  msgstr ""
735
 
736
- #: includes/helper.php:5376
737
  msgid "Feed Successfully Duplicated, but unable to generate the data file. Please click the \"Regenerate Button\""
738
  msgstr ""
739
 
16
  msgid "Unauthorized Action."
17
  msgstr ""
18
 
19
+ #: woo-feed.php:141, woo-feed.php:260, includes/helper.php:853, includes/helper.php:1904, includes/helper.php:2949, includes/helper.php:2978, includes/helper.php:3366, includes/helper.php:3564, includes/helper.php:3592, includes/helper.php:4845, includes/helper.php:5354
20
  msgid "Invalid Request."
21
  msgstr ""
22
 
709
  msgid "Choose from the most used"
710
  msgstr ""
711
 
712
+ #: includes/helper.php:4533
713
  msgid "Option Successfully Added."
714
  msgstr ""
715
 
716
+ #: includes/helper.php:4524
717
  msgid "Option Already Added."
718
  msgstr ""
719
 
720
+ #: includes/helper.php:5259
721
  msgid "Delivery up to 30 days"
722
  msgstr ""
723
 
724
+ #: includes/helper.php:5257
725
  msgid "Delivery 1 to 3 days"
726
  msgstr ""
727
 
728
+ #: includes/helper.php:5362
729
  msgid "Feed data is empty. Can't duplicate feed."
730
  msgstr ""
731
 
732
+ #: includes/helper.php:5378
733
  msgid "Unable to save the duplicate feed data."
734
  msgstr ""
735
 
736
+ #: includes/helper.php:5388
737
  msgid "Feed Successfully Duplicated, but unable to generate the data file. Please click the \"Regenerate Button\""
738
  msgstr ""
739
 
woo-feed.php CHANGED
@@ -10,7 +10,7 @@
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
- * Version: 4.4.48
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
10
  * Plugin Name: CTX Feed
11
  * Plugin URI: https://webappick.com/
12
  * Description: Easily generate woocommerce product feed for any marketing channel like Google Shopping(Merchant), Facebook Remarketing, Bing, eBay & more. Support 100+ Merchants.
13
+ * Version: 4.4.51
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2