CTX Feed – WooCommerce Product Feed Manager Plugin - Version 4.3.62

Version Description

(2021-04-07) = * Fixed: Performance Enhancement. * Fixed: Junk Cleaned.

Download this release

Release Info

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

Code changes from version 4.3.61 to 4.3.62

README.txt CHANGED
@@ -5,7 +5,7 @@ Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Cata
5
  Requires at least: 3.6
6
  Tested Up To: 5.7
7
  Requires PHP: 5.6
8
- Stable tag: 4.3.61
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -498,6 +498,10 @@ Using pro version:
498
 
499
  == Changelog ==
500
 
 
 
 
 
501
  = 4.3.61 (2021-04-06) =
502
  * Added: Google product review template has been added - (beta test).
503
  * Fixed: PHP Warning: min() lowest shipping price issue fixed.
5
  Requires at least: 3.6
6
  Tested Up To: 5.7
7
  Requires PHP: 5.6
8
+ Stable tag: 4.3.62
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
498
 
499
  == Changelog ==
500
 
501
+ = 4.3.62 (2021-04-07) =
502
+ * Fixed: Performance Enhancement.
503
+ * Fixed: Junk Cleaned.
504
+
505
  = 4.3.61 (2021-04-06) =
506
  * Added: Google product review template has been added - (beta test).
507
  * Fixed: PHP Warning: min() lowest shipping price issue fixed.
admin/partials/templates/google_product_review.txt DELETED
@@ -1,22 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <feed xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
3
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
- xsi:noNamespaceSchemaLocation=
5
- "http://www.google.com/shopping/reviews/schema/product/2.3/product_reviews.xsd">
6
- <version>2.3</version>
7
- <aggregator>
8
- <name>{AggreeGator}</name>
9
- </aggregator>
10
- <publisher>
11
- <name>{RetailerName}</name>
12
- </publisher>
13
- <reviews>
14
- <title><![CDATA[ {BlogName} ]]></title>
15
- <link><![CDATA[ {BlogURL} ]]></link>
16
- <description><![CDATA[ {BlogDescription} ]]></description>
17
- <updated_at>{DateTimeNow}</updated_at>
18
- <review>
19
- {separator}
20
- </review>
21
- </reviews>
22
- </feed>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/classes/class-woo-feed-dropdown.php CHANGED
@@ -604,19 +604,19 @@ class Woo_Feed_Dropdown {
604
  $attributes['---6'] = '';
605
  }
606
 
607
- $_meta_keys = $this->getProductMetaKeys();
608
- if ( ! empty( $_meta_keys ) && is_array( $_meta_keys ) ) {
609
- $attributes['--7'] = esc_html__( 'Custom Fields & Post Metas', 'woo-feed' );
610
- $attributes = $attributes + $_meta_keys;
611
- $attributes['---7'] = '';
612
- }
613
-
614
- $_taxonomies = $this->getAllTaxonomy();
615
- if ( ! empty( $_taxonomies ) && is_array( $_taxonomies ) ) {
616
- $attributes['--8'] = esc_html__( 'Custom Taxonomies', 'woo-feed' );
617
- $attributes = $attributes + $_taxonomies;
618
- $attributes['---8'] = '';
619
- }
620
 
621
  return $attributes;
622
  }
604
  $attributes['---6'] = '';
605
  }
606
 
607
+ // $_meta_keys = $this->getProductMetaKeys();
608
+ // if ( ! empty( $_meta_keys ) && is_array( $_meta_keys ) ) {
609
+ // $attributes['--7'] = esc_html__( 'Custom Fields & Post Metas', 'woo-feed' );
610
+ // $attributes = $attributes + $_meta_keys;
611
+ // $attributes['---7'] = '';
612
+ // }
613
+ //
614
+ // $_taxonomies = $this->getAllTaxonomy();
615
+ // if ( ! empty( $_taxonomies ) && is_array( $_taxonomies ) ) {
616
+ // $attributes['--8'] = esc_html__( 'Custom Taxonomies', 'woo-feed' );
617
+ // $attributes = $attributes + $_taxonomies;
618
+ // $attributes['---8'] = '';
619
+ // }
620
 
621
  return $attributes;
622
  }
