Product Feed PRO for WooCommerce - Version 7.0.9

Version Description

Added support for creation of find & replace rules Removed XML support for Bol.com feeds

Download this release

Release Info

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

Code changes from version 7.0.8 to 7.0.9

TODO.txt CHANGED
@@ -5,7 +5,6 @@ Tutorial / Blog posts:
5
  - Explain all the different fields/attributes that can be selected from the drop-downs
6
 
7
  Priority issues:
8
- - Add find and replace rule option (also requested by Chris)
9
  - Change XML header for Elite users (so it doesn't say its free for example)
10
  - Add Facebook pixel measure sales/conversion in checkout (onder andere InitiateCheckout, Purchase, Search and ViewCategory pages);
11
  - Categories / subcategorie mapping issue when the categories have the exact same name
5
  - Explain all the different fields/attributes that can be selected from the drop-downs
6
 
7
  Priority issues:
 
8
  - Change XML header for Elite users (so it doesn't say its free for example)
9
  - Add Facebook pixel measure sales/conversion in checkout (onder andere InitiateCheckout, Purchase, Search and ViewCategory pages);
10
  - Categories / subcategorie mapping issue when the categories have the exact same name
classes/channels/class-bol.php CHANGED
@@ -3,7 +3,7 @@
3
  * Settings for Bol.com product feeds
4
  */
5
  class WooSEA_bol {
6
- public $google_drm;
7
 
8
  public static function get_channel_attributes() {
9
 
3
  * Settings for Bol.com product feeds
4
  */
5
  class WooSEA_bol {
6
+ public $bol;
7
 
8
  public static function get_channel_attributes() {
9
 
classes/class-get-products.php CHANGED
@@ -3914,6 +3914,19 @@ class WooSEA_Get_Products {
3914
  $newvalue = ($pd_value - $pr_array['criteria']);
3915
  $product_data[$pr_array['attribute']] = $newvalue;
3916
  break;
 
 
 
 
 
 
 
 
 
 
 
 
 
3917
  default:
3918
  break;
3919
  }
@@ -4220,7 +4233,18 @@ class WooSEA_Get_Products {
4220
  case($pr_array['condition'] = "replace"):
4221
  $product_data[$pr_array['than_attribute']] = str_replace($pr_array['criteria'], $pr_array['newvalue'], $product_data[$pr_array['than_attribute']]);
4222
  break;
4223
-
 
 
 
 
 
 
 
 
 
 
 
4224
  default:
4225
  break;
4226
  }
3914
  $newvalue = ($pd_value - $pr_array['criteria']);
3915
  $product_data[$pr_array['attribute']] = $newvalue;
3916
  break;
3917
+ case($pr_array['condition'] = "findreplace"):
3918
+ if (strpos($pd_value, $pr_array['criteria']) !== false){
3919
+ // Make sure that a new value has been set
3920
+ if(!empty($pr_array['newvalue'])){
3921
+ // Find and replace only work on same attribute field, otherwise create a contains rule
3922
+ if($pr_array['attribute'] == $pr_array['than_attribute']){
3923
+ $newvalue = str_replace($pr_array['criteria'],$pr_array['newvalue'], $pd_value);
3924
+ $product_data[$pr_array['than_attribute']] = ucfirst($newvalue);
3925
+ }
3926
+
3927
+ }
3928
+ }
3929
+ break;
3930
  default:
3931
  break;
3932
  }
4233
  case($pr_array['condition'] = "replace"):
4234
  $product_data[$pr_array['than_attribute']] = str_replace($pr_array['criteria'], $pr_array['newvalue'], $product_data[$pr_array['than_attribute']]);
4235
  break;
4236
+ case($pr_array['condition'] = "findreplace"):
4237
+ if (strpos($pd_value, $pr_array['criteria']) !== false){
4238
+ // Make sure that a new value has been set
4239
+ if(!empty($pr_array['newvalue'])){
4240
+ // Find and replace only work on same attribute field, otherwise create a contains rule
4241
+ if($pr_array['attribute'] == $pr_array['than_attribute']){
4242
+ $newvalue = str_replace($pr_array['criteria'],$pr_array['newvalue'], $pd_value);
4243
+ $product_data[$pr_array['than_attribute']] = ucfirst($newvalue);
4244
+ }
4245
+ }
4246
+ }
4247
+ break;
4248
  default:
4249
  break;
4250
  }
js/woosea_channel.js CHANGED
@@ -63,6 +63,11 @@ jQuery(document).ready(function($) {
63
  $("#fileformat option[value='tsv']").remove();
64
  $("#fileformat option[value='xml']").remove();
65
 
 
 
 
 
 
66
  $('#file').after('<tr id="delimiter"><td><span>Delimiter:</span></td><td><select name="delimiter" class="select-field"><option value=",">, comma</option><option value="|">| pipe</option><option value=";">;</option><option value="tab">tab</option><option value="#">#</option></select></td></tr>');
67
  } else {
68
  $("#fileformat")
63
  $("#fileformat option[value='tsv']").remove();
64
  $("#fileformat option[value='xml']").remove();
65
 
66
+ $('#file').after('<tr id="delimiter"><td><span>Delimiter:</span></td><td><select name="delimiter" class="select-field"><option value=",">, comma</option><option value="|">| pipe</option><option value=";">;</option><option value="tab">tab</option><option value="#">#</option></select></td></tr>');
67
+ } else if(channel_hash == 'Bol.com'){ // Ugly hack, should be configurable per channel
68
+ $("#fileformat option[value='tsv']").remove();
69
+ $("#fileformat option[value='xml']").remove();
70
+
71
  $('#file').after('<tr id="delimiter"><td><span>Delimiter:</span></td><td><select name="delimiter" class="select-field"><option value=",">, comma</option><option value="|">| pipe</option><option value=";">;</option><option value="tab">tab</option><option value="#">#</option></select></td></tr>');
72
  } else {
73
  $("#fileformat")
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.0.8',
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.0.9',
31
  jsonp: 'callback',
32
  dataType: 'jsonp',
33
  type: 'GET',
js/woosea_rules.js CHANGED
@@ -112,9 +112,9 @@ jQuery(document).ready(function($) {
112
  data = JSON.parse( data );
113
 
114
  if(TrueRowCount == 0){
115
- $( '#woosea-ajax-table' ).find('tbody:first').append('<tr><td><input type="hidden" name="rules2[' + data.rowCount + '][rowCount]" value="' + data.rowCount + '"><input type="checkbox" name="record" class="checkbox-field"></td><td><i>Rule:</i></td><td><select name="rules2[' + data.rowCount + '][attribute]" class="select-field">' + data.dropdown + '</select></td><td><select name="rules2[' + data.rowCount + '][condition]" class="select-field" id="condition_' + data.rowCount + '""><option value="contains">contains</option><option value="containsnot">does not contain</option><option value="=">is equal to</option><option value="!=">is not equal to</option><option value=">">is greater than</option><option value=">=">is greater or equal to</option><option value="<">is less than</option><option value="=<">is less or equal to</option><option value="empty">is empty</option><option value="multiply">multiply</option><option value="divide">divide</option><option value="plus">plus</option><option value="minus">minus</option></select></td><td><input type="text" name="rules2[' + rowCount + '][criteria]" class="input-field-large"></td><td><input type="checkbox" name="rules2[' + rowCount + '][cs]" class="checkbox-field" alt="Case sensitive" id="cs_' + data.rowCount + '"></td><td><select name="rules2[' + data.rowCount + '][than_attribute]" class="select-field" id="than_attribute_' + rowCount +'" style="width:150px;">' + data.dropdown + '</select> </td><td><input type="text" name="rules2[' + rowCount + '][newvalue]" class="input-field-large" id="is-field_' + rowCount +'"></td></tr>');
116
  } else {
117
- $('<tr><td><input type="hidden" name="rules2[' + data.rowCount + '][rowCount]" value="' + data.rowCount + '"><input type="checkbox" name="record" class="checkbox-field"></td><td><i>Rule:</i></td><td><select name="rules2[' + data.rowCount + '][attribute]" class="select-field">' + data.dropdown + '</select></td><td><select name="rules2[' + data.rowCount + '][condition]" class="select-field" id="condition_' + data.rowCount + '""><option value="contains">contains</option><option value="containsnot">does not contain</option><option value="=">is equal to</option><option value="!=">is not equal to</option><option value=">">is greater than</option><option value=">=">is greater or equal to</option><option value="<">is less than</option><option value="=<">is less or equal to</option><option value="empty">is empty</option><option value="multiply">multiply</option><option value="divide">divide</option><option value="plus">plus</option><option value="minus">minus</option></select></td><td><input type="text" name="rules2[' + rowCount + '][criteria]" class="input-field-large"></td><td><input type="checkbox" name="rules2[' + rowCount + '][cs]" class="checkbox-field" alt="Case sensitive" id="cs_' + data.rowCount + '"></td><td><select name="rules2[' + data.rowCount + '][than_attribute]" class="select-field" id="than_attribute_' + rowCount +'" style="width:150px;">' + data.dropdown + '</select> </td><td><input type="text" name="rules2[' + rowCount + '][newvalue]" class="input-field-large" id="is-field_' + rowCount +'"></td></tr>').insertBefore( ".rules-buttons");
118
  }
119
 
120
  // Check if user selected a data manipulation condition
112
  data = JSON.parse( data );
113
 
114
  if(TrueRowCount == 0){
115
+ $( '#woosea-ajax-table' ).find('tbody:first').append('<tr><td><input type="hidden" name="rules2[' + data.rowCount + '][rowCount]" value="' + data.rowCount + '"><input type="checkbox" name="record" class="checkbox-field"></td><td><i>Rule:</i></td><td><select name="rules2[' + data.rowCount + '][attribute]" class="select-field">' + data.dropdown + '</select></td><td><select name="rules2[' + data.rowCount + '][condition]" class="select-field" id="condition_' + data.rowCount + '""><option value="contains">contains</option><option value="containsnot">does not contain</option><option value="=">is equal to</option><option value="!=">is not equal to</option><option value=">">is greater than</option><option value=">=">is greater or equal to</option><option value="<">is less than</option><option value="=<">is less or equal to</option><option value="empty">is empty</option><option value="multiply">multiply</option><option value="divide">divide</option><option value="plus">plus</option><option value="minus">minus</option><option value="findreplace">find and replace</option></select></td><td><input type="text" name="rules2[' + rowCount + '][criteria]" class="input-field-large"></td><td><input type="checkbox" name="rules2[' + rowCount + '][cs]" class="checkbox-field" alt="Case sensitive" id="cs_' + data.rowCount + '"></td><td><select name="rules2[' + data.rowCount + '][than_attribute]" class="select-field" id="than_attribute_' + rowCount +'" style="width:150px;">' + data.dropdown + '</select> </td><td><input type="text" name="rules2[' + rowCount + '][newvalue]" class="input-field-large" id="is-field_' + rowCount +'"></td></tr>');
116
  } else {
117
+ $('<tr><td><input type="hidden" name="rules2[' + data.rowCount + '][rowCount]" value="' + data.rowCount + '"><input type="checkbox" name="record" class="checkbox-field"></td><td><i>Rule:</i></td><td><select name="rules2[' + data.rowCount + '][attribute]" class="select-field">' + data.dropdown + '</select></td><td><select name="rules2[' + data.rowCount + '][condition]" class="select-field" id="condition_' + data.rowCount + '""><option value="contains">contains</option><option value="containsnot">does not contain</option><option value="=">is equal to</option><option value="!=">is not equal to</option><option value=">">is greater than</option><option value=">=">is greater or equal to</option><option value="<">is less than</option><option value="=<">is less or equal to</option><option value="empty">is empty</option><option value="multiply">multiply</option><option value="divide">divide</option><option value="plus">plus</option><option value="minus">minus</option><option value="findreplace">find and replace</option></select></td><td><input type="text" name="rules2[' + rowCount + '][criteria]" class="input-field-large"></td><td><input type="checkbox" name="rules2[' + rowCount + '][cs]" class="checkbox-field" alt="Case sensitive" id="cs_' + data.rowCount + '"></td><td><select name="rules2[' + data.rowCount + '][than_attribute]" class="select-field" id="than_attribute_' + rowCount +'" style="width:150px;">' + data.dropdown + '</select> </td><td><input type="text" name="rules2[' + rowCount + '][newvalue]" class="input-field-large" id="is-field_' + rowCount +'"></td></tr>').insertBefore( ".rules-buttons");
118
  }
119
 
120
  // Check if user selected a data manipulation condition
pages/admin/woosea-generate-feed-step-4.php CHANGED
@@ -304,6 +304,11 @@ if (array_key_exists('project_hash', $_GET)){
304
  } else {
305
  print "<option value=\"minus\">minus</option>";
306
  }
 
 
 
 
 
307
  ?>
308
  </select>
309
  </td>
304
  } else {
305
  print "<option value=\"minus\">minus</option>";
306
  }
307
+ if (isset($project['rules2'][$rule2_key]['condition']) AND ($project['rules2'][$rule2_key]['condition'] == "findreplace")){
308
+ print "<option value=\"findreplace\" selected>find and replace</option>";
309
+ } else {
310
+ print "<option value=\"findreplace\">find and replace</option>";
311
+ }
312
  ?>
313
  </select>
314
  </td>
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.0.8
9
 
10
  == Description ==
11
 
@@ -302,7 +302,11 @@ Questions left or unanswered? Please do not hesitate to contact us at support@ad
302
 
303
  === Changelog ===
304
 
305
- = 7.0.8 (2019-12-278 =
 
 
 
 
306
  * Added support for the Perfect Woocommerce Brands plugin
307
 
308
  = 7.0.7 (2019-12-27) =
@@ -2235,6 +2239,10 @@ Questions left or unanswered? Please do not hesitate to contact us at support@ad
2235
 
2236
  == Upgrade Notice ==
2237
 
 
 
 
 
2238
  = 7.0.8 =
2239
  Added support for the Perfect Woocommerce Brands plugin
2240
 
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.0.9
9
 
10
  == Description ==
11
 
302
 
303
  === Changelog ===
304
 
305
+ = 7.0.9 (2019-12-30) =
306
+ * Added support for creation of find & replace rules
307
+ * Removed XML support for Bol.com feeds
308
+
309
+ = 7.0.8 (2019-12-28) =
310
  * Added support for the Perfect Woocommerce Brands plugin
311
 
312
  = 7.0.7 (2019-12-27) =
2239
 
2240
  == Upgrade Notice ==
2241
 
2242
+ = 7.0.9 =
2243
+ Added support for creation of find & replace rules
2244
+ Removed XML support for Bol.com feeds
2245
+
2246
  = 7.0.8 =
2247
  Added support for the Perfect Woocommerce Brands plugin
2248
 
woocommerce-sea.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /**
3
  * Plugin Name: Product Feed PRO for WooCommerce
4
- * Version: 7.0.8
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.0.8' );
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: 7.0.9
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.0.9' );
52
  define( 'WOOCOMMERCESEA_PLUGIN_NAME', 'woocommerce-product-feed-pro' );
53
  define( 'WOOCOMMERCESEA_PLUGIN_NAME_SHORT', 'woo-product-feed-pro' );
54