Product Feed PRO for WooCommerce - Version 8.9.3

Version Description

Fixed an issue for prices of bundled products that always added the VAT to the price

Download this release

Release Info

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

Code changes from version 8.9.2 to 8.9.3

TODO.txt CHANGED
@@ -5,6 +5,7 @@ Tutorial / Blog posts:
5
  - Explain all the different fields/attributes that can be selected from the drop-downs
6
 
7
  Priority issues:
 
8
  - Facebook pixel: add other attributes to the tracking apart from the curreny product ID (such as the SKU);
9
  - Own hosted plugin updating: https://rudrastyh.com/wordpress/self-hosted-plugin-update.html
10
  - My adtribes environment with download link in it
@@ -16,6 +17,7 @@ Priority issues:
16
  - Only update feed when changes to products have been made
17
  - Add header to extra fields on product edit pages
18
  - Add possibility to create OR rules
 
19
  - Build a better WP Cron check, current one is not good enough
20
  - AMAZON integration:
21
  - requires a professional seller account, 39 dollar a month, before being able to create a developer account
5
  - Explain all the different fields/attributes that can be selected from the drop-downs
6
 
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
17
  - Only update feed when changes to products have been made
18
  - Add header to extra fields on product edit pages
19
  - Add possibility to create OR rules
20
+ - Add support for Google My Business product feeds
21
  - Build a better WP Cron check, current one is not good enough
22
  - AMAZON integration:
23
  - requires a professional seller account, 39 dollar a month, before being able to create a developer account