includes/feeds/class-woo-feed-review.php CHANGED
@@ -20,33 +20,6 @@ class Woo_Feed_Review {
20
  */
21
  public $products;
22
 
23
- /**
24
- * This variable is responsible for holding feed configuration form values
25
- *
26
- * @since 1.0.0
27
- * @var array $rules Contains feed configuration form values
28
- * @access public
29
- */
30
- public $rules;
31
-
32
- /**
33
- * This variable is responsible for mapping store attributes to merchant attribute
34
- *
35
- * @since 1.0.0
36
- * @var array $mapping Map store attributes to merchant attribute
37
- * @access public
38
- */
39
- public $mapping;
40
-
41
- /**
42
- * This variable is responsible for generate error logs
43
- *
44
- * @since 1.0.0
45
- * @var array $errorLog Generate error logs
46
- * @access public
47
- */
48
- public $errorLog;
49
-
50
  /**
51
  * This variable is responsible for making error number
52
  *
@@ -145,6 +118,11 @@ class Woo_Feed_Review {
145
  return $feed;
146
  }
147
 
 
 
 
 
 
148
  public function get_products_with_reviews() {
149
  $args = array(
150
  'post_type' => 'product',
@@ -209,6 +187,12 @@ class Woo_Feed_Review {
209
  return $data;
210
  }
211
 
 
 
 
 
 
 
212
  public function processReviewsData($config) {
213
  $ids = $this->ids;
214
 
@@ -221,7 +205,6 @@ class Woo_Feed_Review {
221
  if( $ids && is_array($ids) ) {
222
  foreach($ids as $id) {
223
  $product = wc_get_product($id);
224
- // error_log( print_r( $product, true ) );
225
 
226
  $reviews = get_comments(
227
  array(
20
  */
21
  public $products;
22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  /**
24
  * This variable is responsible for making error number
25
  *
118
  return $feed;
119
  }
120
 
121
+ /**
122
+ * Get products having reviews
123
+ *
124
+ * @return array $ids product ids
125
+ */
126
  public function get_products_with_reviews() {
127
  $args = array(
128
  'post_type' => 'product',
187
  return $data;
188
  }
189
 
190
+ /**
191
+ * Process Reviews Data
192
+ *
193
+ * @param mixed $config feed configuration
194
+ *
195
+ */
196
  public function processReviewsData($config) {
197
  $ids = $this->ids;
198
 
205
  if( $ids && is_array($ids) ) {
206
  foreach($ids as $id) {
207
  $product = wc_get_product($id);
 
208
 
209
  $reviews = get_comments(
210
  array(
languages/README.txt DELETED
@@ -1,1909 +0,0 @@
1
- === CTX Feed - WooCommerce Product Feed Generator ===
2
- Contributors: wahid0003, webappick, mhamudul_hk, shuvo586, nayanchamp7
3
- Donate link: https://webappick.com
4
- Tags: Product Feed, WooCommerce, Google Shopping, Google Merchant, Facebook Catalog, Bing Shopping, Instagram Shop, Skroutz Data Feed, xml feed, csv feed, txt feed, woocommerce product feed
5
- Requires at least: 3.6
6
- Tested Up To: 5.7
7
- Requires PHP: 5.6
8
- Stable tag: 4.3.60
9
- License: GPLv2 or later
10
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
-
12
- Generate error-free woocommerce product feed for any marketing channel like Google Shopping, Facebook Catalog, Bing, Pinterest, Instagram & 100+ more channels.
13
-
14
- == Description ==
15
- Easily create the most optimized and error-free product feeds for your WooCommerce store targeting the leading global and local product marketing channels like Google Shopping or Google Merchant, Facebook Dynamic Product Ads, Instagram Shopping Ads, Pinterest Shopping Ads, eBay Ads, Bing Ads, PriceRunner, Rakuten, PriceSpy, Kelko, and more.
16
-
17
- **WooCommerce Product Feed Pro (CTX Feed)** is a WooCommerce product feed generator plugin for WooCommerce powered stores. This plugin currently supports more than 100+ marketing channels. So, you can target your desired marketing channels, price comparison sites, and/or affiliate networks.
18
-
19
- It aims to reduce your hardship on marketing efforts to create product feeds and distribute them in multiple marketing/shopping channels. There are flexible options to update product information according to your given schedule and sync the update to the right channel via HTTP or FTP. Stay at ease knowing that your customers will automatically get the latest product information.
20
-
21
- **UNLIMITED PRODUCTS**
22
-
23
- You can create product feed for unlimited products. No matter how many products you have in your WooCommerce Store, this WooCommerce product feed plugin can generate product feed for any number of products.
24
-
25
- **UNLIMITED FEED**
26
-
27
- Create unlimited product feeds for multiple channels of your preference. There is no restriction on creating the product feed for the available online channels.
28
-
29
- **WHAT IS PRODUCT FEED?**
30
-
31
- The product feed is an XML, TXT, CSV, XLS, or TSV file that contains a list of product information and their attributes (id, title, description, price, image, link, and other attributes) in an organized way so that each product can be displayed into search engines, compared uniquely and can be advertised.
32
-
33
- **WHY DO I NEED PRODUCT FEED?**
34
-
35
- You need a product feed if you are a retailer with an eCommerce store and want to get your products into the search engine or price comparison website or affiliate network. Product feed supply your product information to those online marketing channels so that buyer can easily find your products.
36
- <blockquote>
37
- <h4>Read Step by Step <a target="_blank" href="https://webappick.com/docs/woocommerce-product-feed/">Documentation</a> and <a target="_blank" href="https://www.youtube.com/playlist?list=PLapCcXJAoEenI-35wc6YnnsAAgoYRxDr7">Video Tutorial</a></h4>
38
- <br/>
39
- <h4>For Support Email to <a href="mailto:support@webappick.com">support[@]webappick.com</a> </h4>
40
- <br/>
41
- <h4>REQUEST NEW FEATURE <a target="_blank" href="https://webappick.com/contact/">HERE</a></h4>
42
- <br/>
43
- <h4>PREMIUM VERSION: <a target="_blank" href="https://webappick.com/plugin/woocommerce-product-feed-pro/">WOOCOMMERCE PRODUCT FEED PRO</a></h4>
44
- <br/>
45
- </blockquote>
46
-
47
-
48
- **WHY SHOULD I CHOSE THIS PLUGIN?**
49
-
50
- In a word, WooCommerce Product Feed is a revolution. Yeah, it's a revolution of WooCommerce product feed technology because there are no modules or extensions that generate automatic or manual product feeds that can synchronize flexibility to shopping channels maintained by people with not much technical knowledge about WordPress. Among the thousands of reasons for choosing this WordPress plugin, we have mentioned a few of them below.
51
-
52
- **Google Merchant Feed Upload**
53
- [youtube https://www.youtube.com/watch?v=PTUYgF7DwEo]
54
-
55
- **EASY USER INTERFACE:**
56
-
57
- Creating the product feed and navigating the ctx feed plugin option is easy. Anyone can operate this product feed plugin without having any technical knowledge. You will get all the feed configuration in one window. There is no need to open a separate window to customize any field or option of the plugin.
58
-
59
- **PRODUCT TYPES:**
60
-
61
- Supports all default WooCommerce product types including bundle product, composite product, mix & match product, and subscription product by other plugins. Supported product types plugins are below:
62
-
63
- * <a target="_blank" href="https://woocommerce.com/products/composite-products/">WooCommerce Composite Products</a>
64
- * <a target="_blank" href="https://yithemes.com/themes/plugins/yith-woocommerce-composite-products/">YITH Composite Products</a>
65
- * <a target="_blank" href="https://wordpress.org/plugins/wpc-composite-products/">WPC Composite Products for WooCommerce</a>
66
- * <a target="_blank" href="https://woocommerce.com/products/product-bundles/">WooCommerce Product Bundles</a>
67
- * <a target="_blank" href="https://wordpress.org/plugins/yith-woocommerce-product-bundles/">YITH WooCommerce Product Bundles</a>
68
- * <a target="_blank" href="https://wordpress.org/plugins/woo-product-bundle/">WPC Product Bundles for WooCommerce</a>
69
- * <a target="_blank" href="https://woocommerce.com/products/woocommerce-subscriptions/">WooCommerce Subscription</a>
70
-
71
- **PRODUCT VARIABLE & VARIATION:**
72
-
73
- The free version of this product feed plugin automatically adds variable products and product variation. If a variable product has four variations, then the plugin will add five products to the product feed, including one product for the variable product (parent of the variations) and four products for variations.
74
-
75
- There is an option on the <a target="_blank" href="https://webappick.com/plugin/woocommerce-product-feed-pro/">CTX Feed Pro</a> version there you can exclude the variations or the variable products or you can keep both the variable and product variations.
76
-
77
- **BUILTIN TEMPLATE:**
78
-
79
- There are more than 100+ pre-configured templates to give you a quick start. Those platform-specific templates will help you create perfect WooCommerce product feeds without wasting valuable time. Apart from saving time, the templates also keep you on the safe side with perfectly formatted product feed templates.
80
-
81
- **CUSTOM TEMPLATE:**
82
-
83
- If a template is not available in our plugin, you can use the Custom Template to create any product feed for any channel. We can also add your channel as a template if you send your channels feed requirements to <a target="_blank" href="https://webappick.com/contact/">ctx feed support team</a>.
84
-
85
- **PRODUCT ATTRIBUTES:**
86
-
87
- You can include all the product attributes available in your product to make a complete product feed. You can make the product feed as detailed as possible.
88
-
89
- **OUTPUT TYPES:**
90
-
91
- You can modify or format the output of any product attribute value with these options below:
92
-
93
- * **Strip tags**: You can remove HTML tags from the product description.
94
-
95
- * **Integer**: You can format a rounded value of any number or product price.
96
-
97
- * **Price**: You can apply a number format to any number or product price.
98
-
99
- * **Rounded Price**: You can apply a round format to any number or product price.
100
-
101
- * **Remove Space**: You can remove double spaces from any attribute value.
102
-
103
- * **Remove Shortcodes**: You can remove shortcodes from the product title, description, or short description, etc.
104
-
105
- * **Remove Special Characters**: Sometimes non-UTF-8 characters are copied when you copy product description from any other source. You can remove these non-UTF-8 characters with this output type.
106
-
107
- * **CDATA**: CDATA protect any string from conflict between XML element and element value. Adding CDATA is a good practice for XML feed.
108
-
109
- * **ucfirst**: Make any string’s first character uppercase.
110
-
111
- * **ucwords**: Uppercase the first character of each word in the string.
112
-
113
- * **strtoupper**: Transform any string to upper case.
114
-
115
- * **strtolower**: Transform any string to lower case.
116
-
117
- * **urlToSecure**: Convert the URL to Secure HTTPS format.
118
-
119
- * **urlToUnsecure**: Convert the URL to HTTP format.
120
-
121
- * **only_parent**: Only add a variable product info to variation.
122
-
123
- * **parent**: Add variable product info to an attribute if variable value is not empty else add variation info.
124
-
125
- * **parent_if_empty**: Add variable product info to an attribute if the variation info is empty.
126
-
127
- * **Google Date Format**: Format date according to google merchant required format [Date and time, ISO 8601 compliant (YYYY-MM-DD, YYYY-MM-DDThh:mm:ss, or YYYY-MM-DDThh:mm:ssZ)].
128
-
129
- * Total 18 types of output formatting option available
130
-
131
- **PREFIX & SUFFIX:**
132
-
133
- You can add your preferred prefix and suffix to any product attribute value. For example, if you want to add the currency code with the price, then you can enter the currency code either on prefix or suffix according to your channel requirement.
134
-
135
- **STATIC VALUE:**
136
-
137
- You can easily add the same information as a static value to a merchant attribute for all the products. For example, when you add store code to your google local inventory feed, you need to add the same value to your products.
138
-
139
- **CATEGORY MAPPING:**
140
-
141
- Categories are the essential key to get products into search results. It is best practice to assign the most matching shopping engine category to your WooCommerce store category for each product. During the creation of your WooCommerce product feeds, you can also create a category for that particular product. And after creating the category, you’ll get an option to map it to your marketplace category so that you can make two categories aligned to each other. This feature is mostly used for Google Shopping feed and Facebook/Instagram product feed. The process is dynamic by our plugin & you can map all of your categories to make them more relevant & reachable to buyers.
142
-
143
- **BATCH FEED MAKING:**
144
-
145
- Due to PHP execution time and memory limit, it's not possible to process Thousands of products at a time. We have developed the ctx feed plugin with the functionality to make feed with batches. Users can easily set Limit and Offset to make feed. This functionality is compatible with any WordPress Hosting and any number of products you have on your site.
146
-
147
- **WP OPTIONS:**
148
-
149
- You will love the ability to include any wp-options values into the Product feed. Your store must have lots of other plugins, and all those WooCommerce plugins save data as an option. We have made it simple to add WP Options value into your WooCommerce product feed.
150
-
151
- **AUTO FEED UPDATE:**
152
-
153
- This WooCommerce Date Feed plugin automatically updates the product feed according to your given interval so that your product data will always be up to date —no need to manually update the feed.
154
-
155
- Due to product quantity (total products) and server configuration, the auto-feed update may not complete the update operation. For this reason, our plugin processes the products in small batches to make feed for unlimited products. But the auto-update operation process all the products at a time. So it may not work if your site has thousands of products. But you can quickly solve this issue by increasing the PHP execution_time (Time Limit) of your server.
156
-
157
- **GOOGLE PRODUCT FEED:**
158
-
159
- WooCommerce. With this woocommerce data feed Plugin, you can create a product feed by selecting the Google product feed template. Our pre-built google product feed template includes all the fields (Brand, GTIN, MPN, Product condition, etc.) that match the Google Product Feed requirements.
160
-
161
- According to your feed configuration, this woocommerce data feed plugin automatically identifies the value for identifier_exist attribute based on Brand, GTIN, and MPN value.
162
-
163
- Google Shopping product feed template automatically formats all the google product feed attribute structure according to <a target="_blank" href="https://support.google.com/merchants/answer/7052112?hl=en">Google Product Feed</a> requirements.
164
-
165
- **GOOGLE CANONICAL URL:**
166
-
167
- When you sell your woocommerce product with a different color variant, you may use the canonical_link attribute to submit the URL for each variant.
168
-
169
- Then comes the canonical_link attribute that redirects all the variants to the main product's landing page that does not include any variant. Google's web search crawler identifies the URLs that link to a single base product that does not have any pre-selected parameters.
170
-
171
- **GOOGLE SHIPPING & TAX:**
172
-
173
- CTX Feed plugin allows you to place the shipping zone and shipping class accurately so that your Google Shopping product feed includes the correct shipping information (shipping country, region, service, postal_code, price). Our plugin utilizes your configured shipping zone settings for a proper representation. Along with WooCommerce Shipping this WooCommerce Google Product Feed plugin also compatible with <a target="_blank" href="https://codecanyon.net/item/table-rate-shipping-for-woocommerce/3796656">Table Rate Shipping</a> plugin by BolderElement.
174
-
175
- **GOOGLE ANALYTICS UTM PARAMETER:**
176
-
177
- WooCommerce Product Feed plugin has an option to include Google Analytics UTM parameters to the product URLs that will help you evaluate your marketing channels' performance via Google Analytics.
178
-
179
- **GOOGLE DYNAMIC REMARKETING:**
180
-
181
- Google Dynamic remarketing event snippet collects data about specific searches related to a product and represents personalized ads by matching them with your product feed.
182
-
183
- Our plugin allows you to add Google Dynamic Remarketing event snippets across different pages of your website and enable the basic remarketing features of Google Remarketing Tracking.
184
-
185
- **TABLE RATE SHIPPING:**
186
-
187
- This plugin supports the WooCommerce Table Rate shipping by bolder element.
188
-
189
- **FACEBOOK CATALOG / INSTAGRAM SHOPPING FEED:**
190
-
191
- Facebook Catalog and Instagram have their own set of requirements that you need to follow to make a Facebook product feed or Instagram Shop feed. The attributes included in WooCommerce is not enough for Facebook Product Feed and Instagram Shop Feed.
192
-
193
- With our Plugin, you can easily create a product feed by selecting the Facebook Catalog / Instagram template. We have included a pre-built Facebook Catalog Feed / Instagram Shop Feed template that includes all the required Facebook and Instagram attributes.
194
-
195
- **FACEBOOK PIXEL TRACKING:**
196
-
197
- With this plugin, you can integrate Facebook pixel code on your website and match it with the Facebook catalog/ Instagram product feed contents.
198
-
199
- You can add Facebook Pixel events for Product pages, simple product page, variable product page, both Simple and Variable page, Category pages, Search result pages, All AddToCart events (cart page, cart button), Thank you Page
200
-
201
- **PINTEREST SHOPPING PRODUCT FEED:**
202
-
203
- With the Pinterest Product Feed template, you can easily create a product feed for woocommerce. We have included a pre-built Pinterest Feed template that includes all the Pinterest product feed attributes.
204
-
205
- **BING SHOPPING PRODUCT FEED:**
206
-
207
- With this plugin, you can create a Bing Shopping product feed by selecting the pre-made Bing Shopping Feed template. The Bing Shopping template includes all the necessary attributes that are required by Bing Shopping.
208
-
209
- **DYNAMIC DISCOUNT & PRICING**
210
-
211
- Our plugin automatically discounted price applied by any Dynamic Discount & Pricing Plugin.
212
-
213
- **SEO TITLE & META DESCRIPTION**
214
-
215
- CTX Feed plugin is compatible with three top-rated / most popular SEO plugins. You can assign SEO Meta Title and Meta Description instead of Product Title and Description if you want. Supported plugins are:
216
-
217
- * <a target="_blank" href="https://wordpress.org/plugins/wordpress-seo/">Yoast SEO</a>.
218
- * <a target="_blank" href="https://wordpress.org/plugins/all-in-one-seo-pack/">All in one SEO</a>.
219
- * <a target="_blank" href="https://wordpress.org/plugins/seo-by-rank-math/">Rank Math SEO</a>.
220
-
221
- **BUILTIN PLUGIN CACHE**
222
-
223
- The built-in caching feature of our WooCommerce product feed plugin reduces the server load so that you can generate a product feed without requesting multiple database queries.
224
-
225
- <blockquote>
226
- <h4>If you like Free Version, you'll love the Pro Version</h4>
227
- <br/>
228
- <h4><a target="_blank" href="http://webappick.com/plugin/woocommerce-product-feed-pro/">WooCommerce Product Feed Pro</a> gives you everything you'll find in free and some awesome features described below.</h4>
229
- <br/>
230
- <br/>
231
- </blockquote>
232
-
233
-
234
- **PRODUCT BRAND (PRO FEATURE)**
235
-
236
- CTX Feed Pro plugin has an option to add product brands. You can even add other brand plugins data for brands of your preference. The supported brand plugins are listed below:
237
-
238
- * <a target="_blank" href="https://woocommerce.com/products/brands/">WooCommerce Brands</a>
239
- * <a target="_blank" href="https://wordpress.org/plugins/perfect-woocommerce-brands/">Perfect Brands for WooCommerce</a>
240
- * <a target="_blank" href="https://wordpress.org/plugins/yith-woocommerce-brands-add-on/">YITH WooCommerce Brands Add-On</a>
241
- * <a target="_blank" href="https://codecanyon.net/item/ultimate-woocommerce-brands-plugin/9433984">Ultimate WooCommerce Brands Plugin</a>
242
-
243
- **DYNAMIC ATTRIBUTE (PRO FEATURE)**
244
-
245
- The Dynamic Attribute combines the powerful features of the WooCommerce Product Feed Pro with the ability to set your conditions for any attribute. Different types of WooCommerce users have different types & classes of products and services. So, they may need a variety of custom values to demonstrate their products. And we are giving the options to make dynamic attributes as your need. It is also possible to generate the data feed file according to the search engine's requirements without changing your store's attributes.
246
-
247
- **SMART FILTER & CONDITION (PRO FEATURE)**
248
-
249
- Smart Filters help you exclude the non-profitable or out of season products you don’t want to share. Its high filtering options help users filter products according to product titles, price, availability of stocks, user rating, and other extensive product specifications.
250
-
251
- **ATTRIBUTE MAPPING (PRO FEATURE)**
252
-
253
- The first impression becomes the last impression! For example, Your product title can build interest in the buyer to hit your product. In the e-commerce business, product titles attract customers to get on the link if they are satisfied with the search result. The extended Product Title feature allows the user to extend the title of a product by adding different attributes. Extended Product Title is a great way to differentiate the products according to their variations, such as Size, Color, Custom Text, etc.
254
-
255
- **MULTI LANGUAGE FEED - WPML & POLYLANG (PRO FEATURE)**
256
-
257
- WooCommerce Product Feed Pro is compatible with <a target="_blank" href="https://wpml.org/">WPML</a> & <a target="_blank" href="https://wordpress.org/plugins/polylang/">Polylang</a> plugin for Multi-Language Feed. And by supporting WPML & Polylang makes it possible for the woocommerce store owners to create woocommerce product feed in different languages & currencies.
258
-
259
- Multilanguage enables retailers to globalize their business in minutes because they always have a better chance of selling something if they are already selling it in the native language.
260
-
261
- **MULTI CURRENCY FEED (PRO FEATURE)**
262
-
263
- When you want to globalize the business by selling your products in different local channels of different countries, you can create the product feed with the currency according to that channel’s currency requirement.
264
-
265
- WooCommerce Product Feed Pro can create product feeds for specific currencies.
266
-
267
- * <a target="_blank" href="https://wordpress.org/plugins/woocommerce-multilingual/">WooCommerce Multilingual</a>.
268
- * <a target="_blank" href="https://polylang.pro/downloads/polylang-for-woocommerce/">Polylang WooCommerce</a>.
269
- * <a target="_blank" href="https://aelia.co/shop/currency-switcher-woocommerce/">Currency Switcher for WooCommerce</a> By Aelia.
270
- * <a target="_blank" href="https://wordpress.org/plugins/woocommerce-currency-switcher/">WooCommerce Currency Switcher (WOOCS)</a> by realmag777.
271
-
272
- **MULTI VENDOR FEED (PRO FEATURE)**
273
-
274
- Generating product feeds for your multi-vendor enabled WooCommerce store is also straightforward. You can choose multiple vendors or a single vendor while creating product feeds. The list of supported multi-vendor plugins is below.
275
-
276
- * <a target="_blank" href="https://wedevs.com/dokan">Dokan</a>.
277
- * <a target="_blank" href="https://www.wcvendors.com/">WC Vendors</a>.
278
- * <a target="_blank" href="https://wc-marketplace.com/">WC Marketplace</a>.
279
- * <a target="_blank" href="https://yithemes.com/themes/plugins/yith-woocommerce-multi-vendor/">YITH WooCommerce Multi-Vendor</a>.
280
- * <a target="_blank" href="https://wclovers.com/">WCFM Marketplace for WooCommerce</a>.
281
-
282
- **CUSTOM ATTRIBUTE (PRO FEATURE)**
283
-
284
- If you have added any custom attribute field to your product, you will get the product attribute list fields while creating a feed to assign your product's custom field value to your channel attribute.
285
-
286
- **CUSTOM FIELDS - ACF,FIELD FACTORY,ETC. (PRO FEATURE)**
287
-
288
- This plugin supports the <a target="_blank" href="https://wordpress.org/plugins/advanced-custom-fields/">Advanced Custom Field (ACF)</a> or any custom field plugin’s fields as attribute values. You can assign your custom product attribute values to any feed attribute.
289
-
290
- **PRODUCT META & TAXONOMIES (PRO FEATURE)**
291
-
292
- Product meta and taxonomies are very common, but what if you wanted to add them with your product feeds too? You can add any product taxonomies or any product meta value added by WooCommerce or any WooCommerce extension plugins into your product feeds with our support for the custom taxonomies and meta. Easily add product information like brand name, model number, and size.
293
-
294
- **AVAILABLE FEATURES:**
295
-
296
- * Unlimited number of products.
297
- * Unlimited number of feeds.
298
- * It is highly customizable, having access to 100+ merchant sites & also very responsive of user commands.
299
- * 100+ Pre configured merchant template for 200+ countries.
300
- * Feeds are accessible via HTTP or HTTPS. So that merchant can easily and automatically fetch product feed from given Feed URL.
301
- * You can post your product feeds either manually from your site to shopping engines
302
- or you can also set FTP to post your feeds automatically to your desired engines.
303
- * There are 3 supported file formats for feeds. XML, TXT, CSV.
304
- * Attribute Prefix and Suffix. You can easily add Marketing or Promo Text with Product Title, Description And its also possible to add Price symbol,currency code with price.
305
- * Output formatting using Strip Tags, UTF-8 encode, Remove Space, CDATA, Htmlentities, Price and Number format.
306
- * Output Limitation. You can Limit output length according to your merchant feed specification.
307
- * Scheduled Feed Update
308
- * Auto Feed upload via FTP
309
-
310
- **SUPPORTED CHANNELS:**
311
-
312
- * <a target="_blank" href="https://www.google.com/retail/merchant-center/">Google Shopping</a>
313
- * <a target="_blank" href="https://www.google.com/adwords/">Google AdWords</a>
314
- * <a target="_blank" href="https://www.facebook.com/business/a/online-sales/dynamic-product-ads">Facebook Catalog Feed</a>
315
- * <a target="_blank" href="https://help.pinterest.com/en/business/article/data-source-specification">Pinterest Catalog Feed </a>
316
- * <a target="_blank" href="https://advertising.amazon.com/">Amazon Seller Ad</a>
317
- * <a target="_blank" href="http://www.ebaycommercenetwork.com/">eBay Commerce Network</a>
318
- * <a target="_blank" href="http://www.nextag.com/">NexTag.com</a>
319
- * <a target="_blank" href="http://www.pricegrabber.com/">PriceGrabber.com </a>
320
- * <a target="_blank" href="https://www.kelkoo.com/">Kelkoo.com</a>
321
- * <a target="_blank" href="http://www.houzz.com/">Houzz.com</a>
322
- * <a target="_blank" href="http://www.dealtime.com">Dealtime.com</a>
323
- * <a target="_blank" href="http://www.affiliatewindow.com/uk/">Affiliatewindow.com</a>
324
- * <a target="_blank" href="http://advertise.bingads.microsoft.com/en-uk/home">Bing Ads</a>
325
- * <a target="_blank" href="http://www.idealo.de/">Idealo.de</a>
326
- * <a target="_blank" href="https://www.beslist.nl/">Beslist.nl</a>
327
- * <a target="_blank" href="https://www.ffshoppen.nl/">ffshoppen.nl</a>
328
- * <a target="_blank" href="https://www.vergelijk.nl/">vergelijk.nl</a>
329
- * <a target="_blank" href="https://siroop.ch/">siroop.ch</a>
330
- * <a target="_blank" href="https://jet.com/">Jet.com</a>
331
- * <a target="_blank" href="https://www.wish.com/">Wish.com</a>
332
- * <a target="_blank" href="http://www.bizrate.com/">bizrate.com</a>
333
- * <a target="_blank" href="http://www.shopping.com/">Shopping.com</a>
334
- * <a target="_blank" href="http://www.shopzilla.com/">Shopzilla.com</a>
335
- * <a target="_blank" href="http://www.shopmania.com/">ShopMania.com</a>
336
- * <a target="_blank" href="http://www.shop.com/">Shop.com</a>
337
- * <a target="_blank" href="https://pricespy.co.uk/">PriceSpy.co.uk</a>
338
- * <a target="_blank" href="https://www.prisjakt.nu/">Prisjakt.nu</a>
339
- * <a target="_blank" href="https://www.pricefalls.com/">Pricefalls.com</a>
340
- * <a target="_blank" href="http://www.pricerunner.co.uk/">Pricerunner.co.uk</a>
341
- * <a target="_blank" href="http://www.cj.com/">Comission Junction (cj.com)</a>
342
- * <a target="_blank" href="http://www.polyvore.com/">Polyvore.com</a>
343
- * <a target="_blank" href="https://www.fruugo.com/">Fruugo.com</a>
344
- * <a target="_blank" href="https://www.fruugoaustralia.com/">Fruugoaustralia.com</a>
345
- * <a target="_blank" href="http://opensky.com">Opensky.com</a>
346
- * <a target="_blank" href="http://11Main.com">11Main.com</a>
347
- * <a target="_blank" href="http://www.shopbot.ca/">Shopbot.ca</a>
348
- * <a target="_blank" href="http://www.twenga.com/">Twenga.com/</a>
349
- * <a target="_blank" href="http://www.wine-searcher.com/">Wine-searcher.com</a>
350
- * <a target="_blank" href="http://ammoseek.com/">Ammoseek.com</a>
351
- * <a target="_blank" href="http://www.avantlink.com/">Avantlink.com</a>
352
- * <a target="_blank" href="http://connexity.com/">Connexity.com</a>
353
- * <a target="_blank" href="http://www.linkshareuk.com/">Linkshareuk.com</a>
354
- * <a target="_blank" href="http://www.bonanza.com/">Bonanza.com</a>
355
- * <a target="_blank" href="https://www.pepperjam.com/">Pepperjam.com</a>
356
- * <a target="_blank" href="http://www.criteo.com/">Criteo.com</a>
357
- * <a target="_blank" href="https://www.pixlee.com/">Pixlee.com</a>
358
- * <a target="_blank" href="https://www.adroll.com">Adroll.com</a>
359
- * <a target="_blank" href="http://www.graziashop.com/">GraziaShop.com</a>
360
- * <a target="_blank" href="http://www.leguide.com/">Leguide.com</a>
361
- * <a target="_blank" href="http://nl.hardware.info/">Hardware.info</a>
362
- * <a target="_blank" href="http://www.pricewatch.com/">Pricewatch.com</a>
363
- * <a target="_blank" href="http://www.newegg.com/">Newegg.com</a>
364
- * <a target="_blank" href="http://www.webgains.com/">Webgains.com</a>
365
- * <a target="_blank" href="http://www.rakuten.com/">Rakuten.com</a>
366
- * <a target="_blank" href="https://www.quicksales.com.au/">Quicksales.com.au</a>
367
- * <a target="_blank" href="http://www.mysmartprice.com/">Mysmartprice.com</a>
368
- * <a target="_blank" href="http://ae.pricena.com/en/">Pricena.com</a>
369
- * <a target="_blank" href="http://www.pricejugaad.com/">Pricejugaad.com</a>
370
- * <a target="_blank" href="https://yaoota.com/en-eg/">Yaoota.com</a>
371
- * <a target="_blank" href="https://compare.buyhatke.com/">Buyhatke.com</a>
372
- * <a target="_blank" href="https://www.comparekaro.pk/">Comparekaro.pk</a>
373
- * <a target="_blank" href="http://site.adform.com">Adform.com</a>
374
- * <a target="_blank" href="https://www.polyvore.com/">Polyvore.com</a>
375
- * <a target="_blank" href="https://www.stylight.com/">Stylight.com</a>
376
- * <a target="_blank" href="https://www.spartoo.co.uk/">Spartoo.co.uk</a>
377
- * <a target="_blank" href="https://shopee.com/">Shopee</a>
378
- * <a target="_blank" href="http://www.choozen.co.uk/">Choozen</a>
379
- * <a target="_blank" href="https://www.ciao.co.uk/">Ciao</a>
380
- * <a target="_blank" href="http://www.priceminister.com/">PriceMinister.com</a>
381
- * <a target="_blank" href="https://skinflint.co.uk/">Skinflint</a>
382
- * <a target="_blank" href="https://www.rakuten.com/">Rakuten</a>
383
- * <a target="_blank" href="https://www.etsy.com/">Etsy</a>
384
- * <a target="_blank" href="https://www.bol.com/nl/index.html">Bol.com</a>
385
- * <a target="_blank" href="https://www.crowdfox.com/">CrowdFox.com</a>
386
- * <a target="_blank" href="https://www.real.de/">Real.de</a>
387
- * <a target="_blank" href="http://incurvy.co.uk/">Incurvy.co.uk</a>
388
- * <a target="_blank" href="https://de.allyouneed.com/de/">Allyouneed.com</a>
389
- * <a target="_blank" href="https://www.apomio.de/">Apomio.de</a>
390
- * <a target="_blank" href="https://www.billiger.de/">Billiger.de</a>
391
- * <a target="_blank" href="https://www.domodi.de/">Domodi.de</a>
392
- * <a target="_blank" href="https://www.fashiola.de/">Fashiola.de</a>
393
- * <a target="_blank" href="https://geizhals.de/">Geizhals.de</a>
394
- * <a target="_blank" href="http://www.guenstiger.de/">Guenstiger.de</a>
395
- * <a target="_blank" href="https://www.hood.de/">Hood.de</a>
396
- * <a target="_blank" href="https://www.ladenzeile.de/">Ladenzeile.de</a>
397
- * <a target="_blank" href="https://www.livingo.de/">Livingo.de</a>
398
- * <a target="_blank" href="https://www.medizinfuchs.de/">Medizinfuchs.de</a>
399
- * <a target="_blank" href="https://www.moebel.de/">Moebel.de</a>
400
- * <a target="_blank" href="https://www.mybestbrands.de/">Mybestbrands.de</a>
401
- * <a target="_blank" href="http://www.preis.de/">Preis.de</a>
402
- * <a target="_blank" href="https://www.restposten.de/">Restposten.de</a>
403
- * <a target="_blank" href="https://www.sparmedo.de/">Sparmedo.de</a>
404
- * <a target="_blank" href="https://www.stylelounge.de/">Stylelounge.de</a>
405
- * <a target="_blank" href="http://www.stylefruits.de/">Stylefruits.de</a>
406
- * <a target="_blank" href="https://www.marktplaats.nl/">Marktplaats.nl</a>
407
- * <a target="_blank" href="http://spartoo.nl/">Spartoo.nl</a>
408
- * <a target="_blank" href="https://www.ooshopping.nl/">Ooshopping.nl</a>
409
- * <a target="_blank" href="https://www.vergelijk.nl/">Vergelijk.nl</a>
410
- * <a target="_blank" href="https://www.kieskeurig.nl/">Kieskeurig.nl</a>
411
- * <a target="_blank" href="https://tweakers.net/">Tweakers.net</a>
412
- * <a target="_blank" href="https://www.kleding.nl/">Kleding.nl</a>
413
- * <a target="_blank" href="https://www.shopalike.it/">Shopalike.it</a>
414
- * <a target="_blank" href="https://www.trovaprezzi.it/">Trovaprezzi.it</a>
415
- * <a target="_blank" href="https://www.skroutz.gr/">Skroutz.gr</a>
416
- * <a target="_blank" href="https://www.manomano.fr/">Manomano.fr</a>
417
- * <a target="_blank" href="https://www.cdiscount.com/">Cdiscount.com</a>
418
- * <a target="_blank" href="https://www.fnac.com/">Fnac.com</a>
419
- * <a target="_blank" href="https://www.comparer.be/">Comparer.be</a>
420
- * <a target="_blank" href="https://www.cherchons.com/">Cherchons.com</a>
421
- * <a target="_blank" href="http://www.miinto.com/">Miinto.com</a>
422
- * <a target="_blank" href="https://www.ricardo.ch/">Ricardo.ch</a>
423
- * <a target="_blank" href="https://www.kauftipp.ch/">Kauftipp.ch</a>
424
- * <a target="_blank" href="https://zap.co.il/">Zap.co.il</a>
425
- * <a target="_blank" href="https://www.zalando.com/">Zalando</a>
426
- * <a target="_blank" href="https://smartly.io/">Smartly.io</a>
427
- * <a target="_blank" href="https://www.stylight.com/">Stylight.com</a>
428
- * <a target="_blank" href="https://developer.yahoo.com/nativeandsearch/guide/dynamic-product-ads/operations-dpa/">Yahoo Dynamic Product Ads</a>
429
- * <a target="_blank" href="https://www.thenextad.com/">TheNextAd.com</a>
430
- * <a target="_blank" href="https://modina.de/">Modina.de</a>
431
-
432
-
433
- **CUSTOMER SUPPORT TEAM**
434
-
435
- We’ve a dedicated team of coders and wordpress experts to make your journey to us friendlier & error free. So, if you want to use our plugin or if you are facing any problem with our plugin feel free to say us by emailing here: support@webappick.com.
436
-
437
- == Installation ==
438
-
439
- Before installing the plugin please make sure that
440
-
441
- 1. Your php version is 5.4 or greater
442
- 1. WordPress version is 3.6 or greater
443
- 1. WooCommerce version is 2.4 or greater
444
-
445
- You can also check your system status and versions from WooCommerce > System Status
446
-
447
- This section describes how to install the plugin and get it working.
448
-
449
- e.g.
450
-
451
- 1. Upload `webappick-product-feed-for-woocommerce` folder to the `/wp-content/plugins/` directory
452
- 1. Activate the plugin through the 'Plugins' menu in WordPress
453
- 1. Select 'CTX Feed' from admin menu, Click 'Make Feed'
454
- 1. Select the template and make feed
455
- 1. Done!
456
-
457
- == Frequently Asked Questions ==
458
-
459
- <blockquote>
460
- <h4>Read <a target="_blank" href="http://webappick.helpscoutdocs.com/article/17-woocommerce-product-feed">Documentation and FAQ</a></h4>
461
- <br/>
462
- <h4>For Support Email to support@webappick.com</h4>
463
- <br/>
464
- </blockquote>
465
-
466
- = which shopping engines are supported? =
467
-
468
- This plugin support all the sopping engines.
469
-
470
- = Does the plugin support product variation? =
471
-
472
- Yes
473
-
474
- = Is there any limitation to feed size? =
475
-
476
- No, You can make unlimited number of feed
477
-
478
- = What is the difference between Free and Pro Version? =
479
-
480
- Free version include all the major functions but Pro version have some awesome functionality.
481
-
482
- Using pro version:
483
-
484
- * You can filter product using price, quantity, product name
485
-
486
- * You can use custom taxonomies or other plugins taxonomy value into feed
487
-
488
- * Using Category Mapping You can map your store category with your merchant category which is very useful for visitor to find out your product into merchant site.
489
-
490
- * You can make different price for different merchant using Dynamic Attribute. Also it is possible to set different value for different product using Dynamic Attribute Conditions.
491
-
492
- == Screenshots ==
493
-
494
- 1. Manage Feed
495
- 2. Make Feed
496
- 3. Output Types
497
- 4. Category Mapping
498
-
499
- == Changelog ==
500
-
501
- = 4.3.60 (2021-04-04) =
502
- * Added: Compatibility for Pricing Deals for WooCommerce by Vark.
503
-
504
- = 4.3.59 (2021-04-02) =
505
- * Tweak: Custom Template without cdata and XML UTF-8 encoding for XML element string.
506
-
507
- = 4.3.58 (2021-04-01) =
508
- * Fixed: Conflict with XT WooCommerce Variation Swatches plugin has been solved.
509
-
510
- = 4.3.57 (2021-03-31) =
511
- * Fixed: TAB delimiter missing issue solved.
512
- * Fixed: FeedType change make wrong delimiter selected issue has been solved.
513
-
514
- = 4.3.56 (2021-03-29) =
515
- * Added: Compatibility for Discount Plugin by Orion has been added.
516
-
517
- = 4.3.55 (2021-03-28) =
518
- * Added: Addtocart in cart & product page added and removed ajax addtocart event.
519
-
520
- = 4.3.54 (2021-03-25) =
521
- * Added: Compatibility for Dynamic Pricing With Discount Rules by Acowebs.
522
- * Fixed: Pattern label updated.
523
-
524
- = 4.3.53 (2021-03-24) =
525
- * Added: Custom fields feature, custom fields should be found in the dropdown list.
526
- * Added: Taxonomies feature, taxonomies should be found in the dropdown list.
527
-
528
- = 4.3.52 (2021-03-22) =
529
- * Added: Compatibility for Discount Rules for WooCommerce by Flycart.
530
-
531
- = 4.3.51 (2021-03-18) =
532
- * Fixed: Onchange feedType to csv and txt, delimiter and enclosure doesn't show is solved.
533
-
534
- = 4.3.50 (2021-03-17) =
535
- * Tweak: WordPress 5.7 compatibility tested.
536
- * Fixed: Bundled product not appearing issue solved.
537
- * Fixed: Undefined current_price issue solved.
538
-
539
- = 4.3.49 (2021-03-16) =
540
- * Added: Compatibility for WooCommerce Bundled Products by Iconic.
541
-
542
- = 4.3.48 (2021-03-15) =
543
- * Fixed: PHP 7.4+ compatibility tested.
544
- * Fixed: Temporary codes removed.
545
-
546
- = 4.3.47 (2021-03-14) =
547
- * Added: Product full category path attribute added.
548
- * Fixed: Product local category label updated to product category.
549
-
550
- = 4.3.46 (2021-03-11) =
551
- * Fixed: Facebook pixel issue solved.
552
-
553
- = 4.3.45 (2021-03-10) =
554
- * Fixed: Modify modalova template attributes.
555
-
556
- = 4.3.44 (2021-03-09) =
557
- * Added: Modalova template added.
558
-
559
- = 4.3.43 (2021-03-08) =
560
- * Tweak: Enhancement performance.
561
- * Fixed: Cleaned junk files.
562
-
563
- = 4.3.42 (2021-03-07) =
564
- * Fixed: Undefined index feed_country issue has been solved.
565
-
566
- = 4.3.41 (2021-03-03) =
567
- * Tweak: Tested WordPress 5.7 compatibility.
568
-
569
- = 4.3.40 (2021-03-03) =
570
- * Tweak: WC_Query as default product feed query.
571
- * Fixed: Feed attribute change issue fixed.
572
-
573
- = 4.3.39 (2021-03-02) =
574
- * Added: Added filter for all product attributes.
575
-
576
- = 4.3.38 (2021-02-28) =
577
- * Tweak: Rakuten.de template updated.
578
-
579
- = 4.3.37 (2021-02-25) =
580
- * Fixed: Status page product count issue fixed.
581
-
582
- = 4.3.36 (2021-02-24) =
583
- * Added: Additional images in google and facebook default attributes list has been added.
584
-
585
- = 4.3.35 (2021-02-22) =
586
- * Added: Click button to copy status in status page has been added.
587
-
588
- = 4.3.34 (2021-02-18) =
589
- * Added: Wine Searcher template added.
590
-
591
- = 4.3.33 (2021-02-17) =
592
- * Added: WP options feature added where wordpress built-in options can be set from the WP Options page and can be found in the product attribute dropdown list.
593
- * Added: Product custom attributes in product attribute dropdown list.
594
-
595
- = 4.3.32 (2021-02-16) =
596
- * Added: Auto exclude url addition for caching plugins.
597
-
598
- = 4.3.31 (2021-02-14) =
599
- * Added: Woo Feed to new name CTX Feed.
600
- * Added: Status page new look with all product counter.
601
-
602
- = 4.3.30 (2021-02-11) =
603
- * Added: WooCommerce latest version(5.0.0) compatibility.
604
- * Tweak: Updated doc links.
605
- * Tweak: Updated topbar links.
606
-
607
- = 4.3.29 (2021-02-10) =
608
- * Added: Open feed file button in edit feed page.
609
-
610
- = 4.3.28 (2021-02-07) =
611
- * Fixed: GTIN/MPN/EAN disabled hide inputs at edit product page.
612
-
613
- = 4.3.27 (2021-02-03) =
614
- * Fixed: Input request issues fixed.
615
-
616
- = 4.3.26 (2021-02-03) =
617
- * Added: WooCommerce latest version(4.9) compatibility.
618
- * Fixed: Performance enhancement.
619
- * Fixed: Junk cleaned.
620
-
621
- = 4.3.25 (2021-02-01) =
622
- * Added: Date format in output type.
623
-
624
- = 4.3.23 (2021-01-28) =
625
- * Fixed: Class Woo_Feed_Log_Handler_File not exist solved.
626
-
627
- = 4.3.22 (2021-01-26) =
628
- * Added: Snapchat template added.
629
-
630
- = 4.3.21 (2021-01-21) =
631
- * Added: Output type Rounded price added.
632
-
633
- = 4.3.20 (2021-01-19) =
634
- * Fixed: Idealo article number default attribute to product id.
635
-
636
- = 4.3.19 (2021-01-18) =
637
- * Fixed: Uncaught error get_title issue solved.
638
-
639
- = 4.3.18 (2021-01-12) =
640
- * Tweak: Removing cache during plugin deactivation.
641
- * Tweak: Attribute positioning for yoast, rankmath, all in one seo plugin.
642
-
643
- = 4.3.17 (2021-01-11) =
644
- * Fixed: Google local and inventory g prefix issue solved.
645
- * Fixed: Edit page file type change issue solved.
646
- * Tweak: Idealo shipping_cost value as default.
647
-
648
- = 4.3.16 (2021-01-10) =
649
- * Added: Dynamic shipping and tax for Google, Facebook, Pinterest, Snapchat feed.
650
- * Added: Shipping cost attributes.
651
-
652
- = 4.3.15 (2020-12-29) =
653
- * Fixed: Facebook pixel event issue solved.
654
-
655
- = 4.3.14 (2020-12-28) =
656
- * Fixed: Edit page file type issue.
657
- * Fixed: Facebook pixel price fatal error.
658
-
659
- = 4.3.13 (2020-12-27) =
660
- * Added: Parent Title, Parent URL, Add to cart link, SKU Id attribute.
661
- * Fixed: Category exclude issue solved.
662
-
663
- = 4.3.12 (2020-12-24) =
664
- * Added: Debug feed file form in status page.
665
- * Fixed: Image url fatal error solved.
666
- * Fixed: Uncaught WC_Logger class error solved.
667
- * Fixed: Fixed product ID error issue.
668
-
669
- = 4.3.11 (2020-12-23) =
670
- * Added: Google shipping, identifier, tax attribute rule.
671
- * Added: Bing shipping, identifier, tax attribute rule.
672
- * Added: Pinterest ads_link attribute.
673
-
674
- = 4.3.10 (2020-12-22) =
675
- * Fixed: Brand disable/enable option.
676
-
677
- = 4.3.9 (2020-12-20) =
678
- * Added: Google Dynamic Search Ads Template.
679
- * Added: Pinterest RSS board feed template.
680
- * Fixed: Product list table breaking issue
681
- * Fixed: Complete registration missing parameters for facebook pixel.
682
-
683
- = 4.3.8 (2020-12-19) =
684
- * Added : Google Promotions Template.
685
- * Added : Bing Local Inventory Template.
686
- * Added : Facebook Pixel event tracking.
687
-
688
- = 4.3.7 (2020-12-15) =
689
- * Tweak : Bing template attributes managed.
690
-
691
- = 4.3.6 (2020-12-14) =
692
- * Tweak : Google local inventory ads attributes managed.
693
- * Tweak : Google local product inventory attributes managed.
694
- * Tweak : Facebook attributes source updated.
695
-
696
- = 4.3.5 (2020-12-13) =
697
- * Tweak : Canonical link as default attribute for google.
698
-
699
- = 4.3.4 (2020-12-10) =
700
- * Fix : Variation products attribute as parent not coming solved.
701
- * Tweak : Switch and update buttons new look.
702
-
703
- = 4.3.3 (2020-12-09) =
704
- * Fix : Import popup causes broken design solved.
705
-
706
- = 4.3.2 (2020-12-08) =
707
- * Tweak : Idealo delivery time, shopping cost comment updated.
708
- * Fix : Jquery load function undefined issue solved.
709
-
710
- = 4.3.1 (2020-12-03) =
711
- * Tweak : Import file popup new look.
712
- * Tweak : Bulk apply button new look.
713
-
714
- = 4.3.0 (2020-12-02) =
715
- * Fixed : PHP older version undefined aray_key_first solved.
716
-
717
- = 4.2.9 (2020-11-29) =
718
- * Added : Fashionchick.nl template.
719
-
720
- = 4.2.8 (2020-11-26) =
721
- * Added : Catch.com.au template.
722
-
723
- = 4.2.7 (2020-11-25) =
724
- * Added : Status page.
725
- * Added : Top black banner.
726
-
727
- = 4.2.6 (2020-11-24) =
728
- * Version bump : Checked compatibility with WordPress 5.6.
729
- * Version bump : Checked compatibility with WooCommerce 4.7.
730
-
731
- = 4.2.5 (2020-11-23) =
732
- * Added : Canonical URL in feed for rank math seo plugin.
733
-
734
- = 4.2.4 (2020-11-22) =
735
- * Added : Rank Math SEO plugin support.
736
-
737
- = 4.2.2 (2020-11-19) =
738
- * Tweak : Performance enhancement.
739
- * Fix: Spacing issue solved.
740
-
741
- = 4.2.1 (2020-11-18) =
742
- * Fix: Local template attribute for google.
743
- * Fix: Local inventory template attribute for google.
744
-
745
- = 4.2.0 (2020-11-16) =
746
- * Tweak: Update interval button new look.
747
- * Tweak: Clear cache button new look.
748
-
749
- = 4.1.9 (2020-11-15) =
750
- * Tweak: Local product inventory template updated.
751
- * Fix: Local product csv template.
752
-
753
- = 4.1.8 (2020-11-11) =
754
- * Tweak: Striping title, description, short description.
755
- * Fix: Fatal error for saveCSVFile.
756
-
757
- = 4.1.7 (2020-11-11) =
758
- * Added: TSV file support.
759
- * Added: XLS file support.
760
-
761
- = 4.1.6 (2020-11-09) =
762
- * Tweak: Google local template update.
763
-
764
- = 4.1.5 (2020-11-08) =
765
- * Fix: Bing template as txt format.
766
-
767
- = 4.1.4 (2020-11-05) =
768
- * Fix: Unslush link solved.
769
- * Fix: Removed whitespaces.
770
-
771
- = 4.1.3 (2020-11-03) =
772
- * Tweak: Google shopping action feed structure.
773
-
774
- = 4.1.2 (2020-11-01) =
775
- * Fix: Code enhancement.
776
- * Tweak: Performance increased.
777
-
778
- = 4.1.1 (2020-10-29) =
779
- * Tweak: Progressbar new look.
780
-
781
- = 4.1.0 (2020-10-26) =
782
- * Fix: Switcher activation issue.
783
-
784
- = 4.0.9 (2020-10-22) =
785
- * Fix: Helper functions error solved.
786
- * Tweak: Performance enhancement.
787
-
788
- = 4.0.8 (2020-10-21) =
789
- * Fix: Bing shipping default value from shipping class.
790
-
791
- = 4.0.7 (2020-10-20) =
792
- * Fix: Bing template as csv format.
793
-
794
- = 4.0.6 (2020-10-18) =
795
- * Fix: Admin and translation bug fixed.
796
-
797
- = 4.0.5 (2020-10-15) =
798
- * Tweak: Admin action link style updated.
799
-
800
- = 4.0.4 (2020-10-14) =
801
- * Fix: Performance enhancement.
802
- * Fix: Admin page code refactor.
803
-
804
- = 4.0.3 (2020-10-13) =
805
- * Tweak: Make feed button new look.
806
-
807
- = 4.0.1 (2020-10-12) =
808
- * Fix: Edit page fatal error.
809
-
810
- = 4.0.0 (2020-10-11) =
811
- * Fix: Code Refactor.
812
-
813
- = 3.9.9 (2020-10-08) =
814
- * Added: Zbozi.cz template.
815
- * Tweak: Documentation link updated.
816
-
817
- = 3.9.7 (2020-10-08) =
818
- * Fix: item wrapper input not showing in edit page.
819
-
820
- = 3.9.6 (2020-10-07) =
821
- * Tweak: Heureka and Moebel missing files added.
822
-
823
- = 3.9.5 (2020-10-06) =
824
- * Tweak: Feed list table new look.
825
-
826
- = 3.9.3 (2020-10-05) =
827
- * Tweak: Feed switch new design.
828
- * Added: Plugin version in feed list.
829
-
830
- = 3.9.2 (2020-10-04) =
831
- * Tweak: Feed list topbar new look.
832
-
833
- = 3.9.1 (2020-10-01) =
834
- * Added: Plugin version in setting page.
835
-
836
- = 3.9.0 (2020-09-30) =
837
- * Added: The Moebel.de template.
838
-
839
- = 3.8.9 (2020-09-29) =
840
- * Added: The Heureka Slovakia template.
841
-
842
- = 3.8.7 (2020-09-28) =
843
- * Added: `Child Category` and `Child Category id` option to feed.
844
- * Tweak: Profit share template new structure.
845
-
846
- = 3.8.6 (2020-09-27) =
847
- * Tweak: Action button's label styling.
848
-
849
- = 3.8.5 (2020-09-24) =
850
- * Added: Clear cache button to feed pages.
851
-
852
- = 3.8.3 (2020-09-23) =
853
- * Fix: Cron scheduled back date issue.
854
-
855
- = 3.8.1 (2020-09-22) =
856
- * Tweak: Added `WPC product bundles` plugin support.
857
-
858
- = 3.8.0 (2020-09-21) =
859
- * Fix: remove visual composer old short codes.
860
- * Tweak: short product ids in descending order into feed.
861
-
862
- = 3.7.20 (2020-09-17) =
863
- * Fix: availability will return `preorder` for on backorder into Google Merchant and Pinterest template.
864
- * Fix: availability will return `available for order` for on backorder into Facebook template.
865
-
866
- = 3.7.19 (2020-09-16) =
867
- * Tweak: itemid renamed to id for google local product inventory template.
868
-
869
- = 3.7.18 (2020-09-15) =
870
- * Tweak: Strip old Visual Composer shortcodes from product description.
871
- * Tweak: Setting page save button alignment fix.
872
-
873
- = 3.7.17 (2020-09-14) =
874
- * Tweak: Feed last updated time will show wordpress local time.
875
-
876
- = 3.7.16 (2020-09-13) =
877
- * Added: Custom fields for unique identifier (GTIN,MPN,EAN) added to product edit page.
878
-
879
- = 3.7.15 (2020-09-09) =
880
- * Tweak: stock status on backorder will be returned as out of stock for Google Shopping, Facebook and Pinterest template.
881
-
882
- = 3.7.14 (2020-09-08) =
883
- * Fix: Auto feed update not working issue fixed.
884
-
885
- = 3.7.13 (2020-09-05) =
886
- * Fix: Feed file was renamed while feed name changing.
887
-
888
- = 3.7.12 (2020-09-03) =
889
- * Added: ProfitShare template added.
890
-
891
- = 3.7.11 (2020-09-02) =
892
- * Added: Individual scheduled events added for each feed.
893
-
894
- = 3.7.10 (2020-09-01) =
895
- * Added: Parent Category Id attribute added.
896
-
897
- = 3.7.9 (2020-08-31) =
898
- * Added: Facebook inventory attribute added to Facebook catalog template as default.
899
-
900
- = 3.7.8 (2020-08-28) =
901
- * Added: Tweakers Pricewatch XML & CSV template added.
902
-
903
- = 3.7.7 (2020-08-26) =
904
- * Fix: Multiple additional_image_link attribute missing on Google Shopping template for CSV & TXT feed.
905
-
906
- = 3.7.6 (2020-08-25) =
907
- * Fix: XML Opening and Ending tag mismatch issue fixed.
908
-
909
- = 3.7.5 (2020-08-24) =
910
- * Tweak: do_shortcode() function applied to product title to filter shortcodes through their hooks.
911
-
912
- = 3.7.4 (2020-08-22) =
913
- * Fixed: Category mapping file missing issue fixed.
914
-
915
- = 3.7.3 (2020-08-22) =
916
- * Added: Category mapping feature added. Option to map store category with merchant category
917
-
918
- = 3.7.2 (2020-08-20) =
919
- * Fixed: g:additional_image_link attribute issue fixed.
920
-
921
- = 3.7.1 (2020-08-19) =
922
- * Added: sale_price added as default into Google Shopping product feed template.
923
- * Fix: shopping_ads_excluded_country structure fixed into Google Shopping product feed template.
924
-
925
- = 3.7.0 (2020-08-18) =
926
- * Added: Below attributes are added to google shopping template.
927
- * min_energy_​​efficiency_​​class
928
- * max_energy_​​efficiency_​​class
929
- * ads_​​redirect
930
- * shopping_ads_excluded_country
931
-
932
-
933
- = 3.6.20 (2020-08-17) =
934
- * Added: canonical_link attribute added to google shopping template.
935
-
936
- = 3.6.19 (2020-08-17) =
937
- * Tweak: WordPress 5.5 compatibility checked.
938
- * Tweak: API Library updated.
939
-
940
- = 3.6.18 (2020-08-15) =
941
- * Fix: Tax Class & Tax Status Product attribute added.
942
-
943
- = 3.6.17 (2020-08-13) =
944
- * Fix: Product missing issue fixed.
945
-
946
- = 3.6.16 (2020-08-10) =
947
- * Added: Google product_details attribute added to Google Shopping template.
948
-
949
- = 3.6.15 (2020-08-03) =
950
- * Added: Google product highlight attribute added to Google Shopping template.
951
-
952
- = 3.6.14 (2020-07-25) =
953
- * Added: Etsy template added.
954
- * Tweak: Pricerunner stock status will return Yes or No instead of in stock or out of stock.
955
-
956
- = 3.6.13 (2020-07-20) =
957
- * Added: Zalando template added.
958
-
959
- = 3.6.12 (2020-07-13) =
960
- * Tweak: WC 4.3 compatibility checked.
961
-
962
- = 3.6.11 (2020-07-09) =
963
- * Added: YITH Bundle Product compatibility added.
964
-
965
- = 3.6.10 (2020-06-30) =
966
- * Added: Shopee template added.
967
-
968
- = 3.6.9 (2020-06-29) =
969
- * Added: WooCommerce Bundle Product compatibility.
970
-
971
- = 3.6.8 (2020-06-24) =
972
- * Added: Google Shopping subscription_cost attribute added.
973
- * Added: Subscription amount attribute added for WooCommerce Subscription.
974
-
975
- = 3.6.7 (2020-06-23) =
976
- * Added: Subscription period interval attribute added for WooCommerce Subscription.
977
-
978
- = 3.6.6 (2020-06-18) =
979
- * Added: WooCommerce Subscription product compatibility added.
980
-
981
- = 3.6.5 (2020-06-13) =
982
- * Added: FTP passive mode selection option added.
983
-
984
- = 3.6.4 (2020-06-03) =
985
- * Fixed: Yoast SEO Title (manually added title) issue fixed.
986
-
987
- = 3.6.3 (2020-06-02) =
988
- * Fixed: Yoast SEO Title issue fixed.
989
-
990
- = 3.6.2 (2020-06-02) =
991
- * Fixed: DB query timeout issue fixed.
992
-
993
- = 3.6.1 (2020-05-28) =
994
- * Fixed: Feed file rename issue fixed.
995
-
996
- = 3.6.0 (2020-05-27) =
997
- * Added: new output types added to format attribute output.
998
-
999
- = 3.5.7 (2020-05-26) =
1000
- * Added: Bestprice template added.
1001
-
1002
- = 3.5.6 (2020-05-23) =
1003
- * Fix: Skroutz template items wrapper and availability issue fixed.
1004
- * Added: Dashboard widget.
1005
-
1006
- = 3.5.5 (2020-05-18) =
1007
- * Fix: Spartoo.fi Parent/Child attribute value now return child for variation and Parent for other product type instead of woocommerce product type.
1008
-
1009
- = 3.5.4 (2020-05-14) =
1010
- * Tweak: Plugin cache flashed after adding/updating a attribute.
1011
-
1012
- = 3.5.3 (2020-05-12) =
1013
- * Fix: Fruugo template NormalPriceWithoutVat attribute replaced with NormalPriceWithoutVAT
1014
-
1015
- = 3.5.2 (2020-04-28) =
1016
- * Fix: Tracking notice dismiss error fixed.
1017
- * Fix: Minor php error fixed.
1018
-
1019
- = 3.5.1 (2020-04-20) =
1020
- * Fix: Review notice dismiss error fixed.
1021
-
1022
- = 3.5.0 (2020-04-01) =
1023
- * Template: Google Shopping Action Template
1024
- * Template: Daisycon Feed Template (All 21 Standards)
1025
- * Fix: Custom Template XML issue fixed.
1026
- * Fix: Fixed PHPCS Recommended issue with proper coding standard and comments.
1027
- * Improvement: Move all inline JavaScripts to .js file
1028
- * Improvement: Caching with expiration and purge settings.
1029
- * Improvement: Refactor and removed deprecated codes.
1030
- * Improvement: JS & CSS Optimized. Minor UI Issues fixed.
1031
- * Improvement: Sort Template List (Merchant Dropdown)
1032
- * Feature: Debugging Option.
1033
- * Feature: Import Export Feed Config.
1034
- * Feature: Added Support for Main Category (With Support for Yoast SEO Primary Category).
1035
- * Feature: Add support for Google Category For Supporting Merchant.
1036
-
1037
- = 3.3.9 (2020-03-18) =
1038
- * Fix: Replace space character with underscore (`_`).
1039
- * Fix: Fix and optimize sortable table initialization.
1040
-
1041
- = 3.3.8 (2020-03-16) =
1042
- * Compatibility: Tested Upto WooCommerce 4.0
1043
- * Improve: Cleanup and minify assets (CSS & JS)
1044
- * Improve: Add nice ui dropdown for Output Type Select
1045
- * Fix: Return empty (previously returning zero) value if sale price is 0
1046
- * Fix: Support link on doc page
1047
- * Fix: Default Output type for price attribute on Google, Facebook and Pinterest feed
1048
-
1049
- = 3.3.4 (2020-03-10) =
1050
- * Template: Separate template for Trovaprezzi.it
1051
- * Fix: Dropdown on Facebook and Pinterest feed edit page.
1052
- * Cleanup: Remove unused files
1053
- * Improve: Performance improvement on merchant class
1054
- * Improve: Add filters and context parameter with feed rules parsing.
1055
-
1056
- = 3.3.3 (2020-03-04) =
1057
- * Feature: Campaign URL Builder
1058
- * Fix: Duplicate feed config on cron update.
1059
-
1060
- = 3.3.2 (2020-02-23) =
1061
- * Fix: Duplicate content in CSV feeds.
1062
-
1063
- = 3.3.1 (2020-02-20) =
1064
- * Fixed: function name conflict with Post SMTP plugin is solved
1065
-
1066
- = 3.3.0 (2020-02-17) =
1067
- * Improvement: Validate all source code using WPCS (PHPCS) to match WordPress coding standard.
1068
- * Improvement: Sanitization and Nonce checking.
1069
- * Performance: Implement WP Object Caching.
1070
- * Feature: new filter hook API for adding custom attribute.
1071
- * Fix: Tax calculation over cron job.
1072
-
1073
- = 3.2.19 (2020-02-13) =
1074
- * Fix JS not loading in all pages for hiding notices.
1075
-
1076
- = 3.2.18 (2020-02-12) =
1077
- * Fix User can't hide review and related notice.
1078
- * Fix Some WPCS Related Warnings
1079
- * Add ability to hide Product-Limit warning notice
1080
- * String translation update.
1081
-
1082
- = 3.2.17 (2020-02-09) =
1083
- * Fix Tax calculation based on store address.
1084
- * Localize JavaScript based Messages.
1085
-
1086
- = 3.2.16 (2020-02-02) =
1087
- * Tested upto current WordPress and WooCommerce
1088
- * PHPCS config added and tested for WPCS Issues
1089
- * Security Fix Using Nonce and sanitize User Inputs.
1090
- * Update Support URL
1091
-
1092
- = 3.2.15 (2020-01-23) =
1093
- * Fix undefined index in cron callback
1094
-
1095
- = 3.2.14 (2020-01-21) =
1096
- * Dynamic Selectize for Google Taxonomy Dropdown
1097
- * Fix Selectize UI
1098
- * Fix Contact Us Button
1099
- * Fix Menu Icon
1100
- * Fix php undefined index notice
1101
- * Improve Ajax Security
1102
-
1103
- = 3.2.13 (2020-01-16) =
1104
- * Fix Post Box issue
1105
- * Update Service Library
1106
- * fix text-domain
1107
-
1108
- = 3.2.12 (2020-01-14) =
1109
- * Service library update
1110
- * Add Support Form Added
1111
-
1112
- = 3.2.11 (2020-01-08) =
1113
- * Fix logging class not found error.
1114
- * Update Feed Save Message
1115
- * Fix Save success message
1116
-
1117
- = 3.2.10 (2020-01-07) =
1118
- * New Hook added before and after product loop.
1119
- * Sanitize ajax & optimize request for admin notices.
1120
- * Admin Notice updated.
1121
-
1122
- = 3.2.9 (2020-01-06) =
1123
- * Fix Docs Page Postbox styles
1124
- * Update Button UI
1125
-
1126
- = 3.2.8 (2020-01-05) =
1127
- * Remove `set_time_limit(0)` (disabled in some host).
1128
-
1129
- = 3.2.7 (2020-01-02) =
1130
- * Menu Icon Changed.
1131
- * Update Feed Configuration without generating.
1132
- * Fix Admin Notice UI.
1133
-
1134
- = 3.2.6 (2019-12-25) =
1135
- * New template structure implemented.
1136
- * Merchant info metabox in feed template edit page.
1137
- * Added support for metabox (postbox) minimize state in docs and template edit page.
1138
- * Improve UI and fix typo.
1139
- * Replace some static string with gettext function for better translation.
1140
- * Update script dependency for using internal scripts provide by WordPress for better performance.
1141
-
1142
- = 3.2.5 (2019-12-22) =
1143
- * Update Service Library
1144
-
1145
- = 3.2.4 (2019-12-19) =
1146
- * Fix OptOut button URL
1147
- * Filter hook added for notice message
1148
-
1149
- = 3.2.3 (2019-12-17) =
1150
- * Fix All-In-One-SEO Title and Description
1151
-
1152
- = 3.2.2 (2019-12-15) =
1153
- * Product query type settings added for compatibility.
1154
- * Request sanitization.
1155
- * Necessary SQL escaped.
1156
-
1157
- = 3.2.1 (2019-12-12) =
1158
- * XML element space replace with underscore issue fixed
1159
- * Fix: Undefined index.
1160
- * Trim output
1161
- * Remove redundant codes
1162
-
1163
- = 3.2.0 (2019-12-08) =
1164
- * Tweak: Improved Performance.
1165
- * stripslashes attribute output
1166
- * Remove Duplicate values from attribute list
1167
- * Fix Price with tax
1168
-
1169
- = 3.1.55 (2019-11-28) =
1170
- * Feed Config table ui update
1171
-
1172
- = 3.1.54 (2019-11-27) =
1173
- * Fix stock status
1174
-
1175
- = 3.1.53 (2019-11-25) =
1176
- * Promo Update
1177
-
1178
- = 3.1.52 (2019-11-24) =
1179
- * Fix: Hide google taxonomy dropdown if attribute selected
1180
- * Fix: Autocomplete attribute value
1181
- * Fix: PHP count() warning on feed edit page
1182
-
1183
- = 3.1.51 (2019-11-21) =
1184
- * Fix duplicate id cache
1185
- * Tweak connecxity feed class
1186
-
1187
- = 3.1.50 (2019-11-18) =
1188
- * Added yandex_csv_add-feed.php,
1189
- * Update tracker class,
1190
- * Pageable filters added.
1191
- * Update tested up to info.
1192
-
1193
- = 3.1.49 (2019-11-12) =
1194
- * Yandex CSV template added
1195
-
1196
- = 3.1.48 (2019-11-09) =
1197
- * Fixed: Woocommerce version compare issue
1198
- * Fixed: Removed trim for prefix and suffix field
1199
- * Fixed: Current Price issue fixed
1200
- * Tweak: Status & View column name changed to Auto Update & Action accordingly into Feed List table
1201
- * Tweak: Add auto space before suffix for price sale_price & current_price
1202
-
1203
- = 3.1.47 (2019-11-07) =
1204
- * Update remove unused cron from insight class
1205
- * Fix insight cron hook
1206
- * Changelog Typo Fix
1207
-
1208
- = 3.1.46 (2019-11-06) =
1209
- * Fix 'No Products found' while using 'Custom Template 2 (XML)'
1210
- * Tested Up to WC 3.8
1211
-
1212
- = 3.1.45 (2019-11-03) =
1213
- * Loading ClipboardJS directly from plugin for older WordPress
1214
- * Added WooCommerce minimum version checking before loading other dependencies
1215
- * Fix support for WooCommerce older than 3.6.0
1216
-
1217
- = 3.1.44 (2019-10-31) =
1218
- * Remove Duplicate Css
1219
- * Fix success message not showing
1220
- * Fix PHP non-numeric value & counting null warning
1221
-
1222
- = 3.1.43 (2019-10-27) =
1223
- * Improve Page loading performance on feed editor
1224
- * FTP Module detection added in `FTP/SFTP` tab in feed editor
1225
- * Fix 3rd Party Plugin Compatibility
1226
-
1227
- = 3.1.42 (2019-10-27) =
1228
- * Fix deactivation script
1229
-
1230
- = 3.1.41 (2019-10-24) =
1231
- * Dependency & compatibility check upon activation
1232
- * Tested with latest WordPress & WooCommerce Release
1233
-
1234
- = 3.1.40 (2019-10-21) =
1235
- * Fix error on fetching invalid child product of group product.
1236
- * Fix google taxonomy not being selected on edit page
1237
- * Remove unnecessary admin notices.
1238
-
1239
- = 3.1.39 (2019-10-20) =
1240
- * Adds plugin assets (was missing), sorry :)
1241
- * UI Fix.
1242
-
1243
- = 3.1.38 (2019-10-20) =
1244
- * Docs page ui fix
1245
- * Update Plugin Meta links
1246
-
1247
- = 3.1.37 (2019-10-17) =
1248
- * UI improvement
1249
- * Improve script dependency management
1250
-
1251
- = 3.1.36 (2019-10-14) =
1252
- * Documentation Menu Added
1253
-
1254
- = 3.1.35 (2019-10-10) =
1255
- * remove echo used with _e()
1256
- * fix generating new db entry on update feed config
1257
- * fix duplicate id on save/update button
1258
-
1259
- = 3.1.34 (2019-10-9) =
1260
- * Resolve duplicate filename conflict.
1261
- * Fix undefined variable.
1262
- * Check if function exists before declaration (Resolve error on Pro Version activation.
1263
-
1264
- = 3.1.33 (2019-10-7) =
1265
- * Add copy to clip board
1266
- * Fix performance issue on feed add/edit screen
1267
-
1268
- = 3.1.32 (2019-10-6) =
1269
- * Fix parent sku not getting populated in feed data
1270
- * Set feed type to CSV for Pinterest
1271
-
1272
- = 3.1.31 (2019-10-3) =
1273
- * Strip divi builder shortcode from product description and short-description.
1274
- * Delete old feed file before regenerate.
1275
-
1276
- = 3.1.30 (2019-10-2) =
1277
- * Fix Feed doesn't include last product variation
1278
-
1279
- = 3.1.29(2019-09-30) =
1280
- * Update Google Taxonomy list at the latest.
1281
- * Add Google Taxonomy in facebook and pinterest template.
1282
- * Google Taxonomy chooser directly in Feed Config without any popup.
1283
- * Optimize JavaScript.
1284
-
1285
- = 3.1.28(2019-09-26) =
1286
- * Fix Google Taxonomy Popup with jquery sortable plugin.
1287
- * Fix row become invisible while dragging.
1288
-
1289
- = 3.1.27(2019-09-11) =
1290
- * Added: criteo template added
1291
-
1292
- = 3.1.26(2019-09-11) =
1293
- * Added: google attribute dropdown issue solved
1294
-
1295
- = 3.1.25(2019-09-09) =
1296
- * Added: fyndiq.se template added
1297
-
1298
- = 3.1.24(2019-09-03) =
1299
- * Added: miinto.nl template added
1300
-
1301
- = 3.1.23(2019-08-28) =
1302
- * Added: fnac.fr template added
1303
-
1304
- = 3.1.22(2019-08-25) =
1305
- * Added: missing template files added
1306
-
1307
- = 3.1.21(2019-08-20) =
1308
- * Added: vertaa.fi template added
1309
-
1310
- = 3.1.20(2019-08-19) =
1311
- * Added: fashiola template added
1312
-
1313
- = 3.1.19(2019-08-08) =
1314
- * Added: walmart template added
1315
-
1316
- = 3.1.18(2019-08-05) =
1317
- * Added: webmarchand template added
1318
-
1319
- = 3.1.17(2019-07-29) =
1320
- * Fixed: feed files permission issue fixed
1321
-
1322
- = 3.1.16(2019-07-25) =
1323
- * Fixed: google_attributes option issue fixed
1324
-
1325
- = 3.1.15(2019-07-24) =
1326
- * Fixed: Cross-site scripting (XSS) vulnerability issue resolved
1327
-
1328
- = 3.1.14(2019-07-23) =
1329
- * Added: modina.de template added
1330
-
1331
- = 3.1.13(2019-07-22) =
1332
- * Modified: spartoo.fi template modified
1333
-
1334
- = 3.1.12(2019-07-18) =
1335
- * Added: shareasale template added
1336
-
1337
- = 3.1.11(2019-07-17) =
1338
- * Added: spartoo.fi template added
1339
-
1340
- = 3.1.10(2019-07-15) =
1341
- * Fixed: google template slowly loading issue fixed
1342
-
1343
- = 3.1.9(2019-07-11) =
1344
- * Added: shopalike.fr template added
1345
-
1346
- = 3.1.8(2019-07-08) =
1347
- * Fixed: pinterest csv feed attribute underscore issue fixed
1348
-
1349
- = 3.1.7(2019-07-07) =
1350
- * Added: strip tags set as default in the Output Type of kijiji.ca template
1351
-
1352
- = 3.1.6(2019-07-05) =
1353
- * Added: kijiji.ca template added
1354
-
1355
- = 3.1.5(2019-07-03) =
1356
- * Added: kieskeurig.nl template added
1357
-
1358
- = 3.1.4(2019-06-30) =
1359
- * Added: incurvy template added
1360
-
1361
- = 3.1.3(2019-06-27) =
1362
- * Added: CDiscount.fr template added
1363
-
1364
- = 3.1.2(2019-06-26) =
1365
- * Fixed: Auto input field populate issue into feed making and edit page has fixed
1366
-
1367
- = 3.1.1(2019-06-25) =
1368
- * Added: marktplaats.nl template added
1369
-
1370
- = 3.1.0(2019-06-24) =
1371
- * Fixed: Pinterest csv feed issue fixed
1372
-
1373
- = 3.0.40(2019-06-21) =
1374
- * Fixed: Make Feed view issue fixed
1375
-
1376
- = 3.0.39(2019-06-20) =
1377
- * Fixed: Prefix & suffix with empty value and stripslash issue fixed
1378
- * Added: Override attribute added for facebook template
1379
-
1380
- = 3.0.38(2019-06-18) =
1381
- * Added: Vergelijk.be & Comparer.be template added
1382
-
1383
- = 3.0.37(2019-06-10) =
1384
- * Added: Rakuten template added
1385
-
1386
- = 3.0.36(2019-06-03) =
1387
- * Tweak: Beslist.nl template modified
1388
-
1389
- = 3.0.35(2019-05-29) =
1390
- * Tweak: CrowdFox template modified
1391
-
1392
- = 3.0.34(2019-05-23) =
1393
- * Fixed: Product attribute empty space issue fixed
1394
-
1395
- = 3.0.33(2019-05-21) =
1396
- * Fixed: Empty global attribute value for wc3.6 fixed.
1397
-
1398
- = 3.0.32(2019-05-16) =
1399
- * Shipping Cost Comment attribute added for idealo template
1400
-
1401
- = 3.0.31(2019-05-13) =
1402
- * Added: billiger.de template added
1403
-
1404
- = 3.0.30(2019-05-08) =
1405
- * Added: tax_country,tax_region,tax_rate,tax_ship attribute added.
1406
- * Tweak: tax attribute deleted.
1407
-
1408
- = 3.0.29(2019-05-06) =
1409
- * Added: Idealo template added
1410
-
1411
- = 3.0.28(2019-04-30) =
1412
- * Tweak: Feed template folder structure change to reduce plugin size
1413
-
1414
- = 3.0.27(2019-04-30) =
1415
- * Added: Hintaseuranta.fi template added
1416
-
1417
- = 3.0.26(2019-04-29) =
1418
- * Added: SkinFlint.co.uk template added
1419
- * WordPress 5.2 compatibility checked
1420
- * WooCommerce 3.6 compatibility checked
1421
-
1422
- = 3.0.25(2019-04-26) =
1423
- * Added: TheNextAd template added
1424
-
1425
- = 3.0.24(2019-04-25) =
1426
- * Fixed: cost_of_good_sold attribute issue fixed for Google & Facebook template
1427
- * Added: tax_category attribute added for Facebook template
1428
-
1429
- = 3.0.23(2019-04-24) =
1430
- * Added: Yahoo NFA template added
1431
-
1432
- = 3.0.22(2019-04-22) =
1433
- * Added: Stylight template added
1434
- * Added: Google & Facebook template will auto add currency code as suffix for price attribute
1435
-
1436
- = 3.0.21(2019-04-18) =
1437
- * Added: Smartly.io template added
1438
-
1439
- = 3.0.20(2019-04-16) =
1440
- * Fixed: Myshopping.com.au XML Category tag issue fixed
1441
- * Fixed: Myshopping.com.au recommended attributes added
1442
-
1443
- = 3.0.19(2019-04-14) =
1444
- * Added: MyShopping.com.au template added
1445
-
1446
- = 3.0.18(2019-04-11) =
1447
- * Added: Pinterest template added
1448
-
1449
- = 3.0.17(2019-04-10) =
1450
- * Fixed: Template UI loading conflict with popup builder plugin
1451
-
1452
- = 3.0.16(2019-04-08) =
1453
- * Added: fruugoaustralia.com template added
1454
- * Fixed: fruugo.com template updated
1455
-
1456
- = 3.0.15(2019-04-04) =
1457
- * Fixed: Zap.co.il template header issue fixed
1458
-
1459
- = 3.0.14(2019-04-01) =
1460
- * Added: Zap.co.il template added
1461
-
1462
- = 3.0.13(2019-03-28) =
1463
- * Added: Google Local Product template added
1464
-
1465
- = 3.0.12(2019-03-22) =
1466
- * Fixed: minor security bugs
1467
-
1468
- = 3.0.11(2019-03-21) =
1469
- * Fixed: facebook variation description issue fixed
1470
-
1471
- = 3.0.10(2019-03-18) =
1472
- * Fixed: product tags issue fixed
1473
- * Added: new Google Merchant attributes added
1474
-
1475
- = 3.0.9(2019-03-15) =
1476
- * Added: Current Price attribute added. Current Price attribute will return sale price if sale price available else it will return regular price.
1477
- * WooCommerce v3.5+ compatibility checked
1478
-
1479
- = 3.0.8(2019-03-12) =
1480
- * Added: Facebook template will contain product variations but it will add variation info at the end of the product description so that facebook can not reject variation which do not have short description.
1481
-
1482
- = 3.0.7(2019-03-07) =
1483
- * Added: Bing Shipping attribute
1484
- * Fixed: Review notice show after 15 days of installation
1485
- * Fixed: ajax action hook conflicting issue fixed
1486
-
1487
- = 3.0.6(2019-03-05) =
1488
- * Fixed: Facebook inventory attribute added
1489
-
1490
- = 3.0.5(2019-02-27) =
1491
- * Fixed: Google Local Product Inventory feed template added
1492
-
1493
- = 3.0.4(2019-02-25) =
1494
- * Fixed: Google & Facebook condition attribute value changed from New to new
1495
-
1496
- = 3.0.3(2019-02-20) =
1497
- * Price with Tax attribute added
1498
- * Product date created and date updated attribute added
1499
- * Google Category notice bug fix
1500
-
1501
- = 3.0.2(2019-02-15) =
1502
- * WordPress version 5.1 compatibility checked
1503
-
1504
- = 3.0.1(2019-02-06) =
1505
- * Manufacturer attribute added to NexTag template
1506
-
1507
- = 3.0.0(2019-01-31) =
1508
- * Minor bug fixing
1509
-
1510
- = 2.2.33(2019-01-27) =
1511
- * Google Taxonomy modal issue fixed
1512
-
1513
- = 2.2.32(2019-01-24) =
1514
- * Show message at feed generation if woocommerce product not found.
1515
-
1516
- = 2.2.31(2019-01-22) =
1517
- * Used home_url() instead of site_url() into google feed header
1518
- * Review request admin message added
1519
-
1520
- = 2.2.29(2019-01-20) =
1521
- * Added: SFTP file upload to remote server
1522
-
1523
- = 2.2.28(2019-01-11) =
1524
- * WordPress 5 compatibility checked
1525
- * Default cron interval set to 24 hours
1526
- * Minor bug fix
1527
-
1528
- = 2.2.26(2018-11-17) =
1529
- * At First convert Short Codes and then Remove failed Short Codes from String
1530
-
1531
- = 2.2.25(2018-11-07) =
1532
- * number_format error fixed
1533
-
1534
- = 2.2.24(2018-11-05) =
1535
- * Minor issue fixed
1536
-
1537
- = 2.2.23(2018-10-25) =
1538
- * Google Attribute cost_of_goods_sold added
1539
- * Visual Composer shortcode remove issue fixed
1540
-
1541
- = 2.2.22(2018-10-10) =
1542
- * Variations missing issue fixed
1543
- * URL encoding issue with suffix fixed
1544
-
1545
- = 2.2.21(2018-09-19) =
1546
- * Cron schedule added to update feed individually
1547
-
1548
- = 2.2.19(2018-07-31) =
1549
- * Product description default limit set to 5000 for Google Merchant and Facebook template
1550
-
1551
- = 2.2.18(2018-07-09) =
1552
- * Google Product category missing warning added for Google Merchant and Facebook template
1553
-
1554
- = 2.2.17(2018-07-05) =
1555
- * All field added to amazon template
1556
-
1557
- = 2.2.16(2018-07-02) =
1558
- * Strip tag added as default output type for Google and Facebook template
1559
-
1560
- = 2.2.15(2018-06-09) =
1561
- * Documentation and Pro plugin link added under plugin activation links
1562
-
1563
- = 2.2.14(2018-05-25) =
1564
- * Grouped product price issue fixed
1565
-
1566
- = 2.2.11(2018-04-25) =
1567
- * Minor js error fixed
1568
-
1569
- = 2.2.10(2018-04-25) =
1570
- * Google Product Category dropdown added for Google Shopping template
1571
-
1572
- = 2.2.9(2018-03-23) =
1573
- * Product missing issue fixed
1574
- * Auto update active/inactive status added
1575
-
1576
- = 2.2.8(2018-03-14) =
1577
- * Variable product price issue fixed
1578
- * Other minor issues about product are fixed
1579
-
1580
- = 2.2.7(2018-03-01) =
1581
- * Product query code improved
1582
-
1583
- = 2.2.6(2018-02-15) =
1584
- * Added: Jet.com Template added
1585
- * Added: Wish.com Template added
1586
-
1587
- = 2.2.5(2018-02-05) =
1588
- * Fixed: Variations description issue
1589
- * Fixed: Remove shortcodes Automatically
1590
-
1591
- = 2.2.4(2018-02-01) =
1592
- * Auto Remove ShortCodes from Product Description
1593
-
1594
- = 2.2.3(2018-01-30) =
1595
- * Fixed: Variations description issue
1596
- * Added: Remove shortcodes function modified
1597
-
1598
- = 2.2.2(2018-01-26) =
1599
- * removed variations for facebook
1600
-
1601
- = 2.2.1(2018-01-25) =
1602
- * product variation issue fixed
1603
-
1604
- = 2.2.0(2018-01-25) =
1605
- * WC 3.1+ compatibility extended
1606
-
1607
- = 2.1.29(2018-01-09) =
1608
- * Added: Bonanza, Real, LeGuide and Crowdfox template added
1609
-
1610
- = 2.1.28(2017-12-27) =
1611
- * Added: Pricerunner template added
1612
- * Added: AdForm template added
1613
-
1614
- = 2.1.27(2017-12-25) =
1615
- * Added: Bol.com template added
1616
-
1617
- = 2.1.26(2017-12-12) =
1618
- * Added: Polyvore template added
1619
-
1620
- = 2.1.25(2017-12-03) =
1621
- * Added: Fruugo template added
1622
-
1623
- = 2.1.24(2017-11-03) =
1624
- * Added: FTP port option
1625
-
1626
- = 2.1.23(2017-10-23) =
1627
- * Added: Twenga product feed template added
1628
- * Fixed: Internal server error at the middle of feed making
1629
-
1630
- = 2.1.22(2017-10-17) =
1631
- * Added: PriceSpy product feed template added
1632
- * Added: PrisJakt product feed template added
1633
-
1634
- = 2.1.21(2017-10-08) =
1635
- * Added: Adroll.com product feed template added
1636
-
1637
- = 2.1.20(2017-10-04) =
1638
- * Fixed: js typeahead error fixed.
1639
-
1640
- = 2.1.19(2017-10-04) =
1641
- * Fixed: decimal issue of progress percent.
1642
-
1643
- = 2.1.18(2017-09-28) =
1644
- * Fixed: Sale Price will be empty if not on sale
1645
-
1646
- = 2.1.17(2017-09-20) =
1647
- * Fixed: FTP Connection issue
1648
-
1649
- = 2.1.16(2017-09-01) =
1650
- * Fixed: XML error for Google and Facebook template
1651
-
1652
- = 2.1.15(2017-08-27) =
1653
- * Fixed: array_merge error
1654
- * Added: Strip slashed manual input (Prefix, Suffix, and Pattern)
1655
- * Added: HTML entity decoded for Google and Facebook XML header
1656
-
1657
- = 2.1.14(2017-08-09) =
1658
- * Fixed: Variable Product missing issue
1659
-
1660
- = 2.1.13(2017-08-08) =
1661
- * Fixed: Variable Product issue
1662
- * Fixed: Unlink temp file error
1663
-
1664
- = 2.1.12(2017-07-24) =
1665
- * Fixed: product count error
1666
-
1667
- = 2.1.10(2017-07-24) =
1668
- * Added: New Option added to feed configuration view
1669
- * Added: Plugin Setting menu
1670
-
1671
- = 2.1.9(2017-07-09) =
1672
- * Fixed: Feed execution failed error.
1673
-
1674
- = 2.1.8(2017-07-09) =
1675
- * Fixed: 200 products issue of Auto Feed Update
1676
-
1677
- = 2.1.7(2017-07-03) =
1678
- * Added: Auto Feed Update
1679
-
1680
- = 2.1.6(2017-05-27) =
1681
- * Duplicate Product Issue fixed.
1682
- * Removed Product variations for Facebook Template.
1683
- * 0 Price issue for Parent product of variation fixed.
1684
-
1685
- = 2.1.4(2017-05-22) =
1686
- * New attribute added for External Product URL
1687
-
1688
- = 2.1.3(2017-05-12) =
1689
- * Solved the output 0 issue for empty attribute value
1690
-
1691
- = 2.1.2(2017-05-09) =
1692
- * Frontend JS conflict issue fixed
1693
-
1694
- = 2.1.1(2017-05-08) =
1695
- * Additional Images error fixed
1696
-
1697
- = 2.1.0(2017-05-07) =
1698
- * Fixed: The blank screen or 500 page not found error
1699
- * Added: Sale price value wil return current price
1700
- * Added: Support Grouped Product
1701
- * Added: Compatible with WooCommerce 3.0+
1702
- * Added: Ajax Feed making
1703
- * Improved: Auto feed updating functionality
1704
- * Added: Comma Separated Additional Images Attribute for Google and Facebook template
1705
-
1706
- = 2.0.16(2017-05-02) =
1707
- * Fixed: Additional Image issue google shopping template
1708
-
1709
- = 2.0.15(2017-04-27) =
1710
- * Fixed the issue: Call to undefined method WC_Product_Variation::get_gallery_image_ids()
1711
-
1712
- = 2.0.14(2017-04-27) =
1713
- * Fixed: Additional Image issue google shopping template
1714
-
1715
- = 2.0.13(2017-04-09) =
1716
- * Added the functionality to make feed for External/Affiliate Product
1717
-
1718
- = 2.0.12(2017-03-27) =
1719
- * Removed default space from after suffix and before prefix.
1720
- * Fixed the number_format command issue and documentation updated.
1721
- * Fixed last version errors.
1722
-
1723
- = 2.0.11(2017-03-20) =
1724
- * Fixed the zero output error
1725
-
1726
- = 2.0.10(2017-03-18) =
1727
- * Amazon Jewelry Template added
1728
-
1729
- = 2.0.9(2017-03-16) =
1730
- * Fixed the issue to output attribute value 0
1731
-
1732
- = 2.0.8(2017-03-02) =
1733
- * Amazon template error fixed
1734
-
1735
- = 2.0.7(2017-03-01) =
1736
- * Shipping attribute information error and image required issue fixed
1737
-
1738
- = 2.0.6(2017-02-25) =
1739
- * Error fixed for Amazon camera and photo category template
1740
-
1741
- = 2.0.5(2017-02-20) =
1742
- * Code modified for faster feed making
1743
-
1744
- = 2.0.4(2017-02-08) =
1745
- * For Google Shopping template: identifier_exist status value updated from TRUE and FALSE to yes and no according to Google Merchant requirements.
1746
-
1747
- = 2.0.3(2017-02-06) =
1748
- * Fixed: sale price effective date formatting
1749
-
1750
- = 2.0.2(2017-01-12) =
1751
- * Fixed: xmlParseEntityRef: no name for Google Shopping Class
1752
-
1753
- = 2.0.1(2017-01-12) =
1754
- * Fixed: TXT feed encoding error
1755
- * Modified: Bing template modified according to new Bing requirements.
1756
- * Added: Amazon Inventory template by Category added
1757
-
1758
- = 2.0.0(2017-01-05) =
1759
- * identifier_exist attribute value will be automatically set according to feed configuration for Google Shopping Template.
1760
-
1761
- = 1.5.36(2016-11-28) =
1762
- * Removed Promotional Message
1763
-
1764
- = 1.5.35(2016-11-27) =
1765
- * Added: Functionality to Include Extra header information into feed
1766
-
1767
- = 1.5.34(2016-11-23) =
1768
- * Fixed: Remove non UTF-8 character from attribute output value
1769
- * Added: Remove Short Codes from Product Description
1770
-
1771
- = 1.5.33(2016-11-01) =
1772
- * Fixed: Output product category according to category hierarchy
1773
-
1774
- = 1.5.32(2016-11-01) =
1775
- * Fixed: Removed the space between link attribute and suffix. For example, It's possible to add tracking code into url.
1776
-
1777
- = 1.5.31(2016-10-14) =
1778
- * Added: Google Ad words Feed template
1779
- * Added: Shopbot feed template
1780
- * Added: Remove special character from the attribute output value
1781
-
1782
- = 1.5.30(2016-10-10) =
1783
- * Added the difference between premium and free version
1784
-
1785
- = 1.5.29(2016-10-04) =
1786
- * replace product description line break with space
1787
-
1788
- = 1.5.28(2016-09-22) =
1789
- * class-woo-feed-error-message.php committed
1790
-
1791
- = 1.5.27(2016-09-22) =
1792
- * Show error message if WordPress Upload directory is not writable
1793
-
1794
- = 1.5.26(2016-09-10) =
1795
- * Remove space from beginning and ending of strings for CSV and TXT feed
1796
-
1797
- = 1.5.25(2016-09-03) =
1798
- * Fixed: CSRF Security Vulnerability
1799
-
1800
- = 1.5.24(2016-09-02) =
1801
- * Modified: Hex character encoding error for XML feed
1802
- * Fixed: CSRF Security Vulnerability
1803
-
1804
- = 1.5.23(2016-08-26) =
1805
- * Modified: Hex character encoding error for XML feed
1806
-
1807
- = 1.5.22(2016-08-23) =
1808
- * Fixed: Hex character encoding error for XML feed
1809
-
1810
- = 1.5.21(2016-08-03) =
1811
- * Added: is_object checking for global variable product
1812
-
1813
- = 1.5.20(2016-07-26) =
1814
- * Fixed: hard coded db query for product count
1815
-
1816
- = 1.5.19(2016-07-25) =
1817
- * Fixed: return custom attribute value instead of slug
1818
-
1819
- = 1.5.18(2016-07-21) =
1820
- * g:shipping_region attribute added to google merchant class.
1821
-
1822
- = 1.5.17(2016-07-03) =
1823
- * Fixed: Fatal error: Call to a member function is_type()
1824
-
1825
- = 1.5.16(2016-06-13) =
1826
- * Fixed: Blank Screen Error
1827
- * Improved: Feed Making Process
1828
-
1829
- = 1.5.15(2016-05-27) =
1830
- * Fixed: Compatible with PHP version 5.3
1831
- * Improved: Pre Configured Template Loading Time
1832
-
1833
- = 1.5.14(2016-05-11) =
1834
- * Fixed: List Table Syntax Error. Now compatible with PHP version 5.3
1835
- * Fixed: Pre Configured Template Loading Error
1836
- * Solved: CSV None enclosure.
1837
-
1838
- = 1.5.13(2016-04-29) =
1839
- * Fixed: Cron Job Auto Feed Update
1840
-
1841
- = 1.5.12(2016-04-25) =
1842
- * Fixed: Custom template update problem
1843
- * Added: Template added for Shopbot.com
1844
-
1845
- = 1.5.11(2016-04-12) =
1846
- * Fixed: Blank product and image url
1847
- * Fixed: WP List Table Screen error solved
1848
- * Variation checking added for parent product export
1849
-
1850
- = 1.5.10 =
1851
- * Google Adwords Template Added
1852
- * Top Pro Version Message Removed
1853
- * Add New Row dropdown field error fixed
1854
-
1855
- = 1.5.9 =
1856
- * Facebook XML Feed Space Error Fixed
1857
- * Google XML Feed Space Error Fixed
1858
-
1859
- = 1.5.8 =
1860
- * Amazon Template Added
1861
- * Multiple Regenerate error fixed
1862
- * Support Empty Attributes
1863
- * Support Dynamic Attribute Reuse
1864
- * Support Category Mapping Reuse
1865
-
1866
- = 1.5.7 =
1867
- * Faster Feed Processing Modified
1868
- * JS Feed Update Status Conflict Fixed
1869
- * Product Filtering Module Modified
1870
- * Feed Edit Template Modified
1871
-
1872
- = 1.5.6 =
1873
- * Faster Feed Processing
1874
- * Ajax Feed Processing Status Error Fixed
1875
-
1876
- = 1.5.5 =
1877
- * Feed edit error fixed
1878
- * Facebook edit template error fixed
1879
- * Pattern Output error fixed
1880
- * Add New button error fixed
1881
- * Feed making progress error fixed
1882
- * Custom taxonomy added to value dropdown into feed template (pro)
1883
-
1884
- = 1.5.4 =
1885
- * jQuery Shortable error fixed
1886
-
1887
- = 1.5.3 =
1888
- * Google and Facebook Single item wrapper issue fixed
1889
- * Shipping attribute added for Google and Facebook Template
1890
- * Support and Docs section added
1891
- * Feed making progress issue fixed
1892
- * Sale Price start and end date attribute added
1893
- * Stock quantity issue fixed
1894
-
1895
- = 1.5.2 =
1896
- * Feed making progress status added
1897
-
1898
- = 1.5.1 =
1899
- * Data Validation Improved
1900
-
1901
- = 1.5.0 =
1902
- * 10 pre configured Template
1903
-
1904
- = 1.0.0 =
1905
- * First Release.
1906
-
1907
- == Upgrade Notice ==
1908
- = 1.5.3 =
1909
- This is a major release. Please update to version 1.5.3 . Lots of issue solved and some modification added. If any problem occurred while update then reactivate the plugin. Its a good practice to make a backup of your database before update.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/WOO_FEED_LICENSE.txt DELETED
@@ -1,339 +0,0 @@
1
- GNU GENERAL PUBLIC LICENSE
2
- Version 2, June 1991
3
-
4
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
5
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
6
- Everyone is permitted to copy and distribute verbatim copies
7
- of this license document, but changing it is not allowed.
8
-
9
- Preamble
10
-
11
- The licenses for most software are designed to take away your
12
- freedom to share and change it. By contrast, the GNU General Public
13
- License is intended to guarantee your freedom to share and change free
14
- software--to make sure the software is free for all its users. This
15
- General Public License applies to most of the Free Software
16
- Foundation's software and to any other program whose authors commit to
17
- using it. (Some other Free Software Foundation software is covered by
18
- the GNU Lesser General Public License instead.) You can apply it to
19
- your programs, too.
20
-
21
- When we speak of free software, we are referring to freedom, not
22
- price. Our General Public Licenses are designed to make sure that you
23
- have the freedom to distribute copies of free software (and charge for
24
- this service if you wish), that you receive source code or can get it
25
- if you want it, that you can change the software or use pieces of it
26
- in new free programs; and that you know you can do these things.
27
-
28
- To protect your rights, we need to make restrictions that forbid
29
- anyone to deny you these rights or to ask you to surrender the rights.
30
- These restrictions translate to certain responsibilities for you if you
31
- distribute copies of the software, or if you modify it.
32
-
33
- For example, if you distribute copies of such a program, whether
34
- gratis or for a fee, you must give the recipients all the rights that
35
- you have. You must make sure that they, too, receive or can get the
36
- source code. And you must show them these terms so they know their
37
- rights.
38
-
39
- We protect your rights with two steps: (1) copyright the software, and
40
- (2) offer you this license which gives you legal permission to copy,
41
- distribute and/or modify the software.
42
-
43
- Also, for each author's protection and ours, we want to make certain
44
- that everyone understands that there is no warranty for this free
45
- software. If the software is modified by someone else and passed on, we
46
- want its recipients to know that what they have is not the original, so
47
- that any problems introduced by others will not reflect on the original
48
- authors' reputations.
49
-
50
- Finally, any free program is threatened constantly by software
51
- patents. We wish to avoid the danger that redistributors of a free
52
- program will individually obtain patent licenses, in effect making the
53
- program proprietary. To prevent this, we have made it clear that any
54
- patent must be licensed for everyone's free use or not licensed at all.
55
-
56
- The precise terms and conditions for copying, distribution and
57
- modification follow.
58
-
59
- GNU GENERAL PUBLIC LICENSE
60
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
-
62
- 0. This License applies to any program or other work which contains
63
- a notice placed by the copyright holder saying it may be distributed
64
- under the terms of this General Public License. The "Program", below,
65
- refers to any such program or work, and a "work based on the Program"
66
- means either the Program or any derivative work under copyright law:
67
- that is to say, a work containing the Program or a portion of it,
68
- either verbatim or with modifications and/or translated into another
69
- language. (Hereinafter, translation is included without limitation in
70
- the term "modification".) Each licensee is addressed as "you".
71
-
72
- Activities other than copying, distribution and modification are not
73
- covered by this License; they are outside its scope. The act of
74
- running the Program is not restricted, and the output from the Program
75
- is covered only if its contents constitute a work based on the
76
- Program (independent of having been made by running the Program).
77
- Whether that is true depends on what the Program does.
78
-
79
- 1. You may copy and distribute verbatim copies of the Program's
80
- source code as you receive it, in any medium, provided that you
81
- conspicuously and appropriately publish on each copy an appropriate
82
- copyright notice and disclaimer of warranty; keep intact all the
83
- notices that refer to this License and to the absence of any warranty;
84
- and give any other recipients of the Program a copy of this License
85
- along with the Program.
86
-
87
- You may charge a fee for the physical act of transferring a copy, and
88
- you may at your option offer warranty protection in exchange for a fee.
89
-
90
- 2. You may modify your copy or copies of the Program or any portion
91
- of it, thus forming a work based on the Program, and copy and
92
- distribute such modifications or work under the terms of Section 1
93
- above, provided that you also meet all of these conditions:
94
-
95
- a) You must cause the modified files to carry prominent notices
96
- stating that you changed the files and the date of any change.
97
-
98
- b) You must cause any work that you distribute or publish, that in
99
- whole or in part contains or is derived from the Program or any
100
- part thereof, to be licensed as a whole at no charge to all third
101
- parties under the terms of this License.
102
-
103
- c) If the modified program normally reads commands interactively
104
- when run, you must cause it, when started running for such
105
- interactive use in the most ordinary way, to print or display an
106
- announcement including an appropriate copyright notice and a
107
- notice that there is no warranty (or else, saying that you provide
108
- a warranty) and that users may redistribute the program under
109
- these conditions, and telling the user how to view a copy of this
110
- License. (Exception: if the Program itself is interactive but
111
- does not normally print such an announcement, your work based on
112
- the Program is not required to print an announcement.)
113
-
114
- These requirements apply to the modified work as a whole. If
115
- identifiable sections of that work are not derived from the Program,
116
- and can be reasonably considered independent and separate works in
117
- themselves, then this License, and its terms, do not apply to those
118
- sections when you distribute them as separate works. But when you
119
- distribute the same sections as part of a whole which is a work based
120
- on the Program, the distribution of the whole must be on the terms of
121
- this License, whose permissions for other licensees extend to the
122
- entire whole, and thus to each and every part regardless of who wrote it.
123
-
124
- Thus, it is not the intent of this section to claim rights or contest
125
- your rights to work written entirely by you; rather, the intent is to
126
- exercise the right to control the distribution of derivative or
127
- collective works based on the Program.
128
-
129
- In addition, mere aggregation of another work not based on the Program
130
- with the Program (or with a work based on the Program) on a volume of
131
- a storage or distribution medium does not bring the other work under
132
- the scope of this License.
133
-
134
- 3. You may copy and distribute the Program (or a work based on it,
135
- under Section 2) in object code or executable form under the terms of
136
- Sections 1 and 2 above provided that you also do one of the following:
137
-
138
- a) Accompany it with the complete corresponding machine-readable
139
- source code, which must be distributed under the terms of Sections
140
- 1 and 2 above on a medium customarily used for software interchange; or,
141
-
142
- b) Accompany it with a written offer, valid for at least three
143
- years, to give any third party, for a charge no more than your
144
- cost of physically performing source distribution, a complete
145
- machine-readable copy of the corresponding source code, to be
146
- distributed under the terms of Sections 1 and 2 above on a medium
147
- customarily used for software interchange; or,
148
-
149
- c) Accompany it with the information you received as to the offer
150
- to distribute corresponding source code. (This alternative is
151
- allowed only for noncommercial distribution and only if you
152
- received the program in object code or executable form with such
153
- an offer, in accord with Subsection b above.)
154
-
155
- The source code for a work means the preferred form of the work for
156
- making modifications to it. For an executable work, complete source
157
- code means all the source code for all modules it contains, plus any
158
- associated interface definition files, plus the scripts used to
159
- control compilation and installation of the executable. However, as a
160
- special exception, the source code distributed need not include
161
- anything that is normally distributed (in either source or binary
162
- form) with the major components (compiler, kernel, and so on) of the
163
- operating system on which the executable runs, unless that component
164
- itself accompanies the executable.
165
-
166
- If distribution of executable or object code is made by offering
167
- access to copy from a designated place, then offering equivalent
168
- access to copy the source code from the same place counts as
169
- distribution of the source code, even though third parties are not
170
- compelled to copy the source along with the object code.
171
-
172
- 4. You may not copy, modify, sublicense, or distribute the Program
173
- except as expressly provided under this License. Any attempt
174
- otherwise to copy, modify, sublicense or distribute the Program is
175
- void, and will automatically terminate your rights under this License.
176
- However, parties who have received copies, or rights, from you under
177
- this License will not have their licenses terminated so long as such
178
- parties remain in full compliance.
179
-
180
- 5. You are not required to accept this License, since you have not
181
- signed it. However, nothing else grants you permission to modify or
182
- distribute the Program or its derivative works. These actions are
183
- prohibited by law if you do not accept this License. Therefore, by
184
- modifying or distributing the Program (or any work based on the
185
- Program), you indicate your acceptance of this License to do so, and
186
- all its terms and conditions for copying, distributing or modifying
187
- the Program or works based on it.
188
-
189
- 6. Each time you redistribute the Program (or any work based on the
190
- Program), the recipient automatically receives a license from the
191
- original licensor to copy, distribute or modify the Program subject to
192
- these terms and conditions. You may not impose any further
193
- restrictions on the recipients' exercise of the rights granted herein.
194
- You are not responsible for enforcing compliance by third parties to
195
- this License.
196
-
197
- 7. If, as a consequence of a court judgment or allegation of patent
198
- infringement or for any other reason (not limited to patent issues),
199
- conditions are imposed on you (whether by court order, agreement or
200
- otherwise) that contradict the conditions of this License, they do not
201
- excuse you from the conditions of this License. If you cannot
202
- distribute so as to satisfy simultaneously your obligations under this
203
- License and any other pertinent obligations, then as a consequence you
204
- may not distribute the Program at all. For example, if a patent
205
- license would not permit royalty-free redistribution of the Program by
206
- all those who receive copies directly or indirectly through you, then
207
- the only way you could satisfy both it and this License would be to
208
- refrain entirely from distribution of the Program.
209
-
210
- If any portion of this section is held invalid or unenforceable under
211
- any particular circumstance, the balance of the section is intended to
212
- apply and the section as a whole is intended to apply in other
213
- circumstances.
214
-
215
- It is not the purpose of this section to induce you to infringe any
216
- patents or other property right claims or to contest validity of any
217
- such claims; this section has the sole purpose of protecting the
218
- integrity of the free software distribution system, which is
219
- implemented by public license practices. Many people have made
220
- generous contributions to the wide range of software distributed
221
- through that system in reliance on consistent application of that
222
- system; it is up to the author/donor to decide if he or she is willing
223
- to distribute software through any other system and a licensee cannot
224
- impose that choice.
225
-
226
- This section is intended to make thoroughly clear what is believed to
227
- be a consequence of the rest of this License.
228
-
229
- 8. If the distribution and/or use of the Program is restricted in
230
- certain countries either by patents or by copyrighted interfaces, the
231
- original copyright holder who places the Program under this License
232
- may add an explicit geographical distribution limitation excluding
233
- those countries, so that distribution is permitted only in or among
234
- countries not thus excluded. In such case, this License incorporates
235
- the limitation as if written in the body of this License.
236
-
237
- 9. The Free Software Foundation may publish revised and/or new versions
238
- of the General Public License from time to time. Such new versions will
239
- be similar in spirit to the present version, but may differ in detail to
240
- address new problems or concerns.
241
-
242
- Each version is given a distinguishing version number. If the Program
243
- specifies a version number of this License which applies to it and "any
244
- later version", you have the option of following the terms and conditions
245
- either of that version or of any later version published by the Free
246
- Software Foundation. If the Program does not specify a version number of
247
- this License, you may choose any version ever published by the Free Software
248
- Foundation.
249
-
250
- 10. If you wish to incorporate parts of the Program into other free
251
- programs whose distribution conditions are different, write to the author
252
- to ask for permission. For software which is copyrighted by the Free
253
- Software Foundation, write to the Free Software Foundation; we sometimes
254
- make exceptions for this. Our decision will be guided by the two goals
255
- of preserving the free status of all derivatives of our free software and
256
- of promoting the sharing and reuse of software generally.
257
-
258
- NO WARRANTY
259
-
260
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261
- FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262
- OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263
- PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264
- OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266
- TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268
- REPAIR OR CORRECTION.
269
-
270
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271
- WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272
- REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273
- INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274
- OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275
- TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276
- YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277
- PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278
- POSSIBILITY OF SUCH DAMAGES.
279
-
280
- END OF TERMS AND CONDITIONS
281
-
282
- How to Apply These Terms to Your New Programs
283
-
284
- If you develop a new program, and you want it to be of the greatest
285
- possible use to the public, the best way to achieve this is to make it
286
- free software which everyone can redistribute and change under these terms.
287
-
288
- To do so, attach the following notices to the program. It is safest
289
- to attach them to the start of each source file to most effectively
290
- convey the exclusion of warranty; and each file should have at least
291
- the "copyright" line and a pointer to where the full notice is found.
292
-
293
- <one line to give the program's name and a brief idea of what it does.>
294
- Copyright (C) <year> <name of author>
295
-
296
- This program is free software; you can redistribute it and/or modify
297
- it under the terms of the GNU General Public License as published by
298
- the Free Software Foundation; either version 2 of the License, or
299
- (at your option) any later version.
300
-
301
- This program is distributed in the hope that it will be useful,
302
- but WITHOUT ANY WARRANTY; without even the implied warranty of
303
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304
- GNU General Public License for more details.
305
-
306
- You should have received a copy of the GNU General Public License along
307
- with this program; if not, write to the Free Software Foundation, Inc.,
308
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
309
-
310
- Also add information on how to contact you by electronic and paper mail.
311
-
312
- If the program is interactive, make it output a short notice like this
313
- when it starts in an interactive mode:
314
-
315
- Gnomovision version 69, Copyright (C) year name of author
316
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
317
- This is free software, and you are welcome to redistribute it
318
- under certain conditions; type `show c' for details.
319
-
320
- The hypothetical commands `show w' and `show c' should show the appropriate
321
- parts of the General Public License. Of course, the commands you use may
322
- be called something other than `show w' and `show c'; they could even be
323
- mouse-clicks or menu items--whatever suits your program.
324
-
325
- You should also get your employer (if you work as a programmer) or your
326
- school, if any, to sign a "copyright disclaimer" for the program, if
327
- necessary. Here is a sample; alter the names:
328
-
329
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
330
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
331
-
332
- <signature of Ty Coon>, 1 April 1989
333
- Ty Coon, President of Vice
334
-
335
- This General Public License does not permit incorporating your program into
336
- proprietary programs. If your program is a subroutine library, you may
337
- consider it more useful to permit linking proprietary applications with the
338
- library. If this is what you want to do, use the GNU Lesser General
339
- Public License instead of this License.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/uninstall.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
- /**
3
- * Fired when the plugin is uninstalled.
4
- * @since 1.0.0
5
- *
6
- * @package WooFeed
7
- */
8
-
9
- // If uninstall not called from WordPress, then exit.
10
- if ( ! defined('WP_UNINSTALL_PLUGIN') ) {
11
- exit;
12
- }
13
-
14
- wp_clear_scheduled_hook( 'woo_feed_cleanup_logs' );
15
- wp_clear_scheduled_hook( 'woo_feed_update' );
16
- // End of file uninstall.php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/woo-feed.php DELETED
@@ -1,1004 +0,0 @@
1
- <?php
2
- /**
3
- * The plugin bootstrap file
4
- *
5
- * @link https://webappick.com
6
- * @since 1.0.0
7
- * @package Woo_Feed
8
- *
9
- * @wordpress-plugin
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.3.60
14
- * Author: WebAppick
15
- * Author URI: https://webappick.com/
16
- * License: GPL v2
17
- * License URI: http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
18
- * Text Domain: woo-feed
19
- * Domain Path: /languages
20
- *
21
- * WP Requirement & Test
22
- * Requires at least: 4.4
23
- * Tested up to: 5.7
24
- * Requires PHP: 5.6
25
- *
26
- * WC Requirement & Test
27
- * WC requires at least: 3.2
28
- * WC tested up to: 5.0.0
29
- */
30
-
31
- if ( ! defined( 'ABSPATH' ) ) {
32
- die(); // If this file is called directly, abort.
33
- }
34
-
35
- if ( ! defined( 'WOO_FEED_FREE_VERSION' ) ) {
36
- /**
37
- * Plugin Version
38
- *
39
- * @var string
40
- * @since 3.1.6
41
- */
42
- define( 'WOO_FEED_FREE_VERSION', '4.3.60' );
43
- }
44
-
45
- if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
46
- /**
47
- * Plugin Base File
48
- *
49
- * @since 3.1.41
50
- * @var string
51
- */
52
- define( 'WOO_FEED_FREE_FILE', __FILE__ );
53
- }
54
- if ( ! defined( 'WOO_FEED_FREE_PATH' ) ) {
55
- /**
56
- * Plugin Path with trailing slash
57
- *
58
- * @var string dirname( __FILE__ )
59
- * * @since 3.1.6
60
- */
61
- /** @define "WOO_FEED_FREE_PATH" "./" */ // phpcs:ignore
62
- define( 'WOO_FEED_FREE_PATH', plugin_dir_path( WOO_FEED_FREE_FILE ) );
63
- }
64
- if ( ! defined( 'WOO_FEED_FREE_ADMIN_PATH' ) ) {
65
- /**
66
- * Admin File Path with trailing slash
67
- *
68
- * @var string
69
- * @since 3.1.6
70
- */
71
- define( 'WOO_FEED_FREE_ADMIN_PATH', WOO_FEED_FREE_PATH . 'admin/' );
72
- }
73
-
74
- if ( ! defined( 'WOO_FEED_LIBS_PATH' ) ) {
75
- /**
76
- * Admin File Path with trailing slash
77
- *
78
- * @var string
79
- */
80
- define( 'WOO_FEED_LIBS_PATH', WOO_FEED_FREE_PATH . 'libs/' );
81
- }
82
- if ( ! defined( 'WOO_FEED_PLUGIN_URL' ) ) {
83
- /**
84
- * Plugin Directory URL
85
- *
86
- * @var string
87
- * @since 3.1.37
88
- */
89
- define( 'WOO_FEED_PLUGIN_URL', trailingslashit( plugin_dir_url( WOO_FEED_FREE_FILE ) ) );
90
- }
91
- if ( ! defined( 'WOO_FEED_MIN_PHP_VERSION' ) ) {
92
- /**
93
- * Minimum PHP Version Supported
94
- *
95
- * @var string
96
- * @since 3.1.41
97
- */
98
- define( 'WOO_FEED_MIN_PHP_VERSION', '5.6' );
99
- }
100
- if ( ! defined( 'WOO_FEED_MIN_WC_VERSION' ) ) {
101
- /**
102
- * Minimum WooCommerce Version Supported
103
- *
104
- * @var string
105
- * @since 3.1.45
106
- */
107
- define( 'WOO_FEED_MIN_WC_VERSION', '3.2' );
108
- }
109
- if ( ! defined( 'WOO_FEED_PLUGIN_BASE_NAME' ) ) {
110
- /**
111
- * Plugin Base name..
112
- *
113
- * @var string
114
- * @since 3.1.41
115
- */
116
- define( 'WOO_FEED_PLUGIN_BASE_NAME', plugin_basename( WOO_FEED_FREE_FILE ) );
117
- }
118
-
119
- if ( ! defined( 'WOO_FEED_LOG_DIR' ) ) {
120
- $upload_dir = wp_get_upload_dir();
121
- /**
122
- * Log Directory
123
- *
124
- * @var string
125
- * @since 3.2.1
126
- */
127
- /** @define "WOO_FEED_LOG_DIR" "./../../uploads/woo-feed/logs" */ // phpcs:ignore
128
- define( 'WOO_FEED_LOG_DIR', $upload_dir['basedir'] . '/woo-feed/logs/' );
129
- }
130
-
131
- if ( ! defined( 'WOO_FEED_CACHE_TTL' ) ) {
132
- $_cache_ttl = get_option( 'woo_feed_settings', array( 'cache_ttl' => 6 * HOUR_IN_SECONDS ) );
133
- /**
134
- * Cache TTL
135
- *
136
- * @var int
137
- * @since 3.3.11
138
- */
139
- define( 'WOO_FEED_CACHE_TTL', $_cache_ttl['cache_ttl'] );
140
- }
141
-
142
- /**
143
- * Load Uses Tracker
144
- */
145
- require_once WOO_FEED_FREE_PATH . 'includes/classes/class-woo-feed-webappick-api.php';
146
- /**
147
- * Load Helper functions
148
- */
149
- require_once WOO_FEED_FREE_PATH . 'includes/hooks.php';
150
- require_once WOO_FEED_FREE_PATH . 'includes/log-helper.php';
151
- require_once WOO_FEED_FREE_PATH . 'includes/helper.php';
152
- require_once WOO_FEED_FREE_PATH . 'includes/cron-helper.php';
153
-
154
- /**
155
- * Installer
156
- */
157
- require_once WOO_FEED_FREE_PATH . 'includes/class-woo-feed-installer.php';
158
-
159
- if ( ! class_exists( 'Woo_Feed' ) ) {
160
- /**
161
- * The core plugin class that is used to define internationalization,
162
- * admin-specific hooks, and public-facing site hooks.
163
- */
164
- require WOO_FEED_FREE_PATH . 'includes/class-woo-feed.php';
165
- }
166
-
167
- if ( ! function_exists( 'run_woo_feed' ) ) {
168
- /**
169
- * Begins execution of the plugin.
170
- *
171
- * Since everything within the plugin is registered via hooks,
172
- * then kicking off the plugin from this point in the file does
173
- * not affect the page life cycle.
174
- *
175
- * @since 1.0.0
176
- */
177
- function run_woo_feed() {
178
- $plugin = new Woo_Feed();
179
- register_activation_hook( WOO_FEED_FREE_FILE, array( 'Woo_Feed_installer', 'install' ) );
180
- register_shutdown_function( 'woo_feed_log_errors_at_shutdown' );
181
- add_action( 'woo_feed_cleanup_logs', 'woo_feed_cleanup_logs' );
182
- /**
183
- * Ensure Feed Plugin runs only if WooCommerce loaded (installed and activated)
184
- *
185
- * @since 3.1.41
186
- */
187
- add_action( 'plugins_loaded', array( $plugin, 'run' ), PHP_INT_MAX );
188
- add_action( 'admin_notices', 'wooFeed_Admin_Notices' );
189
- add_action( 'admin_notices', 'wooFeed_To_ctxFeed' );
190
- WooFeedWebAppickAPI::getInstance();
191
- }
192
-
193
- run_woo_feed();
194
- }
195
-
196
- // ======================================================================================================================*
197
- //
198
- // Ajax Feed Making Development Start.
199
- //
200
- // ======================================================================================================================*
201
- if ( ! function_exists( 'woo_feed_get_product_information' ) ) {
202
- add_action( 'wp_ajax_get_product_information', 'woo_feed_get_product_information' );
203
- /**
204
- * Count Total Products
205
- */
206
- function woo_feed_get_product_information() {
207
- check_ajax_referer( 'wpf_feed_nonce' );
208
- if ( woo_feed_is_debugging_enabled() && ! current_user_can( 'manage_woocommerce' ) ) {
209
- woo_feed_log_debug_message( 'User doesnt have enough permission.' );
210
- wp_send_json_error( esc_html__( 'Unauthorized Action.', 'woo-feed' ) );
211
- die();
212
- }
213
- // @TODO use only WC_Product_Query it's available from WC 3.2, we don't support earlier versions of wc.
214
- if ( ! isset( $_REQUEST['feed'] ) ) {
215
- wp_send_json_error( esc_html__( 'Invalid Request.', 'woo-feed' ) );
216
- die();
217
- }
218
- $feed = sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) );
219
- $feed = woo_feed_extract_feed_option_name( $feed );
220
- $limit = isset( $_REQUEST['limit'] ) ? absint( $_REQUEST['limit'] ) : 200;
221
- $getConfig = maybe_unserialize( get_option( 'wf_config' . $feed ) );
222
-
223
- if ( woo_feed_wc_version_check( 3.2 ) ) {
224
- if ( woo_feed_is_debugging_enabled() ) {
225
- // clear log, set the pointer to the beginning of the file.
226
- woo_feed_delete_log( $getConfig['filename'] );
227
- woo_feed_log_feed_process( $getConfig['filename'], sprintf( 'Getting Data for %s feed.', $feed ) );
228
- woo_feed_log_feed_process( $getConfig['filename'], 'Generating Feed VIA Ajax...' );
229
- woo_feed_log_feed_process( $getConfig['filename'], sprintf( 'Getting Data for %s feed.', $feed ) );
230
- woo_feed_log_feed_process( $getConfig['filename'], sprintf( 'Current Limit is %d.', $limit ) );
231
- woo_feed_log( $getConfig['filename'], 'Feed Config::' . PHP_EOL . print_r( $getConfig, true ), 'info' ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r
232
- }
233
- try {
234
- do_action( 'before_woo_feed_get_product_information', $getConfig );
235
- $products = new Woo_Feed_Products_v3( $getConfig );
236
- $ids = $products->query_products();
237
- do_action( 'after_woo_feed_get_product_information', $getConfig );
238
- woo_feed_log_feed_process( $getConfig['filename'], sprintf( 'Total %d product found', is_array( $ids ) && ! empty( $ids ) ? count( $ids ) : 0 ) );
239
- if ( is_array( $ids ) && ! empty( $ids ) ) {
240
- rsort( $ids ); // sorting ids in descending order
241
- if ( count( $ids ) > $limit ) {
242
- $batches = array_chunk( $ids, $limit );
243
- } else {
244
- $batches = array( $ids );
245
- }
246
- woo_feed_log_feed_process( $getConfig['filename'], sprintf( 'Total %d batches', count( $batches ) ) );
247
- wp_send_json_success(
248
- array(
249
- 'product' => $batches,
250
- 'total' => count( $ids ),
251
- 'success' => true,
252
- )
253
- );
254
- wp_die();
255
- } else {
256
- wp_send_json_error(
257
- array(
258
- 'message' => esc_html__( 'No products found. Add product or change feed config before generate the feed.', 'woo-feed' ),
259
- 'success' => false,
260
- )
261
- );
262
- wp_die();
263
- }
264
- } catch ( Exception $e ) {
265
- if ( woo_feed_is_debugging_enabled() ) {
266
- $message = 'Error getting Product Ids.' . PHP_EOL . 'Caught Exception :: ' . $e->getMessage();
267
- woo_feed_log( $getConfig['filename'], $message, 'critical', $e, true );
268
- woo_feed_log_fatal_error( $message, $e );
269
- }
270
- wp_send_json_error(
271
- array(
272
- 'message' => esc_html__( 'Failed to fetch products.', 'woo-feed' ),
273
- 'success' => false,
274
- )
275
- );
276
- wp_die();
277
- }
278
- } else {
279
- do_action( 'before_woo_feed_get_product_information', $getConfig );
280
- $products = wp_count_posts( 'product' );
281
- do_action( 'after_woo_feed_get_product_information', $getConfig );
282
- if ( $products->publish > 0 ) {
283
- $data['success'] = true;
284
- wp_send_json_success(
285
- array(
286
- 'product' => $products->publish,
287
- 'success' => false,
288
- )
289
- );
290
- wp_die();
291
- } else {
292
- wp_send_json_error(
293
- array(
294
- 'message' => esc_html__( 'No products found. Add product or change feed config before generate the feed.', 'woo-feed' ),
295
- 'success' => false,
296
- )
297
- );
298
- wp_die();
299
- }
300
- }
301
- }
302
- }
303
- if ( ! function_exists( 'woo_feed_make_batch_feed' ) ) {
304
- add_action( 'wp_ajax_make_batch_feed', 'woo_feed_make_batch_feed' );
305
- /**
306
- * Ajax Batch Callback
307
- *
308
- * @return void
309
- */
310
- function woo_feed_make_batch_feed() {
311
- check_ajax_referer( 'wpf_feed_nonce' );
312
- if ( ! current_user_can( 'manage_woocommerce' ) ) {
313
- woo_feed_log_debug_message( 'User doesnt have enough permission.' );
314
- wp_send_json_error( esc_html__( 'Unauthorized Action.', 'woo-feed' ) );
315
- die();
316
- }
317
- if ( ! isset( $_REQUEST['feed'] ) ) {
318
- wp_send_json_error( esc_html__( 'Invalid Request.', 'woo-feed' ) );
319
- die();
320
- }
321
-
322
- $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) ) );
323
- $feedInfo = get_option( 'wf_config' . $feedName, false );
324
-
325
- if ( ! $feedInfo ) {
326
- $getFeedConfig = maybe_unserialize( get_option( 'wf_feed_' . $feedName ) );
327
- $feedInfo = $getFeedConfig['feedrules'];
328
- }
329
-
330
- $feedInfo['productIds'] = isset( $_REQUEST['products'] ) ? array_map( 'absint', $_REQUEST['products'] ) : array();
331
- $offset = isset( $_REQUEST['loop'] ) ? absint( $_REQUEST['loop'] ) : 0;
332
- if ( woo_feed_is_debugging_enabled() ) {
333
- if ( 0 === $offset ) {
334
- woo_feed_log_feed_process( $feedInfo['filename'], 'Generating Feed... ' );
335
- }
336
- if ( woo_feed_is_debugging_enabled() ) {
337
- woo_feed_log_feed_process( $feedInfo['filename'], sprintf( 'Processing Loop %d.', ( $offset + 1 ) ) );
338
- $m = 'Processing Product Following Product (IDs) : ' . PHP_EOL;
339
- foreach ( array_chunk( $feedInfo['productIds'], 10 ) as $productIds ) { // pretty print log [B-)=
340
- $m .= implode( ', ', $productIds ) . PHP_EOL;
341
- }
342
- woo_feed_log_feed_process( $feedInfo['filename'], $m );
343
- }
344
- }
345
-
346
- if ( 0 === $offset ) {
347
- woo_feed_unlink_tempFiles( $feedInfo, $feedName );
348
- }
349
- $feed_data = woo_feed_generate_batch_data( $feedInfo, $feedName );
350
- if ( $feed_data ) {
351
- woo_feed_log_feed_process( $feedInfo['filename'], sprintf( 'Done Processing Loop %d.', ( $offset + 1 ) ) );
352
- wp_send_json_success(
353
- array(
354
- 'success' => true,
355
- 'products' => 'yes',
356
- )
357
- );
358
- } else {
359
- woo_feed_log_feed_process( $feedInfo['filename'], sprintf( 'No Products found @ Loop %d.', $offset ) );
360
- wp_send_json_success(
361
- array(
362
- 'success' => true,
363
- 'products' => 'no',
364
- 'config' => $feedInfo,
365
- )
366
- );
367
- }
368
- wp_die();
369
- }
370
- }
371
- if ( ! function_exists( 'woo_feed_save_feed_file' ) ) {
372
- add_action( 'wp_ajax_save_feed_file', 'woo_feed_save_feed_file' );
373
- /**
374
- * Ajax Response for Save Feed File
375
- *
376
- * @throws Exception
377
- * @return void
378
- */
379
- function woo_feed_save_feed_file() {
380
- check_ajax_referer( 'wpf_feed_nonce' );
381
- if ( ! current_user_can( 'manage_woocommerce' ) ) {
382
- woo_feed_log_debug_message( 'User doesnt have enough permission.' );
383
- wp_send_json_error( esc_html__( 'Unauthorized Action.', 'woo-feed' ) );
384
- die();
385
- }
386
- if ( ! isset( $_REQUEST['feed'] ) ) {
387
- wp_send_json_error( esc_html__( 'Invalid Feed.', 'woo-feed' ) );
388
- die();
389
- }
390
-
391
- $feedName = woo_feed_extract_feed_option_name( sanitize_text_field( wp_unslash( $_REQUEST['feed'] ) ) );
392
- $info = get_option( 'wf_config' . $feedName, false );
393
-
394
- if ( ! $info ) {
395
- $getFeedConfig = maybe_unserialize( get_option( 'wf_feed_' . $feedName ) );
396
- $info = $getFeedConfig['feedrules'];
397
- }
398
-
399
- $feedService = $info['provider'];
400
- $type = $info['feedType'];
401
- woo_feed_log_feed_process( $info['filename'], sprintf( 'Preparing Final Feed (%s) File...', $type ) );
402
- woo_feed_log_feed_process( $info['filename'], 'Getting Batch Chunks' );
403
- $feedHeader = woo_feed_get_batch_feed_info( $feedService, $type, 'wf_store_feed_header_info_' . $feedName );
404
- if ( ! $feedHeader ) {
405
- woo_feed_log_feed_process( $info['filename'], 'Unable to Get Header Chunk' );
406
- }
407
- $feedBody = woo_feed_get_batch_feed_info( $feedService, $type, 'wf_store_feed_body_info_' . $feedName );
408
- if ( ! $feedBody ) {
409
- woo_feed_log_feed_process( $info['filename'], 'Unable to Get Body Chunk' );
410
- }
411
- $feedFooter = woo_feed_get_batch_feed_info( $feedService, $type, 'wf_store_feed_footer_info_' . $feedName );
412
- if ( ! $feedFooter ) {
413
- woo_feed_log_feed_process( $info['filename'], 'Unable to Get Footer Chunk' );
414
- }
415
-
416
- // make file xml string
417
- if ( isset( $info['provider'] ) && 'googlereview' === $info['provider'] ) {
418
- // review template xml string
419
- $string = $feedHeader . $feedBody . $feedFooter;
420
-
421
- } else {
422
- if ( 'csv' === $type || 'tsv' === $type || 'xls' === $type ) {
423
- $csvHead[0] = $feedHeader;
424
- if ( ! empty( $csvHead ) && ! empty( $feedBody ) ) {
425
- $string = array_merge( $csvHead, $feedBody );
426
- } else {
427
- $string = array();
428
- }
429
- } else {
430
- $string = $feedHeader . $feedBody . $feedFooter;
431
- }
432
- }
433
-
434
- $upload_dir = wp_get_upload_dir();
435
- $path = $upload_dir['basedir'] . '/woo-feed/' . $feedService . '/' . $type;
436
- $saveFile = false;
437
- $file = '';
438
- // Check If any products founds
439
- if ( $string && ! empty( $string ) ) {
440
- // Save File
441
- $file = $path . '/' . $feedName . '.' . $type;
442
- try {
443
- $save = new Woo_Feed_Savefile();
444
- if ( 'csv' === $type || 'tsv' === $type || 'xls' === $type ) {
445
- $saveFile = $save->saveValueFile( $path, $file, $string, $info, $type );
446
- } else {
447
- $saveFile = $save->saveFile( $path, $file, $string );
448
- }
449
- if ( $saveFile ) {
450
- $message = 'Feed File Successfully Saved.';
451
- } else {
452
- $message = 'Unable to save Feed file. Check Directory Permission.';
453
- }
454
- woo_feed_log_feed_process( $info['filename'], $message );
455
- } catch ( Exception $e ) {
456
- $message = 'Error Saving Feed File' . PHP_EOL . 'Caught Exception :: ' . $e->getMessage();
457
- woo_feed_log( $info['filename'], $message, 'critical', $e, true );
458
- woo_feed_log_fatal_error( $message, $e );
459
- }
460
- } else {
461
- woo_feed_log_feed_process( $info['filename'], 'No Product Found... Exiting File Save Process...' );
462
- if ( isset( $info['fattribute'] ) && count( $info['fattribute'] ) ) {
463
- $data = array(
464
- 'success' => false,
465
- 'message' => esc_html__( 'Products not found with your filtering condition.', 'woo-feed' ),
466
- );
467
- } else {
468
- $data = array(
469
- 'success' => false,
470
- 'message' => esc_html__( 'No Product Found with your feed configuration. Please Update And Generate the feed again.', 'woo-feed' ),
471
- );
472
- }
473
- wp_send_json_error( $data );
474
- wp_die();
475
- }
476
-
477
- $feed_URL = woo_feed_get_file_url( $feedName, $feedService, $type );
478
- // Save Info into database.
479
- $feedInfo = array(
480
- 'feedrules' => $info,
481
- 'url' => $feed_URL,
482
- 'last_updated' => date( 'Y-m-d H:i:s', strtotime( current_time( 'mysql' ) ) ),
483
- );
484
- $feedOldInfo = maybe_unserialize( get_option( 'wf_feed_' . $feedName ) );
485
- if ( isset( $feedOldInfo['status'] ) ) {
486
- $feedInfo['status'] = $feedOldInfo['status'];
487
- } else {
488
- $feedInfo['status'] = 1;
489
- }
490
-
491
- woo_feed_unlink_tempFiles( $info, $feedName );
492
-
493
- woo_feed_log_feed_process( $info['filename'], 'Updating Feed Information.' );
494
-
495
- update_option( 'wf_feed_' . $feedName, serialize( $feedInfo ), false ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
496
-
497
- if ( $saveFile ) {
498
- // FTP File Upload Info
499
- $ftpEnabled = sanitize_text_field( $info['ftpenabled'] );
500
-
501
- if ( $ftpEnabled ) {
502
- woo_feed_handle_file_transfer( $file, $feedName . '.' . $type, $info );
503
- }
504
-
505
- $cat = woo_feed_check_google_category( $feedInfo );
506
- $data = array(
507
- 'info' => $feedInfo,
508
- 'url' => $feed_URL,
509
- 'cat' => $cat,
510
- 'message' => esc_html__( 'Feed Making Complete', 'woo-feed' ),
511
- );
512
- woo_feed_log_feed_process( $info['filename'], 'Done Processing Feed. Exiting Process...' );
513
- wp_send_json_success( $data );
514
- } else {
515
- woo_feed_log_feed_process( $info['filename'], 'Done Processing Feed. Exiting Process...' );
516
- $data = array(
517
- 'success' => false,
518
- 'message' => esc_html__( 'Failed to save feed file. Please confirm that your WordPress directory have read and write permission.', 'woo-feed' ),
519
- );
520
- wp_send_json_error( $data );
521
- }
522
- wp_die();
523
- }
524
- }
525
- // Ajax Helper.
526
- if ( ! function_exists( 'woo_feed_generate_batch_data' ) ) {
527
- /**
528
- * Generate Feed Data
529
- *
530
- * @param array $info Feed info.
531
- * @param string $feedSlug feed option slug.
532
- *
533
- * @return bool
534
- */
535
- function woo_feed_generate_batch_data( $info, $feedSlug ) {
536
- // parse rules.
537
- $info = woo_feed_parse_feed_rules( isset( $info['feedrules'] ) ? $info['feedrules'] : $info );
538
-
539
- try {
540
- do_action( 'before_woo_feed_generate_batch_data', $info );
541
- $status = false;
542
- if ( ! empty( $info['provider'] ) ) {
543
- // Get Post data.
544
- $feedService = sanitize_text_field( $info['provider'] );
545
- $type = sanitize_text_field( $info['feedType'] );
546
- $feedRules = $info;
547
- // Get Feed info.
548
- $products = new Woo_Generate_Feed( $feedService, $feedRules );
549
- woo_feed_log_feed_process( $info['filename'], sprintf( 'Initializing merchant Class %s for %s', $feedService, $info['provider'] ) );
550
- $feed = $products->getProducts();
551
- if ( ! empty( $feed['body'] ) ) {
552
- $feedBody = 'wf_store_feed_body_info_' . $feedSlug;
553
- $prevFeed = woo_feed_get_batch_feed_info( $feedService, $type, $feedBody );
554
- if ( $prevFeed ) {
555
- if ( 'csv' === $type || 'tsv' === $type || 'xls' === $type ) {
556
- if ( ! empty( $prevFeed ) ) {
557
- $newFeed = array_merge( $prevFeed, $feed['body'] );
558
- woo_feed_save_batch_feed_info( $feedService, $type, $newFeed, $feedBody, $info );
559
- }
560
- } else {
561
- $newFeed = $prevFeed . $feed['body'];
562
- woo_feed_save_batch_feed_info( $feedService, $type, $newFeed, $feedBody, $info );
563
- }
564
- } else {
565
- woo_feed_save_batch_feed_info( $feedService, $type, $feed['body'], $feedBody, $info );
566
- }
567
- woo_feed_save_batch_feed_info( $feedService, $type, $feed['header'], 'wf_store_feed_header_info_' . $feedSlug, $info );
568
- woo_feed_save_batch_feed_info( $feedService, $type, $feed['footer'], 'wf_store_feed_footer_info_' . $feedSlug, $info );
569
- $status = true;
570
- } else {
571
- $status = false;
572
- }
573
- }
574
- do_action( 'after_woo_feed_generate_batch_data', $info );
575
- return $status;
576
- } catch ( Exception $e ) {
577
- $message = 'Error Generating Product Data.' . PHP_EOL . 'Caught Exception :: ' . $e->getMessage();
578
- woo_feed_log( $info['filename'], $message, 'critical', $e, true );
579
- woo_feed_log_fatal_error( $message, $e );
580
- return false;
581
- }
582
- }
583
- }
584
-
585
- // Menu Callback.
586
- if ( ! function_exists( 'woo_feed_generate_new_feed' ) ) {
587
- /**
588
- * Generate Feed
589
- */
590
- function woo_feed_generate_new_feed() {
591
- if ( isset( $_POST['provider'], $_POST['_wpnonce'], $_POST['filename'], $_POST['feedType'] ) ) {
592
- // Verify Nonce.
593
- if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ), 'woo_feed_form_nonce' ) ) {
594
- wp_die( esc_html__( 'Failed security check', 'woo-feed' ), 403 );
595
- }
596
- // Check feed type (file ext).
597
- if ( ! woo_feed_check_valid_extension( sanitize_text_field( wp_unslash( $_POST['feedType'] ) ) ) ) {
598
- wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
599
- }
600
-
601
- $fileName = woo_feed_save_feed_config_data( $_POST );
602
-
603
- wp_safe_redirect(
604
- add_query_arg(
605
- array(
606
- 'feed_created' => (int) false !== $fileName,
607
- 'feed_regenerate' => 1,
608
- 'feed_name' => $fileName ? $fileName : '',
609
- ),
610
- admin_url( 'admin.php?page=webappick-manage-feeds' )
611
- )
612
- );
613
- wp_die();
614
- }
615
-
616
- require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-admin-display.php';
617
- }
618
- }
619
- if ( ! function_exists( 'woo_feed_manage_feed' ) ) {
620
- /**
621
- * Manage Feeds
622
- */
623
- function woo_feed_manage_feed() {
624
-
625
- // @TODO use admin_post_ action for form handling.
626
- // Manage action for category mapping.
627
- if ( isset( $_GET['action'] ) && 'edit-feed' === $_GET['action'] ) {
628
- if ( ! defined( 'WOO_FEED_EDIT_CONFIG' ) ) {
629
- define( 'WOO_FEED_EDIT_CONFIG', true );
630
- }
631
- if ( count( $_POST ) && isset( $_POST['provider'], $_POST['feed_id'], $_POST['feed_option_name'], $_POST['filename'], $_POST['feedType'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
632
- $nonce = isset( $_POST['_wpnonce'] ) && ! empty( $_POST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ) : '';
633
- if ( ! wp_verify_nonce( $nonce, 'wf_edit_feed' ) ) {
634
- wp_die( esc_html__( 'Failed security check', 'woo-feed' ), 403 );
635
- }
636
- // Check feed type (file ext)
637
- if ( ! woo_feed_check_valid_extension( sanitize_text_field( wp_unslash( $_POST['feedType'] ) ) ) ) {
638
- wp_die( esc_html__( 'Invalid Feed Type!', 'woo-feed' ), 400 );
639
- }
640
-
641
- // check if name is changed... save as new, rename feed isn't implemented ... it can be...
642
- // delete old feed save data as new feed.
643
- $feed_option_name = ( isset( $_POST['feed_option_name'] ) && ! empty( $_POST['feed_option_name'] ) ) ? sanitize_text_field( wp_unslash( $_POST['feed_option_name'] ) ) : null;
644
- // if ( $_POST['filename'] !== $_POST['feed_option_name'] ) {
645
- // $feed_option_name = ( isset( $_POST['filename'] ) && ! empty( $_POST['filename'] ) ) ? sanitize_text_field( $_POST['filename'] ) : null;
646
- // Delete old feed info & file
647
- // delete_option( 'wf_feed_' . $_POST['feed_option_name'] );
648
- // delete_option( 'wf_config' . $_POST['feed_option_name'] );
649
- //
650
- // $upload_dir = wp_get_upload_dir();
651
- // $feedService = $_POST['provider'];
652
- // $type = $_POST['feedType'];
653
- // $old_name = $_POST['feed_option_name'];
654
- // $path = $upload_dir['basedir'] . '/woo-feed/' . $feedService . '/' . $type . '/' . $old_name . '.' . $type;
655
- // if ( file_exists( $path ) ) {
656
- // unlink( $path );
657
- // }
658
- // }
659
- // if form submitted via $_POST['edit-feed'] then only config and regenerate otherwise only update the config...
660
- // no need to check other submit button ... eg. $_POST['save_feed_config']
661
- $fileName = woo_feed_save_feed_config_data( $_POST, $feed_option_name, isset( $_POST['edit-feed'] ) );
662
- // redirect to the feed list with status
663
- // @TODO this should be handled in admin_init action for proper redirection to work...
664
- wp_safe_redirect(
665
- add_query_arg(
666
- array(
667
- 'feed_updated' => (int) false !== $fileName,
668
- 'feed_regenerate' => (int) isset( $_POST['edit-feed'] ),
669
- 'feed_name' => $fileName ? $fileName : '',
670
- ),
671
- admin_url( 'admin.php?page=webappick-manage-feeds' )
672
- )
673
- );
674
- die();
675
- }
676
- if ( isset( $_GET['feed'] ) && ! empty( $_GET['feed'] ) ) {
677
- global $wpdb, $feedRules, $feedName, $feedId, $provider;
678
- $feedName = sanitize_text_field( wp_unslash( $_GET['feed'] ) );
679
- $feedInfo = maybe_unserialize( get_option( $feedName ) );
680
- if ( false !== $feedInfo ) {
681
- $query = $wpdb->prepare( "SELECT option_id FROM $wpdb->options WHERE option_name = %s LIMIT 1", $feedName );
682
- if ( ! $feedId ) {
683
- $result = $wpdb->get_row( $query ); // phpcs:ignore
684
- if ( $result ) {
685
- $feedId = $result->option_id;
686
- }
687
- }
688
- $provider = strtolower( $feedInfo['feedrules']['provider'] );
689
- $feedRules = $feedInfo['feedrules'];
690
- require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-edit-template.php';
691
- } else {
692
- update_option( 'wpf_message', esc_html__( 'Feed Does not Exists.', 'woo-feed' ), false );
693
- wp_safe_redirect( admin_url( 'admin.php?page=webappick-manage-feeds&wpf_message=error' ) );
694
- die();
695
- }
696
- }
697
- } else {
698
- // Update Interval.
699
- if ( isset( $_POST['wf_schedule'] ) ) {
700
- if ( isset( $_POST['wf_schedule_nonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['wf_schedule_nonce'] ) ), 'wf_schedule' ) ) {
701
- $interval = absint( $_POST['wf_schedule'] );
702
- if ( $interval >= woo_feed_get_minimum_interval_option() ) {
703
- if ( update_option( 'wf_schedule', sanitize_text_field( wp_unslash( $_POST['wf_schedule'] ) ), false ) ) {
704
- wp_clear_scheduled_hook( 'woo_feed_update' );
705
- add_filter( 'cron_schedules', 'Woo_Feed_installer::cron_schedules' ); // phpcs:ignore
706
- // wp_schedule_event( time(), 'woo_feed_corn', 'woo_feed_update' );
707
- $update = 1; // success.
708
- } else {
709
- $update = 2; // db fail.
710
- }
711
- } else {
712
- $update = 3; // invalid value.
713
- }
714
- } else {
715
- $update = 4; // invalid nonce.
716
- }
717
- wp_safe_redirect( add_query_arg( array( 'schedule_updated' => $update ), admin_url( 'admin.php?page=webappick-manage-feeds' ) ) );
718
- die();
719
- }
720
- require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-manage-list.php';
721
- }
722
- }
723
- }
724
-
725
- // Get Merchant template.
726
- if ( ! function_exists( 'feed_merchant_view' ) ) {
727
- // Load Feed Templates.
728
- add_action( 'wp_ajax_get_feed_merchant', 'feed_merchant_view' );
729
- /**
730
- * Ajax response for Create/Add Feed config table for selected Merchant/Provider
731
- *
732
- * @return void
733
- */
734
- function feed_merchant_view() {
735
- check_ajax_referer( 'wpf_feed_nonce' );
736
- if ( ! current_user_can( 'manage_woocommerce' ) ) {
737
- woo_feed_log_debug_message( 'User doesnt have enough permission.' );
738
- wp_send_json_error( esc_html__( 'Unauthorized Action.', 'woo-feed' ) );
739
- die();
740
- }
741
- global $feedRules, $wooFeedDropDown, $merchant, $provider;
742
- $provider = isset( $_REQUEST['merchant'] ) && ! empty( $_REQUEST['merchant'] ) ? strtolower( sanitize_text_field( wp_unslash( $_REQUEST['merchant'] ) ) ) : '';
743
- if ( empty( $provider ) ) {
744
- wp_send_json_error( esc_html__( 'Invalid Merchant', 'woo-feed' ) );
745
- wp_die();
746
- }
747
- $merchant = new Woo_Feed_Merchant( $provider );
748
- $feedRules = $merchant->get_template();
749
- $wooFeedDropDown = new Woo_Feed_Dropdown();
750
- ob_start();
751
- require_once WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-edit-tabs.php';
752
- wp_send_json_success(
753
- array(
754
- 'tabs' => ob_get_clean(),
755
- 'feedType' => strtolower( $merchant->get_feed_types( true ) ),
756
- 'itemsWrapper' => $feedRules['itemsWrapper'],
757
- 'itemWrapper' => $feedRules['itemWrapper'],
758
- 'delimiter' => $feedRules['delimiter'],
759
- 'enclosure' => $feedRules['enclosure'],
760
- 'extraHeader' => $feedRules['extraHeader'],
761
- )
762
- );
763
- wp_die();
764
- }
765
- }
766
- // Get Google Categories.
767
- if ( ! function_exists( 'woo_feed_get_google_categories' ) ) {
768
- add_action( 'wp_ajax_get_google_categories', 'woo_feed_get_google_categories' );
769
- /**
770
- * Ajax Response for Google Category Dropdown Data
771
- *
772
- * @return void
773
- */
774
- function woo_feed_get_google_categories() {
775
- check_ajax_referer( 'wpf_feed_nonce' );
776
- if ( ! current_user_can( 'manage_woocommerce' ) ) {
777
- woo_feed_log_debug_message( 'User doesnt have enough permission.' );
778
- wp_send_json_error( esc_html__( 'Unauthorized Action.', 'woo-feed' ) );
779
- wp_die();
780
- }
781
- $wooFeedDropDown = new Woo_Feed_Dropdown();
782
- wp_send_json_success( $wooFeedDropDown->googleTaxonomyArray() );
783
- die();
784
- }
785
- }
786
- // sftp status detection.
787
- if ( ! function_exists( 'woo_feed_get_ssh2_status' ) ) {
788
- add_action( 'wp_ajax_get_ssh2_status', 'woo_feed_get_ssh2_status' );
789
- /**
790
- * Ajax Response for ssh2 status check
791
- *
792
- * @return void
793
- */
794
- function woo_feed_get_ssh2_status() {
795
- check_ajax_referer( 'wpf_feed_nonce' );
796
- if ( ! current_user_can( 'manage_woocommerce' ) ) {
797
- woo_feed_log_debug_message( 'User doesnt have enough permission.' );
798
- wp_send_json_error( esc_html__( 'Unauthorized Action.', 'woo-feed' ) );
799
- wp_die();
800
- }
801
- if ( extension_loaded( 'ssh2' ) ) {
802
- wp_send_json_success( 'exists' );
803
- } else {
804
- wp_send_json_success( 'not_exists' );
805
- }
806
- wp_die();
807
- }
808
- }
809
- // Feed cron status update.
810
- if ( ! function_exists( 'woo_feed_update_feed_status' ) ) {
811
- /**
812
- * Update feed status
813
- */
814
- add_action( 'wp_ajax_update_feed_status', 'woo_feed_update_feed_status' );
815
- /**
816
- * Ajax Response for Update Feed Status
817
- *
818
- * @return void
819
- */
820
- function woo_feed_update_feed_status() {
821
- check_ajax_referer( 'wpf_feed_nonce' );
822
- if ( ! current_user_can( 'manage_woocommerce' ) ) {
823
- woo_feed_log_debug_message( 'User doesnt have enough permission.' );
824
- wp_send_json_error( esc_html__( 'Unauthorized Action.', 'woo-feed' ) );
825
- wp_die();
826
- }
827
-
828
- $feedName = isset( $_POST['feedName'] ) ? sanitize_text_field( wp_unslash( $_POST['feedName'] ) ) : '';
829
- if ( ! empty( $feedName ) ) {
830
- $feedInfo = maybe_unserialize( get_option( $feedName ) );
831
- $feedInfo['status'] = isset( $_POST['status'] ) && 1 === (int) $_POST['status'] ? 1 : 0;
832
-
833
- $feed_slug = str_replace( 'wf_feed_', 'wf_config', $feedName );
834
- if ( 1 === $feedInfo['status'] ) {
835
- if ( ! wp_next_scheduled( 'woo_feed_update_single_feed', array( $feed_slug ) ) ) {
836
- wp_schedule_event( time(), 'woo_feed_corn', 'woo_feed_update_single_feed', array( $feed_slug ) );
837
- }
838
- } else {
839
- wp_clear_scheduled_hook( 'woo_feed_update_single_feed', array( $feed_slug ) );
840
- }
841
-
842
- update_option( $feedName, serialize( $feedInfo ), false ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize
843
- wp_send_json_success( array( 'status' => true ) );
844
- } else {
845
- wp_send_json_error( array( 'status' => false ) );
846
- }
847
- wp_die();
848
- }
849
- }
850
-
851
- // Render and handle status page options.
852
- if ( ! function_exists( 'woo_feed_system_status' ) ) {
853
- /**
854
- * Feed Status Page
855
- *
856
- * @return void
857
- */
858
- function woo_feed_system_status() {
859
- require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-status.php';
860
- }
861
- }
862
-
863
- // Render and handle settings page options.
864
- if ( ! function_exists( 'woo_feed_config_feed' ) ) {
865
- /**
866
- * Feed Settings Page
867
- *
868
- * @return void
869
- */
870
- function woo_feed_config_feed() {
871
- if ( isset( $_POST['wa_woo_feed_config'], $_POST['_wpnonce'] ) ) {
872
- check_admin_referer( 'woo-feed-config' );
873
-
874
- $data = array(
875
- 'per_batch' => isset( $_POST['batch_limit'] ) ? absint( $_POST['batch_limit'] ) : '',
876
- 'product_query_type' => isset( $_POST['product_query_type'] ) ? sanitize_text_field( wp_unslash( $_POST['product_query_type'] ) ) : '',
877
- 'enable_error_debugging' => isset( $_POST['enable_error_debugging'] ) ? sanitize_text_field( wp_unslash( $_POST['enable_error_debugging'] ) ) : '',
878
- 'cache_ttl' => isset( $_POST['cache_ttl'] ) ? absint( $_POST['cache_ttl'] ) : '',
879
- 'overridden_structured_data' => isset( $_POST['overridden_structured_data'] ) ? sanitize_text_field( wp_unslash( $_POST['overridden_structured_data'] ) ) : '',
880
- 'disable_mpn' => isset( $_POST['disable_mpn'] ) ? sanitize_text_field( wp_unslash( $_POST['disable_mpn'] ) ) : '',
881
- 'disable_brand' => isset( $_POST['disable_brand'] ) ? sanitize_text_field( wp_unslash( $_POST['disable_brand'] ) ) : '',
882
- 'disable_pixel' => isset( $_POST['disable_pixel'] ) ? sanitize_text_field( wp_unslash( $_POST['disable_pixel'] )) : '',
883
- 'pixel_id' => isset( $_POST['pixel_id'] ) ? sanitize_text_field( wp_unslash( $_POST['pixel_id'] )) : '',
884
- 'allow_all_shipping' => isset( $_POST['allow_all_shipping'] ) ? sanitize_text_field( wp_unslash( $_POST['allow_all_shipping'] ) ) : '',
885
- 'only_free_shipping' => isset( $_POST['only_free_shipping'] ) ? sanitize_text_field( wp_unslash( $_POST['only_free_shipping'] ) ) : '',
886
- 'only_local_pickup_shipping' => isset( $_POST['only_local_pickup_shipping'] ) ? sanitize_text_field( wp_unslash( $_POST['only_local_pickup_shipping'] ) ) : '',
887
- );
888
-
889
- woo_feed_save_options( $data );
890
-
891
- // $currencyAPI = isset( $_POST['currency_api_code'] ) ? sanitize_text_field( $_POST['currency_api_code'] ) : '';
892
- // update_option( 'woo_feed_currency_api_code', $currencyAPI, false );
893
-
894
- if ( isset( $_POST['opt_in'] ) && 'on' === $_POST['opt_in'] ) {
895
- WooFeedWebAppickAPI::getInstance()->trackerOptIn();
896
- } else {
897
- WooFeedWebAppickAPI::getInstance()->trackerOptOut();
898
- }
899
- // Actions exec by user from settings page
900
- if ( isset( $_POST['clear_all_logs'] ) && 'on' === $_POST['clear_all_logs'] ) {
901
- woo_feed_delete_all_logs();
902
- }
903
- if ( isset( $_POST['purge_feed_cache'] ) ) {
904
- woo_feed_flush_cache_data();
905
- }
906
-
907
- wp_safe_redirect( admin_url( 'admin.php?page=webappick-feed-settings&settings_updated=1' ) );
908
- die();
909
- }
910
-
911
- require WOO_FEED_FREE_ADMIN_PATH . 'partials/woo-feed-settings.php';
912
- }
913
- }
914
- if ( ! function_exists( 'woo_feed_flash_cache_action' ) ) {
915
- /**
916
- * Flash cache after specific actions
917
- *
918
- * @return void
919
- */
920
- function woo_feed_flash_cache_action() {
921
- woo_feed_flush_cache_data();
922
- }
923
- }
924
-
925
- // add_action('woocommerce_after_add_attribute_fields','woo_feed_flash_cache_action');
926
- // add_action('woocommerce_after_edit_attribute_fields','woo_feed_flash_cache_action');
927
-
928
-
929
- // Suggest other plugins of webappick.
930
- if ( ! class_exists( 'webappick_suggest_plugin' ) ) {
931
- class webappick_suggest_plugin {
932
-
933
- static function init() {
934
- if ( is_admin() ) {
935
- if( ! is_plugin_active('xt-woo-variation-swatches/xt-woo-variation-swatches.php') ) {
936
- add_filter( 'install_plugins_table_api_args_featured', array( __CLASS__, 'featured_plugins_tab' ) );
937
- }
938
- }
939
- } // init
940
- // add our plugins to recommended list
941
- static function plugins_api_result( $res, $action, $args ) {
942
- remove_filter( 'plugins_api_result', array( __CLASS__, 'plugins_api_result' ), 10, 1 );
943
- $res = self::add_plugin_favs( 'webappick-pdf-invoice-for-woocommerce', $res );
944
-
945
- return $res;
946
- } // plugins_api_result
947
- // helper function for adding plugins to fav list
948
- static function featured_plugins_tab( $args ) {
949
- add_filter( 'plugins_api_result', array( __CLASS__, 'plugins_api_result' ), 10, 3 );
950
- return $args;
951
- } // featured_plugins_tab
952
- // add single plugin to list of favs
953
- static function add_plugin_favs( $plugin_slug, $res ) {
954
- if ( ! empty( $res->plugins ) && is_array( $res->plugins ) ) {
955
- foreach ( $res->plugins as $plugin ) {
956
- if ( is_object( $plugin ) && ! empty( $plugin->slug ) && $plugin->slug === $plugin_slug ) {
957
- return $res;
958
- }
959
- } // foreach
960
- }
961
- $plugin_info = get_transient( 'wf-plugin-info-' . $plugin_slug );
962
- if ( $plugin_info ) {
963
- array_unshift( $res->plugins, $plugin_info );
964
- } else {
965
- $plugin_info = plugins_api(
966
- 'plugin_information',
967
- array(
968
- 'slug' => $plugin_slug,
969
- 'is_ssl' => is_ssl(),
970
- 'fields' => array(
971
- 'banners' => true,
972
- 'reviews' => true,
973
- 'downloaded' => true,
974
- 'active_installs' => true,
975
- 'icons' => true,
976
- 'short_description' => true,
977
- ),
978
- )
979
- );
980
- if ( ! is_wp_error( $plugin_info ) ) {
981
- $res->plugins[] = $plugin_info;
982
- set_transient( 'wf-plugin-info-' . $plugin_slug, $plugin_info, DAY_IN_SECONDS * 7 );
983
- }
984
- }
985
- return $res;
986
- } // add_plugin_favs
987
- }
988
- add_action( 'init', array( 'webappick_suggest_plugin', 'init' ) );
989
- }
990
-
991
- register_deactivation_hook( __FILE__, 'woo_feed_deactivate' );
992
- if ( ! function_exists( 'woo_feed_deactivate' ) ) {
993
- /**
994
- * Flash cache purged after plugin deactivation
995
- *
996
- * @return void
997
- */
998
- function woo_feed_deactivate() {
999
- woo_feed_flush_cache_data(); // clean caches.
1000
- }
1001
- }
1002
-
1003
-
1004
- // End of file woo-feed.php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.3.61
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
@@ -39,7 +39,7 @@ if ( ! defined( 'WOO_FEED_FREE_VERSION' ) ) {
39
  * @var string
40
  * @since 3.1.6
41
  */
42
- define( 'WOO_FEED_FREE_VERSION', '4.3.61' );
43
  }
44
 
45
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {
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.3.62
14
  * Author: WebAppick
15
  * Author URI: https://webappick.com/
16
  * License: GPL v2
39
  * @var string
40
  * @since 3.1.6
41
  */
42
+ define( 'WOO_FEED_FREE_VERSION', '4.3.62' );
43
  }
44
 
45
  if ( ! defined( 'WOO_FEED_FREE_FILE' ) ) {