Product Feed PRO for WooCommerce - Version 7.6.6

Version Description

Added a new attribute named "All images (comma separated)" which adds all product images on one line, comma separated The total product orders attribute is pretty heavy on MySql so we are now only requesting this data when it has been added to the field mapping and/or filters and rules

Download this release

Release Info

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

Code changes from version 7.6.5 to 7.6.6

classes/class-attributes.php CHANGED
@@ -277,6 +277,7 @@ public function get_mapping_attributes_dropdown() {
277
  "image_8" => "Additional image 8",
278
  "image_9" => "Additional image 9",
279
  "image_10" => "Additional image 10",
 
280
  );
281
 
282
  /**
@@ -463,6 +464,7 @@ public function get_mapping_attributes_dropdown() {
463
  "image_8" => "Additional image 8",
464
  "image_9" => "Additional image 9",
465
  "image_10" => "Additional image 10",
 
466
  );
467
 
468
  $attributes = array_merge($attributes, $images);
277
  "image_8" => "Additional image 8",
278
  "image_9" => "Additional image 9",
279
  "image_10" => "Additional image 10",
280
+ "all_images" => "All images (comma separated)",
281
  );
282
 
283
  /**
464
  "image_8" => "Additional image 8",
465
  "image_9" => "Additional image 9",
466
  "image_10" => "Additional image 10",
467
+ "all_images" => "All images (comma separated)",
468
  );
469
 
470
  $attributes = array_merge($attributes, $images);
classes/class-get-products.php CHANGED
@@ -2156,6 +2156,7 @@ class WooSEA_Get_Products {
2156
  $product_data['sale_price_effective_date'] = "";
2157
  }
2158
  $product_data['image'] = wp_get_attachment_url($product->get_image_id());
 
2159
 
2160
  // For variable products I need to get the product gallery images of the simple mother product
2161
  if($product_data['item_group_id'] > 0){
@@ -2165,6 +2166,7 @@ class WooSEA_Get_Products {
2165
  $gal_id=1;
2166
  foreach ($gallery_ids as $gallery_key => $gallery_value){
2167
  $product_data["image_" . $gal_id] = wp_get_attachment_url($gallery_value);
 
2168
  $gal_id++;
2169
  }
2170
  }
@@ -2173,9 +2175,12 @@ class WooSEA_Get_Products {
2173
  $gal_id=1;
2174
  foreach ($gallery_ids as $gallery_key => $gallery_value){
2175
  $product_data["image_" . $gal_id] = wp_get_attachment_url($gallery_value);
 
2176
  $gal_id++;
2177
  }
2178
  }
 
 
2179
  $product_data['product_type'] = $product->get_type();
2180
  $product_data['content_type'] = "product";
2181
  if($product_data['product_type'] == "variation"){
@@ -2714,9 +2719,29 @@ class WooSEA_Get_Products {
2714
  $product_data['exclude_from_all'] = "no";
2715
 
2716
  // Get number of orders for this product
2717
- $product_data['total_product_orders'] = 0;
2718
- $sales_array = $this->woosea_get_nr_orders_variation ( $product_data['id'] );
2719
- $product_data['total_product_orders'] = $sales_array[0];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2720
 
2721
  $visibility_list = wp_get_post_terms($product_data['item_group_id'], 'product_visibility', array("fields" => "all"));
2722
 
2156
  $product_data['sale_price_effective_date'] = "";
2157
  }
2158
  $product_data['image'] = wp_get_attachment_url($product->get_image_id());
2159
+ $product_data['all_images'] = $product_data['image'];
2160
 
2161
  // For variable products I need to get the product gallery images of the simple mother product
2162
  if($product_data['item_group_id'] > 0){
2166
  $gal_id=1;
2167
  foreach ($gallery_ids as $gallery_key => $gallery_value){
2168
  $product_data["image_" . $gal_id] = wp_get_attachment_url($gallery_value);
2169
+ $product_data['all_images'] .= ",".wp_get_attachment_url($gallery_value);
2170
  $gal_id++;
2171
  }
2172
  }
2175
  $gal_id=1;
2176
  foreach ($gallery_ids as $gallery_key => $gallery_value){
2177
  $product_data["image_" . $gal_id] = wp_get_attachment_url($gallery_value);
2178
+ $product_data['all_images'] .= ",".wp_get_attachment_url($gallery_value);
2179
  $gal_id++;
2180
  }
2181
  }
2182
+
2183
+ $product_data['all_images'] = ltrim($product_data['all_images'],',');
2184
  $product_data['product_type'] = $product->get_type();
2185
  $product_data['content_type'] = "product";
2186
  if($product_data['product_type'] == "variation"){
2719
  $product_data['exclude_from_all'] = "no";
2720
 
2721
  // Get number of orders for this product
2722
+ // First check if user added this field or created a rule or filter on it
2723
+ $ruleset = "false";
2724
+ if(array_key_exists('rules', $project_config)){
2725
+ foreach($project_config['rules'] as $rkey => $rvalue){
2726
+ if(in_array('total_product_orders', $rvalue)){
2727
+ $ruleset = "true";
2728
+ }
2729
+ }
2730
+ }
2731
+
2732
+ if(array_key_exists('rules2', $project_config)){
2733
+ foreach($project_config['rules2'] as $rkey => $rvalue){
2734
+ if(in_array('total_product_orders', $rvalue)){
2735
+ $ruleset = "true";
2736
+ }
2737
+ }
2738
+ }
2739
+
2740
+ if((array_key_exists('total_product_orders', $project_config['attributes'])) OR ($ruleset == "true")){
2741
+ $product_data['total_product_orders'] = 0;
2742
+ $sales_array = $this->woosea_get_nr_orders_variation ( $product_data['id'] );
2743
+ $product_data['total_product_orders'] = $sales_array[0];
2744
+ }
2745
 
2746
  $visibility_list = wp_get_post_terms($product_data['item_group_id'], 'product_visibility', array("fields" => "all"));
2747
 
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=7.6.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=7.6.6',
31
  jsonp: 'callback',
32
  dataType: 'jsonp',
33
  type: 'GET',
pages/admin/woosea-manage-settings.php CHANGED
@@ -76,9 +76,9 @@ if(isset($_GET["tab"])) {
76
  } elseif ($_GET["tab"] == "woosea_system_check"){
77
  $active_tab = "woosea_system_check";
78
  $header_text = __( 'Plugin systems check', 'woo-product-feed-pro' );
79
- // } elseif ($_GET["tab"] == "woosea_copy_configs"){
80
- // $active_tab = "woosea_copy_configs";
81
- // $header_text = __( 'Copy feed configuration', 'woo-product-feed-pro' );
82
  } elseif ($_GET["tab"] == "woosea_license_check"){
83
  $active_tab = "woosea_license_check";
84
  $header_text = __( 'License', 'woo-product-feed-pro' );
@@ -125,9 +125,9 @@ if(isset($_GET["tab"])) {
125
  <a href="?page=woosea_manage_settings&tab=woosea_manage_settings" class="nav-tab <?php if($active_tab == 'woosea_manage_settings'){echo 'nav-tab-active';} ?> "><?php _e('Plugin settings', 'woo-product-feed-pro'); ?></a>
126
  <a href="?page=woosea_manage_settings&tab=woosea_manage_attributes" class="nav-tab <?php if($active_tab == 'woosea_manage_attributes'){echo 'nav-tab-active';} ?>"><?php _e('Extra fields (Elite feature)', 'woo-product-feed-pro'); ?></a>
127
  <a href="?page=woosea_manage_settings&tab=woosea_system_check" class="nav-tab <?php if($active_tab == 'woosea_system_check'){echo 'nav-tab-active';} ?>"><?php _e('Plugin systems check', 'woo-product-feed-pro'); ?></a>
128
- <!--
129
  <a href="?page=woosea_manage_settings&tab=woosea_copy_configs" class="nav-tab <?php if($active_tab == 'woosea_copy_configs'){echo 'nav-tab-active';} ?>"><?php _e('Copy feed configuration', 'woo-product-feed-pro'); ?></a>
130
- -->
131
  <a href="?page=woosea_manage_settings&tab=woosea_license_check" class="nav-tab <?php if($active_tab == 'woosea_license_check'){echo 'nav-tab-active';} ?>"><?php _e('License', 'woo-product-feed-pro'); ?></a>
132
  </h2>
133
 
@@ -413,8 +413,10 @@ if(isset($_GET["tab"])) {
413
  </table>
414
  <?php
415
  } elseif ($active_tab == "woosea_copy_configs"){
 
416
  print "<table class=\"woo-product-feed-pro-table\">";
417
- print "<tr><td colspan=\"2\">Copy feed configuration from other website:</td></tr>";
 
418
  print "<tr><td colspan=\"2\">&nbsp;</td></tr>";
419
  print "</table>";
420
  } elseif ($active_tab == "woosea_system_check"){
76
  } elseif ($_GET["tab"] == "woosea_system_check"){
77
  $active_tab = "woosea_system_check";
78
  $header_text = __( 'Plugin systems check', 'woo-product-feed-pro' );
79
+ } elseif ($_GET["tab"] == "woosea_copy_configs"){
80
+ $active_tab = "woosea_copy_configs";
81
+ $header_text = __( 'Copy feed configuration', 'woo-product-feed-pro' );
82
  } elseif ($_GET["tab"] == "woosea_license_check"){
83
  $active_tab = "woosea_license_check";
84
  $header_text = __( 'License', 'woo-product-feed-pro' );
125
  <a href="?page=woosea_manage_settings&tab=woosea_manage_settings" class="nav-tab <?php if($active_tab == 'woosea_manage_settings'){echo 'nav-tab-active';} ?> "><?php _e('Plugin settings', 'woo-product-feed-pro'); ?></a>
126
  <a href="?page=woosea_manage_settings&tab=woosea_manage_attributes" class="nav-tab <?php if($active_tab == 'woosea_manage_attributes'){echo 'nav-tab-active';} ?>"><?php _e('Extra fields (Elite feature)', 'woo-product-feed-pro'); ?></a>
127
  <a href="?page=woosea_manage_settings&tab=woosea_system_check" class="nav-tab <?php if($active_tab == 'woosea_system_check'){echo 'nav-tab-active';} ?>"><?php _e('Plugin systems check', 'woo-product-feed-pro'); ?></a>
128
+ <!--
129
  <a href="?page=woosea_manage_settings&tab=woosea_copy_configs" class="nav-tab <?php if($active_tab == 'woosea_copy_configs'){echo 'nav-tab-active';} ?>"><?php _e('Copy feed configuration', 'woo-product-feed-pro'); ?></a>
130
+ -->
131
  <a href="?page=woosea_manage_settings&tab=woosea_license_check" class="nav-tab <?php if($active_tab == 'woosea_license_check'){echo 'nav-tab-active';} ?>"><?php _e('License', 'woo-product-feed-pro'); ?></a>
132
  </h2>
133
 
413
  </table>
414
  <?php
415
  } elseif ($active_tab == "woosea_copy_configs"){
416
+ print "<br>";
417
  print "<table class=\"woo-product-feed-pro-table\">";
418
+ print "<tr><td colspan=\"2\">Copy feed configuarion from this domain:</td></tr>";
419
+ print "<tr><td colspan=\"2\"><select name=\"protocol\" id=\"protocol\" class=\"select-field\"><option value=\"https\">https://</option><option value=\"http\">http://</option></select>&nbsp;<input class=\"input-field\" name=\"copy_domain\" id=\"copy_domain\">&nbsp;<input type=\"submit\" id=\"copy_button\" value=\"Copy feeds\"></td></tr>";
420
  print "<tr><td colspan=\"2\">&nbsp;</td></tr>";
421
  print "</table>";
422
  } elseif ($active_tab == "woosea_system_check"){
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.3
8
- Stable tag: 7.6.5
9
 
10
  == Description ==
11
 
@@ -312,6 +312,10 @@ Questions left or unanswered? Please do not hesitate to contact us at support@ad
312
 
313
  === Changelog ===
314
 
 
 
 
 
315
  = 7.6.5 (2020-03-04) =
316
  * SQL query to retrieve number of sales for variations was too slow causing the feed processing to slow down. Improved query.
317
 
@@ -2436,6 +2440,10 @@ Questions left or unanswered? Please do not hesitate to contact us at support@ad
2436
 
2437
  == Upgrade Notice ==
2438
 
 
 
 
 
2439
  = 7.6.5 =
2440
  SQL query to retrieve number of sales for variations was too slow causing the feed processing to slow down. Improved query.
2441
 
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.3
8
+ Stable tag: 7.6.6
9
 
10
  == Description ==
11
 
312
 
313
  === Changelog ===
314
 
315
+ = 7.6.6 (2020-03-06) =
316
+ * Added a new attribute named "All images (comma separated)" which adds all product images on one line, comma separated
317
+ * The total product orders attribute is pretty heavy on MySql so we are now only requesting this data when it has been added to the field mapping and/or filters and rules
318
+
319
  = 7.6.5 (2020-03-04) =
320
  * SQL query to retrieve number of sales for variations was too slow causing the feed processing to slow down. Improved query.
321
 
2440
 
2441
  == Upgrade Notice ==
2442
 
2443
+ = 7.6.6 =
2444
+ Added a new attribute named "All images (comma separated)" which adds all product images on one line, comma separated
2445
+ The total product orders attribute is pretty heavy on MySql so we are now only requesting this data when it has been added to the field mapping and/or filters and rules
2446
+
2447
  = 7.6.5 =
2448
  SQL query to retrieve number of sales for variations was too slow causing the feed processing to slow down. Improved query.
2449
 
woocommerce-sea.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Plugin Name: Product Feed PRO for WooCommerce
4
- * Version: 7.6.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', '7.6.5' );
52
  define( 'WOOCOMMERCESEA_PLUGIN_NAME', 'woocommerce-product-feed-pro' );
53
  define( 'WOOCOMMERCESEA_PLUGIN_NAME_SHORT', 'woo-product-feed-pro' );
54
 
@@ -4178,6 +4178,33 @@ function woosea_de_register_license(){
4178
  }
4179
  add_action( 'woosea_deregister_hook', 'woosea_de_register_license', 99999); // deregister the paid version check after 60 seconds
4180
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4181
  /**
4182
  * This function checks if the Elite license is valid. When the license
4183
  * key is invalid or expired the advanced options of this plugin will be disabled
@@ -4188,7 +4215,7 @@ function woosea_license_valid(){
4188
 
4189
  if(!empty($license_information['license_key'])){
4190
  $curl = curl_init();
4191
- $url = "https://www.adtribes.io/check/license.php?key=$license_information[license_key]&email=$license_information[license_email]&domain=$domain&version=7.6.5";
4192
 
4193
  curl_setopt_array($curl, array(
4194
  CURLOPT_RETURNTRANSFER => 1,
1
  <?php
2
  /**
3
  * Plugin Name: Product Feed PRO for WooCommerce
4
+ * Version: 7.6.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', '7.6.6' );
52
  define( 'WOOCOMMERCESEA_PLUGIN_NAME', 'woocommerce-product-feed-pro' );
53
  define( 'WOOCOMMERCESEA_PLUGIN_NAME_SHORT', 'woo-product-feed-pro' );
54
 
4178
  }
4179
  add_action( 'woosea_deregister_hook', 'woosea_de_register_license', 99999); // deregister the paid version check after 60 seconds
4180
 
4181
+ /**
4182
+ * This function copies feed configurations from another domain
4183
+ * so users do not have to re-configure feeds for all their domains
4184
+ * Other domain need to explicitly allow this
4185
+ */
4186
+ function woosea_copy_configurations(){
4187
+
4188
+
4189
+ $domain = "oplader.org";
4190
+
4191
+ $curl = curl_init();
4192
+ $url = "http://$domain/wp-content/uploads/woo-product-feed-pro/logs/debug.log";
4193
+
4194
+ curl_setopt_array($curl, array(
4195
+ CURLOPT_RETURNTRANSFER => 1,
4196
+ CURLOPT_URL => $url,
4197
+ CURLOPT_USERAGENT => 'AdTribes license cURL Request'
4198
+ ));
4199
+ $response = curl_exec( $curl );
4200
+ curl_close($curl);
4201
+
4202
+ error_log("RESPONSE");
4203
+ error_log($respons);
4204
+
4205
+ $json_return = json_decode($response, true);
4206
+ }
4207
+
4208
  /**
4209
  * This function checks if the Elite license is valid. When the license
4210
  * key is invalid or expired the advanced options of this plugin will be disabled
4215
 
4216
  if(!empty($license_information['license_key'])){
4217
  $curl = curl_init();
4218
+ $url = "https://www.adtribes.io/check/license.php?key=$license_information[license_key]&email=$license_information[license_email]&domain=$domain&version=7.6.6";
4219
 
4220
  curl_setopt_array($curl, array(
4221
  CURLOPT_RETURNTRANSFER => 1,