Product Feed PRO for WooCommerce - Version 8.9.6

Version Description

Bundle and composite products now also working with WPML and WCML Escaping & characters in deeplinks

Download this release

Release Info

Developer jorisverwater
Plugin Icon 128x128 Product Feed PRO for WooCommerce
Version 8.9.6
Comparing to
See all releases

Code changes from version 8.9.5 to 8.9.6

TODO.txt CHANGED
@@ -8,6 +8,7 @@ Priority issues:
8
  - Add a preview option so only 5-10 products are being generated
9
  - Facebook pixel: add other attributes to the tracking apart from the curreny product ID (such as the SKU);
10
  - Own hosted plugin updating: https://rudrastyh.com/wordpress/self-hosted-plugin-update.html
 
11
  - My adtribes environment with download link in it
12
  - Add possibility to copy feed configuration from one WooCommerce instance to the other instance
13
  - Google local product feed inventory in XML format (not just TXT like it is now)
8
  - Add a preview option so only 5-10 products are being generated
9
  - Facebook pixel: add other attributes to the tracking apart from the curreny product ID (such as the SKU);
10
  - Own hosted plugin updating: https://rudrastyh.com/wordpress/self-hosted-plugin-update.html
11
+ - Skroutz grouping issue: https://wordpress.org/support/topic/grouping-attribute/
12
  - My adtribes environment with download link in it
13
  - Add possibility to copy feed configuration from one WooCommerce instance to the other instance
14
  - Google local product feed inventory in XML format (not just TXT like it is now)
classes/class-get-products.php CHANGED
@@ -2272,7 +2272,7 @@ class WooSEA_Get_Products {
2272
  }
2273
 
2274
  $product_data['link'] = get_permalink( $product_data['id'])."$utm_part";
2275
- $variable_link = get_permalink( $product_data['id'] );
2276
  $vlink_piece = explode("?", $variable_link);
2277
  $qutm_part = ltrim($utm_part, "&");
2278
  $qutm_part = ltrim($qutm_part, "amp;");