classes/class-get-products.php CHANGED
@@ -658,8 +658,6 @@ class WooSEA_Get_Products {
658
  $zone_count = 0;
659
  $nr_shipping_zones = count($shipping_zones);
660
  $zone_details = array();
661
- $base_location = wc_get_base_location();
662
- $base_country = $base_location['country'];
663
  $from_currency = get_woocommerce_currency();
664
  $add_all_shipping = "no";
665
  $add_all_shipping = get_option ('add_all_shipping');
@@ -677,7 +675,7 @@ class WooSEA_Get_Products {
677
 
678
  foreach ( $zone['zone_locations'] as $zone_type ) {
679
  $code_from_config = $this->woosea_country_to_code($project_config['countries']);
680
-
681
  // Only add shipping zones to the feed for specific feed country
682
  $ship_found = strpos($zone_type->code, $code_from_config);
683
 
@@ -693,8 +691,8 @@ class WooSEA_Get_Products {
693
  $zone_expl = explode(":", $zone_type->code);
694
  $zone_details['country'] = $zone_expl[0];
695
 
696
- // Adding a region is only allowed for these countries
697
- $region_countries = array ('US','JP','AU','FR');
698
  if(in_array($zone_details['country'], $region_countries)){
699
  $zone_details['region'] = $zone_expl[1];
700
  }
@@ -707,13 +705,14 @@ class WooSEA_Get_Products {
707
  } else {
708
  // Unknown shipping zone type
709
  }
710
-
711
  // Get the g:services and g:prices, because there could be multiple services the $shipping_arr could multiply again
712
  // g:service = "Method title - Shipping class costs"
713
  // for example, g:service = "Estimated Shipping - Heavy shipping". g:price would be 180
714
  $shipping_methods = $zone['shipping_methods'];
715
 
716
  foreach ($shipping_methods as $k => $v){
 
717
  if($v->enabled == "yes"){
718
  if(empty($zone_details['country'])){
719
  $zone_details['service'] = $zone['zone_name'] ." ". $v->title;
@@ -915,7 +914,9 @@ class WooSEA_Get_Products {
915
  $zone_details['free'] = "yes";
916
  } else {
917
  // No Free Shipping Allowed for this product
918
- unset($zone_details);
 
 
919
  unset($shipping_cost);
920
  }
921
  }
@@ -987,13 +988,12 @@ class WooSEA_Get_Products {
987
  }
988
  }
989
 
990
- // Fix empty countries
991
  foreach($shipping_arr as $k => $v){
992
-
993
- if(empty($k['country'])){
994
- $lalala = get_option( 'woocommerce_default_country' );
995
- $shipping_arr[$k]['country'] = get_option( 'woocommerce_default_country' );
996
- //unset($shipping_arr[$k]);
997
  }
998
  }
999
  return $shipping_arr;
@@ -2452,8 +2452,9 @@ class WooSEA_Get_Products {
2452
  if(($product->get_type() == "bundle") OR ($product->get_type() == "composite")){
2453
  $meta = get_post_meta($product_data['id']);
2454
  if($product->get_type() == "bundle"){
2455
- $product_data['price'] = round(get_post_meta($product_data['id'], '_price', true) * (100+$tax_rates[1]['rate'])/100,2);
2456
- $product_data['net_price'] = get_post_meta($product_data['id'], '_price', true);
 
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']){
@@ -2651,6 +2652,7 @@ class WooSEA_Get_Products {
2651
  // Get only shipping costs
2652
  $product_data['shipping_price'] = 0;
2653
  $shipping_arr = $product_data['shipping'];
 
2654
  if(is_array($shipping_arr)){
2655
  foreach($shipping_arr as $akey => $arr){
2656
  //$product_data['shipping_price'] = $arr['price'];
@@ -2658,8 +2660,17 @@ class WooSEA_Get_Products {
2658
  if(isset($pieces_ship['1'])){
2659
  $product_data['shipping_price'] = $pieces_ship['1'];
2660
  }
2661
- }
2662
 
 
 
 
 
 
 
 
 
 
2663
  }
2664
 
2665
  // Google Dynamic Remarketing feeds require the English price notation
@@ -3599,9 +3610,8 @@ class WooSEA_Get_Products {
3599
  $shipping_str = "";
3600
  foreach ($product_data[$attr_value['mapfrom']] as $key => $value){
3601
  $shipping_str .= "||";
3602
-
3603
  foreach($value as $k => $v){
3604
-
3605
  if($k == "country"){
3606
  $shipping_str .= ":WOOSEA_COUNTRY##$v";
3607
  } elseif ($k == "region"){
658
  $zone_count = 0;
659
  $nr_shipping_zones = count($shipping_zones);
660
  $zone_details = array();
 
 
661
  $from_currency = get_woocommerce_currency();
662
  $add_all_shipping = "no";
663
  $add_all_shipping = get_option ('add_all_shipping');
675
 
676
  foreach ( $zone['zone_locations'] as $zone_type ) {
677
  $code_from_config = $this->woosea_country_to_code($project_config['countries']);
678
+
679
  // Only add shipping zones to the feed for specific feed country
680
  $ship_found = strpos($zone_type->code, $code_from_config);
681
 
691
  $zone_expl = explode(":", $zone_type->code);
692
  $zone_details['country'] = $zone_expl[0];
693
 
694
+ // Adding a region is only allowed for these countries
695
+ $region_countries = array ('US','JP','AU','FR','CA');
696
  if(in_array($zone_details['country'], $region_countries)){
697
  $zone_details['region'] = $zone_expl[1];
698
  }
705
  } else {
706
  // Unknown shipping zone type
707
  }
708
+
709
  // Get the g:services and g:prices, because there could be multiple services the $shipping_arr could multiply again
710
  // g:service = "Method title - Shipping class costs"
711
  // for example, g:service = "Estimated Shipping - Heavy shipping". g:price would be 180
712
  $shipping_methods = $zone['shipping_methods'];
713
 
714
  foreach ($shipping_methods as $k => $v){
715
+
716
  if($v->enabled == "yes"){
717
  if(empty($zone_details['country'])){
718
  $zone_details['service'] = $zone['zone_name'] ." ". $v->title;
914
  $zone_details['free'] = "yes";
915
  } else {
916
  // No Free Shipping Allowed for this product
917
+ //unset($zone_details);
918
+ unset($zone_details['service']);
919
+ unset($zone_details['price']);
920
  unset($shipping_cost);
921
  }
922
  }
988
  }
989
  }
990
 
991
+ // Fix empty services
992
  foreach($shipping_arr as $k => $v){
993
+ if(empty($v['service'])){
994
+ // $lalala = get_option( 'woocommerce_default_country' );
995
+ // $shipping_arr[$k]['country'] = get_option( 'woocommerce_default_country' );
996
+ unset($shipping_arr[$k]);
 
997
  }
998
  }
999
  return $shipping_arr;
2452
  if(($product->get_type() == "bundle") OR ($product->get_type() == "composite")){
2453
  $meta = get_post_meta($product_data['id']);
2454
  if($product->get_type() == "bundle"){
2455
+ $product_data['price'] = round(get_post_meta($product_data['id'], '_price', true));
2456
+ $product_data['price_forced'] = round(get_post_meta($product_data['id'], '_price', true) * (100+$tax_rates[1]['rate'])/100,2);
2457
+ $product_data['net_price'] = get_post_meta($product_data['id'], '_price', true);
2458
  $product_data['regular_price'] = round(get_post_meta($product_data['id'], '_regular_price', true) * (100+$tax_rates[1]['rate'])/100,2);
2459
  $product_data['net_regular_price'] = get_post_meta($product_data['id'], '_regular_price', true);
2460
  if($product_data['price'] != $product_data['regular_price']){
2652
  // Get only shipping costs
2653
  $product_data['shipping_price'] = 0;
2654
  $shipping_arr = $product_data['shipping'];
2655
+
2656
  if(is_array($shipping_arr)){
2657
  foreach($shipping_arr as $akey => $arr){
2658
  //$product_data['shipping_price'] = $arr['price'];
2660
  if(isset($pieces_ship['1'])){
2661
  $product_data['shipping_price'] = $pieces_ship['1'];
2662
  }
2663
+ }
2664
 
2665
+ // Check if we need to add a region
2666
+ foreach($shipping_arr as $akey => $arr){
2667
+ if(isset($arr['country'])){
2668
+ if (preg_match("/:/i",$arr['country'])){
2669
+ $region_split = explode(":", $arr['country']);
2670
+ $sgipping_arr[$akey]['region'] = $region_split[1];
2671
+ }
2672
+ }
2673
+ }
2674
  }
2675
 
2676
  // Google Dynamic Remarketing feeds require the English price notation
3610
  $shipping_str = "";
3611
  foreach ($product_data[$attr_value['mapfrom']] as $key => $value){
3612
  $shipping_str .= "||";
3613
+
3614
  foreach($value as $k => $v){
 
3615
  if($k == "country"){
3616
  $shipping_str .= ":WOOSEA_COUNTRY##$v";
3617
  } elseif ($k == "region"){
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.2',
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.4',
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.2
9
 
10
  == Description ==
11
 
@@ -320,6 +320,12 @@ Questions left or unanswered? Please do not hesitate to contact us at support@ad
320
 
321
  === Changelog ===
322
 
 
 
 
 
 
 
323
  = 8.9.2 (2020-10-13) =
324
  * Next to CSV feeds for Bing Shopping the plugin now also strips the g: from the header for TXT feeds
325
 
@@ -2843,6 +2849,12 @@ Questions left or unanswered? Please do not hesitate to contact us at support@ad
2843
 
2844
  == Upgrade Notice ==
2845
 
 
 
 
 
 
 
2846
  = 8.9.2 =
2847
  Next to CSV feeds for Bing Shopping the plugin now also strips the g: from the header for TXT feeds
2848
 
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.4
9
 
10
  == Description ==
11
 
320
 
321
  === Changelog ===
322
 
323
+ = 8.9.4 (2020-10-16) =
324
+ * Fixed a shipping issue where some shipping zone regions were missing
325
+
326
+ = 8.9.3 (2020-10-15) =
327
+ * Fixed an issue for prices of bundled products that always added the VAT to the price
328
+
329
  = 8.9.2 (2020-10-13) =
330
  * Next to CSV feeds for Bing Shopping the plugin now also strips the g: from the header for TXT feeds
331
 
2849
 
2850
  == Upgrade Notice ==
2851
 
2852
+ = 8.9.4 =
2853
+ Fixed a shipping issue where some shipping zone regions were missing
2854
+
2855
+ = 8.9.3 =
2856
+ Fixed an issue for prices of bundled products that always added the VAT to the price
2857
+
2858
  = 8.9.2 =
2859
  Next to CSV feeds for Bing Shopping the plugin now also strips the g: from the header for TXT feeds
2860
 
woocommerce-sea.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Plugin Name: Product Feed PRO for WooCommerce
4
- * Version: 8.9.2
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.2' );
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.4
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.4' );
52
  define( 'WOOCOMMERCESEA_PLUGIN_NAME', 'woocommerce-product-feed-pro' );
53
  define( 'WOOCOMMERCESEA_PLUGIN_NAME_SHORT', 'woo-product-feed-pro' );
54