@@ -2399,40 +2399,6 @@ class WooSEA_Get_Products {
2399
  //$product_data['system_sale_price'] = ($product->get_sale_price() != $sale_price) ? $this->get_product_price($product, $sale_price ) : '';
2400
  $product_data['system_sale_price'] = wc_format_decimal($product_data['system_sale_price'],2);
2401
 
2402
- // Override price when WCML price is different than the non-translated price
2403
- if(isset($project_config['WCML'])){
2404
- $product_data['price'] = apply_filters('wcml_raw_price_amount', $product_data['price'], $project_config['WCML']);
2405
- $product_data['regular_price'] = apply_filters('wcml_raw_price_amount', $product_data['regular_price'], $project_config['WCML']);
2406
- $product_data['sale_price'] = apply_filters('wcml_raw_price_amount', $product_data['sale_price'], $project_config['WCML']);
2407
-
2408
- // Make sure the product ID is not NULL either
2409
- global $woocommerce_wpml;
2410
- if(!is_null($product_data['WCML'])){
2411
- $product_data['non_geo_wcml_price'] = $woocommerce_wpml->multi_currency->prices->get_product_price_in_currency( $product_data['id'], $project_config['WCML'] );
2412
- }
2413
-
2414
- // When WCML manual prices have been entered
2415
- if(!is_null($product_data['id'])){
2416
- $custom_prices = $woocommerce_wpml->get_multi_currency()->custom_prices->get_product_custom_prices( $product_data['id'], $project_config['WCML'] );
2417
-
2418
- if($custom_prices['_price'] > 0){
2419
- $product_data['price'] = $custom_prices['_price'];
2420
- }
2421
-
2422
- if($custom_prices['_regular_price'] > 0){
2423
- $product_data['regular_price'] = $custom_prices['_regular_price'];
2424
- }
2425
-
2426
- if($custom_prices['_sale_price'] > 0){
2427
- $product_data['sale_price'] = $custom_prices['_sale_price'];
2428
- }
2429
- }
2430
- }
2431
-
2432
- if($product_data['regular_price'] == $product_data['sale_price']){
2433
- $product_data['sale_price'] = "";
2434
- }
2435
-
2436
  if(!empty($tax_rates)){
2437
  foreach ($tax_rates as $tk => $tv){
2438
  if($tv['rate'] > 0){
@@ -2457,7 +2423,6 @@ class WooSEA_Get_Products {
2457
  $product_data['regular_price'] = round(get_post_meta($product_data['id'], '_regular_price', true) * (100+$tax_rates[1]['rate'])/100,2);
2458
  $product_data['net_regular_price'] = get_post_meta($product_data['id'], '_regular_price', true);
2459
  if($product_data['price'] != $product_data['regular_price']){
2460
- $product_data['sale_price'] = round(get_post_meta($product_data['id'], '_sale_price', true) * (100+$tax_rates[1]['rate'])/100,2);
2461
  $product_data['net_sale_price'] = get_post_meta($product_data['id'], '_sale_price', true);
2462
  }
2463
  } else {
@@ -2476,6 +2441,40 @@ class WooSEA_Get_Products {
2476
  }
2477
  }
2478
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2479
  // Determine the gross prices of products
2480
  if($product->get_price()){
2481
  $product_data['price_forced'] = round(wc_get_price_excluding_tax($product,array('price'=> $product->get_price())) * (100+$tax_rates[1]['rate'])/100,2);
2272
  }
2273
 
2274
  $product_data['link'] = get_permalink( $product_data['id'])."$utm_part";
2275
+ $variable_link = htmlspecialchars(get_permalink( $product_data['id']));
2276
  $vlink_piece = explode("?", $variable_link);
2277
  $qutm_part = ltrim($utm_part, "&");
2278
  $qutm_part = ltrim($qutm_part, "amp;");
2399
  //$product_data['system_sale_price'] = ($product->get_sale_price() != $sale_price) ? $this->get_product_price($product, $sale_price ) : '';
2400
  $product_data['system_sale_price'] = wc_format_decimal($product_data['system_sale_price'],2);
2401
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2402
  if(!empty($tax_rates)){
2403
  foreach ($tax_rates as $tk => $tv){
2404
  if($tv['rate'] > 0){
2423
  $product_data['regular_price'] = round(get_post_meta($product_data['id'], '_regular_price', true) * (100+$tax_rates[1]['rate'])/100,2);
2424
  $product_data['net_regular_price'] = get_post_meta($product_data['id'], '_regular_price', true);
2425
  if($product_data['price'] != $product_data['regular_price']){
 
2426
  $product_data['net_sale_price'] = get_post_meta($product_data['id'], '_sale_price', true);
2427
  }
2428
  } else {
2441
  }
2442
  }
2443
 
2444
+ // Override price when WCML price is different than the non-translated price
2445
+ if(isset($project_config['WCML'])){
2446
+ $product_data['price'] = apply_filters('wcml_raw_price_amount', $product_data['price'], $project_config['WCML']);
2447
+ $product_data['regular_price'] = apply_filters('wcml_raw_price_amount', $product_data['regular_price'], $project_config['WCML']);
2448
+ $product_data['sale_price'] = apply_filters('wcml_raw_price_amount', $product_data['sale_price'], $project_config['WCML']);
2449
+
2450
+ // Make sure the product ID is not NULL either
2451
+ global $woocommerce_wpml;
2452
+ if(!is_null($product_data['WCML'])){
2453
+ $product_data['non_geo_wcml_price'] = $woocommerce_wpml->multi_currency->prices->get_product_price_in_currency( $product_data['id'], $project_config['WCML'] );
2454
+ }
2455
+
2456
+ // When WCML manual prices have been entered
2457
+ if(!is_null($product_data['id'])){
2458
+ $custom_prices = $woocommerce_wpml->get_multi_currency()->custom_prices->get_product_custom_prices( $product_data['id'], $project_config['WCML'] );
2459
+
2460
+ if($custom_prices['_price'] > 0){
2461
+ $product_data['price'] = $custom_prices['_price'];
2462
+ }
2463
+
2464
+ if($custom_prices['_regular_price'] > 0){
2465
+ $product_data['regular_price'] = $custom_prices['_regular_price'];
2466
+ }
2467
+
2468
+ if($custom_prices['_sale_price'] > 0){
2469
+ $product_data['sale_price'] = $custom_prices['_sale_price'];
2470
+ }
2471
+ }
2472
+ }
2473
+
2474
+ if($product_data['regular_price'] == $product_data['sale_price']){
2475
+ $product_data['sale_price'] = "";
2476
+ }
2477
+
2478
  // Determine the gross prices of products
2479
  if($product->get_price()){
2480
  $product_data['price_forced'] = round(wc_get_price_excluding_tax($product,array('price'=> $product->get_price())) * (100+$tax_rates[1]['rate'])/100,2);
js/woosea_key.js CHANGED
@@ -27,7 +27,7 @@ jQuery(document).ready(function($) {
27
  var license_key = $('#license-key').val();
28
 
29
  jQuery.ajax({
30
- url: 'https://www.adtribes.io/check/license.php?key=' + license_key + '&email=' + license_email + '&domain=' + root_domain + '&version=8.9.5',
31
  jsonp: 'callback',
32
  dataType: 'jsonp',
33
  type: 'GET',
27
  var license_key = $('#license-key').val();
28
 
29
  jQuery.ajax({
30
+ url: 'https://www.adtribes.io/check/license.php?key=' + license_key + '&email=' + license_email + '&domain=' + root_domain + '&version=8.9.6',
31
  jsonp: 'callback',
32
  dataType: 'jsonp',
33
  type: 'GET',
readme.txt CHANGED
@@ -5,7 +5,7 @@ License URI: http://www.gnu.org/licenses/gpl.html
5
  Tags: Product Feed, Google Shopping, Google Shopping Feed, WooCommerce Product Feed, WooCommerce Product Feed PRO, Bing Shopping, Bing product feed, Bing remarking, Google Merchant Feed, Google DRM Feed, Google Dynamic Remarketing Feed, Facebook feed, Google feed, Bing feed, Facebook Product Feed, Facebook Dynamic remarketing, Data Feed, WooCommerce Feed, XML product feed, CSV product feed, TSV, TXT product feed, comparison shopping engines, comparison shopping websites, vergelijk.nl, vergelijk.be, vertaa.fi, beslist.nl, kieskeurig.nl, bol.com, raketten, pricerunner, pricegrabber, Buy, leGuide, Kelkoo, Twenga, Yandex, Etsy, Dealtime, Shopzilla, Billiger, Google Product Review feed
6
  Requires at least: 4.5
7
  Tested up to: 5.5
8
- Stable tag: 8.9.5
9
 
10
  == Description ==
11
 
@@ -320,6 +320,10 @@ Questions left or unanswered? Please do not hesitate to contact us at support@ad
320
 
321
  === Changelog ===
322
 
 
 
 
 
323
  = 8.9.5 (2020-10-21) =
324
  * Tested for compatibility with WooCommerce 4.6
325
 
@@ -2852,6 +2856,10 @@ Questions left or unanswered? Please do not hesitate to contact us at support@ad
2852
 
2853
  == Upgrade Notice ==
2854
 
 
 
 
 
2855
  = 8.9.5 =
2856
  Tested for compatibility with WooCommerce 4.6
2857
 
5
  Tags: Product Feed, Google Shopping, Google Shopping Feed, WooCommerce Product Feed, WooCommerce Product Feed PRO, Bing Shopping, Bing product feed, Bing remarking, Google Merchant Feed, Google DRM Feed, Google Dynamic Remarketing Feed, Facebook feed, Google feed, Bing feed, Facebook Product Feed, Facebook Dynamic remarketing, Data Feed, WooCommerce Feed, XML product feed, CSV product feed, TSV, TXT product feed, comparison shopping engines, comparison shopping websites, vergelijk.nl, vergelijk.be, vertaa.fi, beslist.nl, kieskeurig.nl, bol.com, raketten, pricerunner, pricegrabber, Buy, leGuide, Kelkoo, Twenga, Yandex, Etsy, Dealtime, Shopzilla, Billiger, Google Product Review feed
6
  Requires at least: 4.5
7
  Tested up to: 5.5
8
+ Stable tag: 8.9.6
9
 
10
  == Description ==
11
 
320
 
321
  === Changelog ===
322
 
323
+ = 8.9.6 (2020-10-22) =
324
+ * Escaping & characters in deeplinks
325
+ * Bundled and Composite products now also working for WPML/WCML
326
+
327
  = 8.9.5 (2020-10-21) =
328
  * Tested for compatibility with WooCommerce 4.6
329
 
2856
 
2857
  == Upgrade Notice ==
2858
 
2859
+ = 8.9.6 =
2860
+ Bundle and composite products now also working with WPML and WCML
2861
+ Escaping & characters in deeplinks
2862
+
2863
  = 8.9.5 =
2864
  Tested for compatibility with WooCommerce 4.6
2865
 
woocommerce-sea.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Plugin Name: Product Feed PRO for WooCommerce
4
- * Version: 8.9.5
5
  * Plugin URI: https://www.adtribes.io/support/?utm_source=wpadmin&utm_medium=plugin&utm_campaign=woosea_product_feed_pro
6
  * Description: Configure and maintain your WooCommerce product feeds for Google Shopping, Facebook, Remarketing, Bing, Yandex, Comparison shopping websites and over a 100 channels more.
7
  * Author: AdTribes.io
@@ -48,7 +48,7 @@ if (!defined('ABSPATH')) {
48
  * Plugin versionnumber, please do not override.
49
  * Define some constants
50
  */
51
- define( 'WOOCOMMERCESEA_PLUGIN_VERSION', '8.9.5' );
52
  define( 'WOOCOMMERCESEA_PLUGIN_NAME', 'woocommerce-product-feed-pro' );
53
  define( 'WOOCOMMERCESEA_PLUGIN_NAME_SHORT', 'woo-product-feed-pro' );
54
 
1
  <?php
2
  /**
3
  * Plugin Name: Product Feed PRO for WooCommerce
4
+ * Version: 8.9.6
5
  * Plugin URI: https://www.adtribes.io/support/?utm_source=wpadmin&utm_medium=plugin&utm_campaign=woosea_product_feed_pro
6
  * Description: Configure and maintain your WooCommerce product feeds for Google Shopping, Facebook, Remarketing, Bing, Yandex, Comparison shopping websites and over a 100 channels more.
7
  * Author: AdTribes.io
48
  * Plugin versionnumber, please do not override.
49
  * Define some constants
50
  */
51
+ define( 'WOOCOMMERCESEA_PLUGIN_VERSION', '8.9.6' );
52
  define( 'WOOCOMMERCESEA_PLUGIN_NAME', 'woocommerce-product-feed-pro' );
53
  define( 'WOOCOMMERCESEA_PLUGIN_NAME_SHORT', 'woo-product-feed-pro' );
54