WooCommerce Wishlist Plugin - Version 1.7.2

Version Description

Release Date - 21 June 2018

  • Fixed WooCommerce templates location issue
  • Fixed JavaScript condition for products custom attributes
  • Improved compatibility with WooCommerce Composite Products plugin
  • Improved compatibility with WooCommerce Product Add-ons plugin
  • Improved compatibility with WP Super Cache, W3 Total Cache, WP Rocket plugins
Download this release

Release Info

Developer templateinvaders
Plugin Icon 128x128 WooCommerce Wishlist Plugin
Version 1.7.2
Comparing to
See all releases

Code changes from version 1.7.1 to 1.7.2

asset/js/public.js CHANGED
@@ -22,7 +22,7 @@
22
  $(this).appendTo('body > .tinv-wishlist');
23
  },
24
  onCreateWishList: function (wishlist) {
25
- $(this).append($('<option>').html(wishlist.title).attr('value', wishlist.ID).toggleClass('tinv_in_wishlist', wishlist.in));
26
  },
27
  onSelectWishList: function () {
28
  },
@@ -84,7 +84,7 @@
84
  $.each(WList, function (k, wishlist) {
85
  text.append($('<li>').html($('<a>').html(wishlist.title).attr({
86
  href: wishlist.url
87
- })).attr('value', wishlist.ID));
88
  });
89
  break;
90
  }
@@ -202,7 +202,7 @@
202
  product_action: $(this).attr('data-tinv-wl-action') || 'addto'
203
  },
204
  a = this;
205
- $(a).closest('form.cart[method=post], .woocommerce-variation-add-to-cart, .tinvwl-loop-button-wrapper').find('input, select, textarea').each(function () {
206
  var name_elm = $(this).attr('name'),
207
  type_elm = $(this).attr('type'),
208
  value_elm = $(this).val(),
@@ -229,7 +229,7 @@
229
  return o2;
230
  }
231
  };
232
- if ('button' === type_elm) {
233
  return;
234
  }
235
  while (/^(.+)\[([^\[\]]*?)\]$/.test(name_elm) && 0 < count) {
22
  $(this).appendTo('body > .tinv-wishlist');
23
  },
24
  onCreateWishList: function (wishlist) {
25
+ $(this).append($('<option>').html(wishlist.title).val(wishlist.ID).toggleClass('tinv_in_wishlist', wishlist.in));
26
  },
27
  onSelectWishList: function () {
28
  },
84
  $.each(WList, function (k, wishlist) {
85
  text.append($('<li>').html($('<a>').html(wishlist.title).attr({
86
  href: wishlist.url
87
+ })).val(wishlist.ID));
88
  });
89
  break;
90
  }
202
  product_action: $(this).attr('data-tinv-wl-action') || 'addto'
203
  },
204
  a = this;
205
+ $(a).closest('form.cart[method=post], .tinvwl-loop-button-wrapper').find('input, select, textarea').each(function () {
206
  var name_elm = $(this).attr('name'),
207
  type_elm = $(this).attr('type'),
208
  value_elm = $(this).val(),
229
  return o2;
230
  }
231
  };
232
+ if ('button' === type_elm || 'undefined' == typeof name_elm || name_elm.substr(0, 10) == "attribute_") {
233
  return;
234
  }
235
  while (/^(.+)\[([^\[\]]*?)\]$/.test(name_elm) && 0 < count) {
asset/js/public.min.js CHANGED
@@ -1 +1 @@
1
- !function(t){t.fn.tinvwl_to_wishlist=function(i){var n={api_url:window.location.href,text_create:window.tinvwl_add_to_wishlist.text_create,text_already_in:window.tinvwl_add_to_wishlist.text_already_in,class:{dialogbox:".tinvwl_add_to_select_wishlist",select:".tinvwl_wishlist",newtitle:".tinvwl_new_input",dialogbutton:".tinvwl_button_add"},redirectTimer:null,onPrepareList:function(){},onGetDialogBox:function(){},onPrepareDialogBox:function(){t("body > .tinv-wishlist").length||t("body").append(t("<div>").addClass("tinv-wishlist")),t(this).appendTo("body > .tinv-wishlist")},onCreateWishList:function(i){t(this).append(t("<option>").html(i.title).attr("value",i.ID).toggleClass("tinv_in_wishlist",i.in))},onSelectWishList:function(){},onDialogShow:function(){t(this).addClass("tinv-modal-open")},onDialogHide:function(){t(this).removeClass("tinv-modal-open")},onInited:function(){},onClick:function(){if(t(this).is(".disabled-add-wishlist"))return!1;this.tinvwl_dialog?this.tinvwl_dialog.show_list.call(this):e.onActionProduct.call(this)},onPrepareDataAction:function(){},filterProductAlreadyIn:function(i){i=i||[];var n={};return t("form.cart[method=post], .woocommerce-variation-add-to-cart").find("input, select").each(function(){var i=t(this).attr("name"),e=t(this).attr("type"),o=t(this).val();"checkbox"===e||"radio"===e?t(this).is(":checked")&&(n["form"+i]=o):n["form"+i]=o}),n=n.formvariation_id,i.filter(function(t){if("object"==typeof t.in&&"string"==typeof n){var i=parseInt(n);return 0<=t.in.indexOf(i)}return t.in})},onMultiProductAlreadyIn:function(i){i=i||[];i=e.onPrepareList.call(i)||i,i=e.filterProductAlreadyIn.call(this,i)||i,t(this).parent().parent().find(".already-in").remove();var n="";switch(i.length){case 0:break;default:n=t("<ul>");t.each(i,function(i,e){n.append(t("<li>").html(t("<a>").html(e.title).attr({href:e.url})).attr("value",e.ID))})}n.length&&t(this).closest(".tinv-modal-inner").find("img").after(t("<div>").addClass("already-in").html(e.text_already_in+" ").append(n))},onAction:{redirect:function(t){e.redirectTimer&&clearTimeout(e.redirectTimer),e.redirectTimer=window.setTimeout(function(){window.location.href=t},4e3)},force_redirect:function(t){window.location.href=t},wishlists:function(i){t(this).attr("data-tinv-wl-list",i)},msg:function(i){if(!i)return!1;var n=t(i).eq(0);t("body > .tinv-wishlist").length||t("body").append(t("<div>").addClass("tinv-wishlist")),t("body > .tinv-wishlist").append(n),n.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),n.remove(),e.redirectTimer&&clearTimeout(e.redirectTimer)})},status:function(i){i&&t(this).addClass("tinvwl-product-in-list")},removed:function(i){i&&t(this).removeClass("tinvwl-product-in-list").removeClass("tinvwl-product-make-remove").attr("data-tinv-wl-action","addto")},make_remove:function(i){t(this).toggleClass("tinvwl-product-make-remove",i).attr("data-tinv-wl-action",i?"remove":"addto")},fragments:function(i){if("undefined"==typeof wc_cart_fragments_params)return t.each(i,function(i,n){t(i).replaceWith(n)}),!1;var n;try{n="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("wc","test"),window.sessionStorage.removeItem("wc"),window.localStorage.setItem("wc","test"),window.localStorage.removeItem("wc")}catch(t){n=!1}if(n)try{var e=t.parseJSON(sessionStorage.getItem(wc_cart_fragments_params.fragment_name)),o=wc_cart_fragments_params.ajax_url.toString()+"-wc_cart_hash",a=sessionStorage.getItem(o),l=Cookies.get("woocommerce_cart_hash"),s=sessionStorage.getItem("wc_cart_created");if(null!==a&&void 0!==a&&""!==a||(a=""),null!==l&&void 0!==l&&""!==l||(l=""),a&&(null===s||void 0===s||""===s))throw"No cart_created";if(t.each(i,function(t,i){e[t]=i}),localStorage.setItem(o,localStorage.getItem(o)+(new Date).getTime()),sessionStorage.setItem(o,sessionStorage.getItem(o)+(new Date).getTime()),sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(e)),!e||!e["div.widget_shopping_cart_content"]||a!==l)throw"No fragment";t.each(e,function(i,n){t(i).replaceWith(n)}),t(document.body).trigger("wc_fragments_loaded")}catch(i){t(document.body).trigger("wc_fragment_refresh")}}},onActionProduct:function(i,n){var o={form:{},tinv_wishlist_id:i||"",tinv_wishlist_name:n||"",product_type:t(this).attr("data-tinv-wl-producttype"),product_id:t(this).attr("data-tinv-wl-product")||0,product_variation:t(this).attr("data-tinv-wl-productvariation")||0,product_action:t(this).attr("data-tinv-wl-action")||"addto"},a=this;t(a).closest("form.cart[method=post], .woocommerce-variation-add-to-cart, .tinvwl-loop-button-wrapper").find("input, select, textarea").each(function(){var i=t(this).attr("name"),n=t(this).attr("type"),e=t(this).val(),a=10,l=function(t,i){if("object"==typeof i){void 0===t&&(t={});for(var n in i)if(""===n){var e=-1;for(e in t)e=e;t[e=parseInt(e)+1]=l(t[n],i[n])}else t[n]=l(t[n],i[n]);return t}return i};if("button"!==n){for(;/^(.+)\[([^\[\]]*?)\]$/.test(i)&&0<a;){var s=i.match(/^(.+)\[([^\[\]]*?)\]$/);if(3===s.length){var r={};r[s[2]]=e,e=r}i=s[1],a--}"checkbox"===n||"radio"===n?t(this).is(":checked")&&(e.length||"object"==typeof e||(e=!0),o.form[i]=l(o.form[i],e)):o.form[i]=l(o.form[i],e)}}),o=e.onPrepareDataAction.call(a,o)||o,t.post(e.api_url,o,function(t){if(e.onDialogHide.call(a.tinvwl_dialog),"object"==typeof t)for(var i in t)"function"==typeof e.onAction[i]&&e.onAction[i].call(a,t[i]);else"function"==typeof e.onAction.msg&&e.onAction.msg.call(a,t)})}},e=t.extend(!0,{},n,i);return t(this).each(function(){if(!t(this).attr("data-tinv-wl-list"))return!1;if(e.dialogbox&&e.dialogbox.length&&(this.tinvwl_dialog=e.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=e.onGetDialogBox.call(this)),!this.tinvwl_dialog){var i=t(this).nextAll(e.class.dialogbox).eq(0);i.length&&(this.tinvwl_dialog=i)}if(this.tinvwl_dialog){e.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(i){var n=t(this).find(e.class.select).eq(0);t(this).find(e.class.newtitle).hide().val(""),n.html(""),t.each(i,function(t,i){e.onCreateWishList.call(n,i)}),e.text_create&&e.onCreateWishList.call(n,{ID:"",title:e.text_create,in:!1}),e.onMultiProductAlreadyIn.call(n,i),e.onSelectWishList.call(n,i),t(this).find(e.class.newtitle).toggle(""===n.val())}),"function"!=typeof this.tinvwl_dialog.show_list&&(this.tinvwl_dialog.show_list=function(){var i=t.parseJSON(t(this).attr("data-tinv-wl-list"))||[];i.length?(i=e.onPrepareList.call(i)||i,this.tinvwl_dialog.update_list(i),e.onDialogShow.call(this.tinvwl_dialog)):e.onActionProduct.call(this)});var n=this;t(this.tinvwl_dialog).find(e.class.dialogbutton).off("click").on("click",function(){var i,o=t(n.tinvwl_dialog).find(e.class.select),a=t(n.tinvwl_dialog).find(e.class.newtitle);o.val()||a.val()?e.onActionProduct.call(n,o.val(),a.val()):((i=a.is(":visible")?a:o).addClass("empty-name-wishlist"),window.setTimeout(function(){i.removeClass("empty-name-wishlist")},1e3))})}t(this).off("click").on("click",e.onClick),e.onInited.call(this,e)})},t(document).ready(function(){t("body").on("click",".tinvwl_add_to_wishlist_button",function(i){if(t(this).is(".disabled-add-wishlist"))return i.preventDefault(),void window.alert(tinvwl_add_to_wishlist.i18n_make_a_selection_text);t(this).is(".inited-add-wishlist")||t(this).tinvwl_to_wishlist({onInited:function(i){t(this).addClass("inited-add-wishlist"),i.onClick.call(this)}})}),t(".tinvwl_move_product_button").tinvwl_to_wishlist({class:{dialogbox:".tinvwl_wishlist_move",select:".tinvwl_wishlist",newtitle:".tinvwl_new_input",dialogbutton:".tinvwl_button_move"},onPrepareDataAction:function(i){return i.tinv_from_wishlist_id=t(this).attr("data-tinv-wl"),i.tinv_to_wishlist_id=i.tinv_wishlist_id,i.tinv_wishlist_name||(i.tinv_wishlist_name="-"),delete i.tinv_wishlist_id,i},onPrepareList:function(){return this.filter(function(t){return!t.hide})},onAction:{redirect:function(t){return window.location.href=t}}}),t(".global-cb").on("click",function(){t(this).closest("table").eq(0).find(".product-cb input[type=checkbox], .wishlist-cb input[type=checkbox]").prop("checked",t(this).is(":checked"))})})}(jQuery),function(t){t.fn.tinvwl_break_submit=function(i){var n={selector:"input, select, textarea",ifempty:!0,invert:!1,validate:function(){return t(this).val()},rule:function(){var i=t(this).parents("form").eq(0).find(e.selector),n=e.invert;return 0===i.length?e.ifempty:(i.each(function(){n&&!e.invert||!n&&e.invert||(n=Boolean(e.validate.call(t(this))))}),n)}},e=t.extend(!0,{},n,i);return t(this).each(function(){t(this).on("click",function(i){e.rule.call(t(this))||(alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit),i.preventDefault())})})},t(document).ready(function(){t(".tinvwl-break-input").tinvwl_break_submit({selector:".tinvwl-break-input-filed"}),t(".tinvwl-break-checkbox").tinvwl_break_submit({selector:"table td input[type=checkbox]",validate:function(){return t(this).is(":checked")}})})}(jQuery),function(t){t(".variations_form").each(function(){var i=t(this),n=i.find(".tinvwl_add_to_wishlist_button");n.length&&i.on("hide_variation",function(t){t.preventDefault(),n.addClass("disabled-add-wishlist")}).on("show_variation",function(t,i,e){var o=JSON.parse(n.attr("data-tinv-wl-list")),a=!1,l="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var s in o)o[s].hasOwnProperty("in")&&Array.isArray(o[s].in)&&-1<(o[s].in||[]).indexOf(i.variation_id)&&(a=!0);n.toggleClass("tinvwl-product-in-list",a).toggleClass("tinvwl-product-make-remove",a&&l).attr("data-tinv-wl-action",a&&l?"remove":"addto"),t.preventDefault(),n.removeClass("disabled-add-wishlist")})})}(jQuery),function(t){t(document).ready(function(){t.fn.tinvwl_modal=function(i){var n={showClass:"tinv-modal-open",modal:".tinv-modal",onPrepare:function(){t("body > .tinv-wishlist").length||t("body").append(t("<div>").addClass("tinv-wishlist")),t(this).appendTo("body > .tinv-wishlist")}},e=t.extend(!0,{},n,i);return t(this).each(function(){var i=t(this),n=i.next(e.modal);e.onPrepare.call(n),i.on("click",function(){n.addClass(e.showClass)})})},t(".tinv-modal-btn").tinvwl_modal({}),t("#tinvwl_manage_actions, #tinvwl_product_actions").addClass("form-control").parent().wrapInner('<div class="tinvwl-input-group tinvwl-no-full">').find("button").wrap('<span class="tinvwl-input-group-btn">'),t(".tinv-lists-nav").each(function(){t.trim(t(this).html()).length||t(this).remove()}),t("body").on("click",".social-buttons .social[title!=email]",function(i){var n=window.open(t(this).attr("href"),t(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");n&&(n.focus(),i.preventDefault())}),t(".tinvwl-select-all").on("click",function(i){i.preventDefault(),t(this).parent().parent().find('ul li input[type="checkbox"]').attr("checked",!0)}),t(".tinvwl-select-none").on("click",function(i){i.preventDefault(),t(this).parent().parent().find('ul li input[type="checkbox"]').attr("checked",!1)}),t("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(i){i.preventDefault(),t(this).parents(".tinv-modal:first").removeClass("tinv-modal-open")}),t("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(i){t(this).data("url")&&(i.preventDefault(),window.location=t(this).data("url"))});var i=t(".tinv-wishlist .navigation-button");i.length&&i.each(function(){var i=t(this).find("> li");i.length<5&&i.parent().addClass("tinvwl-btns-count-"+i.length)}),t(".tinv-login .showlogin").unbind("click").on("click",function(i){i.preventDefault(),t(this).closest(".tinv-login").find(".login").toggle()}),t(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){t(this).toggle(!!t(this).children().not(".look_in").length||!!t(this).children(".look_in").children().length)})}),t(document.body).on("wc_fragments_refreshed wc_fragments_loaded",function(){t(".wishlist_products_counter").toggleClass("wishlist-counter-with-products","0"!=t(".wishlist_products_counter_number").html())}),t(window).on("load",function(){t(".tinv-wishlist.woocommerce").length&&t(".woocommerce-message").length&&(t(document.body).on("wc_fragments_refreshed.wishlist",function(){if("undefined"==typeof wc_cart_fragments_params)return!1;cart_hash_key=wc_cart_fragments_params.ajax_url.toString()+"-wc_cart_hash",localStorage.setItem(cart_hash_key,localStorage.getItem(cart_hash_key)+(new Date).getTime()),sessionStorage.setItem(cart_hash_key,sessionStorage.getItem(cart_hash_key)+(new Date).getTime()),t(document.body).off("wc_fragments_refreshed.wishlist")}),t(document.body).trigger("updated_wc_div"))})}(jQuery);
1
+ !function(t){t.fn.tinvwl_to_wishlist=function(i){var n={api_url:window.location.href,text_create:window.tinvwl_add_to_wishlist.text_create,text_already_in:window.tinvwl_add_to_wishlist.text_already_in,class:{dialogbox:".tinvwl_add_to_select_wishlist",select:".tinvwl_wishlist",newtitle:".tinvwl_new_input",dialogbutton:".tinvwl_button_add"},redirectTimer:null,onPrepareList:function(){},onGetDialogBox:function(){},onPrepareDialogBox:function(){t("body > .tinv-wishlist").length||t("body").append(t("<div>").addClass("tinv-wishlist")),t(this).appendTo("body > .tinv-wishlist")},onCreateWishList:function(i){t(this).append(t("<option>").html(i.title).val(i.ID).toggleClass("tinv_in_wishlist",i.in))},onSelectWishList:function(){},onDialogShow:function(){t(this).addClass("tinv-modal-open")},onDialogHide:function(){t(this).removeClass("tinv-modal-open")},onInited:function(){},onClick:function(){if(t(this).is(".disabled-add-wishlist"))return!1;this.tinvwl_dialog?this.tinvwl_dialog.show_list.call(this):e.onActionProduct.call(this)},onPrepareDataAction:function(){},filterProductAlreadyIn:function(i){i=i||[];var n={};return t("form.cart[method=post], .woocommerce-variation-add-to-cart").find("input, select").each(function(){var i=t(this).attr("name"),e=t(this).attr("type"),o=t(this).val();"checkbox"===e||"radio"===e?t(this).is(":checked")&&(n["form"+i]=o):n["form"+i]=o}),n=n.formvariation_id,i.filter(function(t){if("object"==typeof t.in&&"string"==typeof n){var i=parseInt(n);return 0<=t.in.indexOf(i)}return t.in})},onMultiProductAlreadyIn:function(i){i=i||[];i=e.onPrepareList.call(i)||i,i=e.filterProductAlreadyIn.call(this,i)||i,t(this).parent().parent().find(".already-in").remove();var n="";switch(i.length){case 0:break;default:n=t("<ul>");t.each(i,function(i,e){n.append(t("<li>").html(t("<a>").html(e.title).attr({href:e.url})).val(e.ID))})}n.length&&t(this).closest(".tinv-modal-inner").find("img").after(t("<div>").addClass("already-in").html(e.text_already_in+" ").append(n))},onAction:{redirect:function(t){e.redirectTimer&&clearTimeout(e.redirectTimer),e.redirectTimer=window.setTimeout(function(){window.location.href=t},4e3)},force_redirect:function(t){window.location.href=t},wishlists:function(i){t(this).attr("data-tinv-wl-list",i)},msg:function(i){if(!i)return!1;var n=t(i).eq(0);t("body > .tinv-wishlist").length||t("body").append(t("<div>").addClass("tinv-wishlist")),t("body > .tinv-wishlist").append(n),n.on("click",".tinv-close-modal, .tinvwl_button_close, .tinv-overlay",function(t){t.preventDefault(),n.remove(),e.redirectTimer&&clearTimeout(e.redirectTimer)})},status:function(i){i&&t(this).addClass("tinvwl-product-in-list")},removed:function(i){i&&t(this).removeClass("tinvwl-product-in-list").removeClass("tinvwl-product-make-remove").attr("data-tinv-wl-action","addto")},make_remove:function(i){t(this).toggleClass("tinvwl-product-make-remove",i).attr("data-tinv-wl-action",i?"remove":"addto")},fragments:function(i){if("undefined"==typeof wc_cart_fragments_params)return t.each(i,function(i,n){t(i).replaceWith(n)}),!1;var n;try{n="sessionStorage"in window&&null!==window.sessionStorage,window.sessionStorage.setItem("wc","test"),window.sessionStorage.removeItem("wc"),window.localStorage.setItem("wc","test"),window.localStorage.removeItem("wc")}catch(t){n=!1}if(n)try{var e=t.parseJSON(sessionStorage.getItem(wc_cart_fragments_params.fragment_name)),o=wc_cart_fragments_params.ajax_url.toString()+"-wc_cart_hash",a=sessionStorage.getItem(o),l=Cookies.get("woocommerce_cart_hash"),s=sessionStorage.getItem("wc_cart_created");if(null!==a&&void 0!==a&&""!==a||(a=""),null!==l&&void 0!==l&&""!==l||(l=""),a&&(null===s||void 0===s||""===s))throw"No cart_created";if(t.each(i,function(t,i){e[t]=i}),localStorage.setItem(o,localStorage.getItem(o)+(new Date).getTime()),sessionStorage.setItem(o,sessionStorage.getItem(o)+(new Date).getTime()),sessionStorage.setItem(wc_cart_fragments_params.fragment_name,JSON.stringify(e)),!e||!e["div.widget_shopping_cart_content"]||a!==l)throw"No fragment";t.each(e,function(i,n){t(i).replaceWith(n)}),t(document.body).trigger("wc_fragments_loaded")}catch(i){t(document.body).trigger("wc_fragment_refresh")}}},onActionProduct:function(i,n){var o={form:{},tinv_wishlist_id:i||"",tinv_wishlist_name:n||"",product_type:t(this).attr("data-tinv-wl-producttype"),product_id:t(this).attr("data-tinv-wl-product")||0,product_variation:t(this).attr("data-tinv-wl-productvariation")||0,product_action:t(this).attr("data-tinv-wl-action")||"addto"},a=this;t(a).closest("form.cart[method=post], .tinvwl-loop-button-wrapper").find("input, select, textarea").each(function(){var i=t(this).attr("name"),n=t(this).attr("type"),e=t(this).val(),a=10,l=function(t,i){if("object"==typeof i){void 0===t&&(t={});for(var n in i)if(""===n){var e=-1;for(e in t)e=e;t[e=parseInt(e)+1]=l(t[n],i[n])}else t[n]=l(t[n],i[n]);return t}return i};if("button"!==n&&void 0!==i&&"attribute_"!=i.substr(0,10)){for(;/^(.+)\[([^\[\]]*?)\]$/.test(i)&&0<a;){var s=i.match(/^(.+)\[([^\[\]]*?)\]$/);if(3===s.length){var r={};r[s[2]]=e,e=r}i=s[1],a--}"checkbox"===n||"radio"===n?t(this).is(":checked")&&(e.length||"object"==typeof e||(e=!0),o.form[i]=l(o.form[i],e)):o.form[i]=l(o.form[i],e)}}),o=e.onPrepareDataAction.call(a,o)||o,t.post(e.api_url,o,function(t){if(e.onDialogHide.call(a.tinvwl_dialog),"object"==typeof t)for(var i in t)"function"==typeof e.onAction[i]&&e.onAction[i].call(a,t[i]);else"function"==typeof e.onAction.msg&&e.onAction.msg.call(a,t)})}},e=t.extend(!0,{},n,i);return t(this).each(function(){if(!t(this).attr("data-tinv-wl-list"))return!1;if(e.dialogbox&&e.dialogbox.length&&(this.tinvwl_dialog=e.dialogbox),this.tinvwl_dialog||(this.tinvwl_dialog=e.onGetDialogBox.call(this)),!this.tinvwl_dialog){var i=t(this).nextAll(e.class.dialogbox).eq(0);i.length&&(this.tinvwl_dialog=i)}if(this.tinvwl_dialog){e.onPrepareDialogBox.call(this.tinvwl_dialog),"function"!=typeof this.tinvwl_dialog.update_list&&(this.tinvwl_dialog.update_list=function(i){var n=t(this).find(e.class.select).eq(0);t(this).find(e.class.newtitle).hide().val(""),n.html(""),t.each(i,function(t,i){e.onCreateWishList.call(n,i)}),e.text_create&&e.onCreateWishList.call(n,{ID:"",title:e.text_create,in:!1}),e.onMultiProductAlreadyIn.call(n,i),e.onSelectWishList.call(n,i),t(this).find(e.class.newtitle).toggle(""===n.val())}),"function"!=typeof this.tinvwl_dialog.show_list&&(this.tinvwl_dialog.show_list=function(){var i=t.parseJSON(t(this).attr("data-tinv-wl-list"))||[];i.length?(i=e.onPrepareList.call(i)||i,this.tinvwl_dialog.update_list(i),e.onDialogShow.call(this.tinvwl_dialog)):e.onActionProduct.call(this)});var n=this;t(this.tinvwl_dialog).find(e.class.dialogbutton).off("click").on("click",function(){var i,o=t(n.tinvwl_dialog).find(e.class.select),a=t(n.tinvwl_dialog).find(e.class.newtitle);o.val()||a.val()?e.onActionProduct.call(n,o.val(),a.val()):((i=a.is(":visible")?a:o).addClass("empty-name-wishlist"),window.setTimeout(function(){i.removeClass("empty-name-wishlist")},1e3))})}t(this).off("click").on("click",e.onClick),e.onInited.call(this,e)})},t(document).ready(function(){t("body").on("click",".tinvwl_add_to_wishlist_button",function(i){if(t(this).is(".disabled-add-wishlist"))return i.preventDefault(),void window.alert(tinvwl_add_to_wishlist.i18n_make_a_selection_text);t(this).is(".inited-add-wishlist")||t(this).tinvwl_to_wishlist({onInited:function(i){t(this).addClass("inited-add-wishlist"),i.onClick.call(this)}})}),t(".tinvwl_move_product_button").tinvwl_to_wishlist({class:{dialogbox:".tinvwl_wishlist_move",select:".tinvwl_wishlist",newtitle:".tinvwl_new_input",dialogbutton:".tinvwl_button_move"},onPrepareDataAction:function(i){return i.tinv_from_wishlist_id=t(this).attr("data-tinv-wl"),i.tinv_to_wishlist_id=i.tinv_wishlist_id,i.tinv_wishlist_name||(i.tinv_wishlist_name="-"),delete i.tinv_wishlist_id,i},onPrepareList:function(){return this.filter(function(t){return!t.hide})},onAction:{redirect:function(t){return window.location.href=t}}}),t(".global-cb").on("click",function(){t(this).closest("table").eq(0).find(".product-cb input[type=checkbox], .wishlist-cb input[type=checkbox]").prop("checked",t(this).is(":checked"))})})}(jQuery),function(t){t.fn.tinvwl_break_submit=function(i){var n={selector:"input, select, textarea",ifempty:!0,invert:!1,validate:function(){return t(this).val()},rule:function(){var i=t(this).parents("form").eq(0).find(e.selector),n=e.invert;return 0===i.length?e.ifempty:(i.each(function(){n&&!e.invert||!n&&e.invert||(n=Boolean(e.validate.call(t(this))))}),n)}},e=t.extend(!0,{},n,i);return t(this).each(function(){t(this).on("click",function(i){e.rule.call(t(this))||(alert(window.tinvwl_add_to_wishlist.tinvwl_break_submit),i.preventDefault())})})},t(document).ready(function(){t(".tinvwl-break-input").tinvwl_break_submit({selector:".tinvwl-break-input-filed"}),t(".tinvwl-break-checkbox").tinvwl_break_submit({selector:"table td input[type=checkbox]",validate:function(){return t(this).is(":checked")}})})}(jQuery),function(t){t(".variations_form").each(function(){var i=t(this),n=i.find(".tinvwl_add_to_wishlist_button");n.length&&i.on("hide_variation",function(t){t.preventDefault(),n.addClass("disabled-add-wishlist")}).on("show_variation",function(t,i,e){var o=JSON.parse(n.attr("data-tinv-wl-list")),a=!1,l="1"==window.tinvwl_add_to_wishlist.simple_flow;for(var s in o)o[s].hasOwnProperty("in")&&Array.isArray(o[s].in)&&-1<(o[s].in||[]).indexOf(i.variation_id)&&(a=!0);n.toggleClass("tinvwl-product-in-list",a).toggleClass("tinvwl-product-make-remove",a&&l).attr("data-tinv-wl-action",a&&l?"remove":"addto"),t.preventDefault(),n.removeClass("disabled-add-wishlist")})})}(jQuery),function(t){t(document).ready(function(){t.fn.tinvwl_modal=function(i){var n={showClass:"tinv-modal-open",modal:".tinv-modal",onPrepare:function(){t("body > .tinv-wishlist").length||t("body").append(t("<div>").addClass("tinv-wishlist")),t(this).appendTo("body > .tinv-wishlist")}},e=t.extend(!0,{},n,i);return t(this).each(function(){var i=t(this),n=i.next(e.modal);e.onPrepare.call(n),i.on("click",function(){n.addClass(e.showClass)})})},t(".tinv-modal-btn").tinvwl_modal({}),t("#tinvwl_manage_actions, #tinvwl_product_actions").addClass("form-control").parent().wrapInner('<div class="tinvwl-input-group tinvwl-no-full">').find("button").wrap('<span class="tinvwl-input-group-btn">'),t(".tinv-lists-nav").each(function(){t.trim(t(this).html()).length||t(this).remove()}),t("body").on("click",".social-buttons .social[title!=email]",function(i){var n=window.open(t(this).attr("href"),t(this).attr("title"),"width=420,height=320,resizable=yes,scrollbars=yes,status=yes");n&&(n.focus(),i.preventDefault())}),t(".tinvwl-select-all").on("click",function(i){i.preventDefault(),t(this).parent().parent().find('ul li input[type="checkbox"]').attr("checked",!0)}),t(".tinvwl-select-none").on("click",function(i){i.preventDefault(),t(this).parent().parent().find('ul li input[type="checkbox"]').attr("checked",!1)}),t("body").on("click",".tinv-wishlist .tinv-overlay, .tinv-wishlist .tinv-close-modal, .tinv-wishlist .tinvwl_button_close",function(i){i.preventDefault(),t(this).parents(".tinv-modal:first").removeClass("tinv-modal-open")}),t("body").on("click",".tinv-wishlist .tinvwl-btn-onclick",function(i){t(this).data("url")&&(i.preventDefault(),window.location=t(this).data("url"))});var i=t(".tinv-wishlist .navigation-button");i.length&&i.each(function(){var i=t(this).find("> li");i.length<5&&i.parent().addClass("tinvwl-btns-count-"+i.length)}),t(".tinv-login .showlogin").unbind("click").on("click",function(i){i.preventDefault(),t(this).closest(".tinv-login").find(".login").toggle()}),t(".tinv-wishlist table.tinvwl-table-manage-list tfoot td").each(function(){t(this).toggle(!!t(this).children().not(".look_in").length||!!t(this).children(".look_in").children().length)})}),t(document.body).on("wc_fragments_refreshed wc_fragments_loaded",function(){t(".wishlist_products_counter").toggleClass("wishlist-counter-with-products","0"!=t(".wishlist_products_counter_number").html())}),t(window).on("load",function(){t(".tinv-wishlist.woocommerce").length&&t(".woocommerce-message").length&&(t(document.body).on("wc_fragments_refreshed.wishlist",function(){if("undefined"==typeof wc_cart_fragments_params)return!1;cart_hash_key=wc_cart_fragments_params.ajax_url.toString()+"-wc_cart_hash",localStorage.setItem(cart_hash_key,localStorage.getItem(cart_hash_key)+(new Date).getTime()),sessionStorage.setItem(cart_hash_key,sessionStorage.getItem(cart_hash_key)+(new Date).getTime()),t(document.body).off("wc_fragments_refreshed.wishlist")}),t(document.body).trigger("updated_wc_div"))})}(jQuery);
includes/view.helper.php CHANGED
@@ -357,7 +357,7 @@ class TInvWL_View {
357
  */
358
  private static function status_panel() {
359
  return array(
360
- sprintf( '<a class="tinvwl-btn grey w-icon md-icon smaller-txt" href="%s"><i class="fati fati-graduation-cap"></i><span class="tinvwl-txt">%s</span></a>', 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=header_documentation&partner=' . TINVWL_UTM_SOURCE, __( 'read documentation', 'ti-woocommerce-wishlist' ) ),
361
  );
362
  }
363
 
357
  */
358
  private static function status_panel() {
359
  return array(
360
+ sprintf( '<a class="tinvwl-btn grey w-icon md-icon smaller-txt" href="%s"><i class="fati fati-graduation-cap"></i><span class="tinvwl-txt">%s</span></a>', 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist-free/?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=header_documentation&partner=' . TINVWL_UTM_SOURCE, __( 'read documentation', 'ti-woocommerce-wishlist' ) ),
361
  );
362
  }
363
 
languages/ti-woocommerce-wishlist.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: WooCommerce Wishlist Plugin\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2018-05-11 04:29+0700\n"
7
  "POT-Revision-Date: Sun Apr 10 2016 12:21:06 GMT+0200 (Västeuropa, "
8
  "sommartid)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
@@ -717,7 +717,7 @@ msgstr ""
717
  msgid "Accent Buttons Text Hover Color"
718
  msgstr ""
719
 
720
- #: admin/settings/upgrade.class.php:34 admin/tinvwl.class.php:214
721
  #: views/wizard/finish.php:31
722
  msgid "Upgrade to Premium"
723
  msgstr ""
@@ -774,14 +774,14 @@ msgstr ""
774
  msgid "Are you sure you want to reset the settings?"
775
  msgstr ""
776
 
777
- #: admin/tinvwl.class.php:253
778
  #, php-format
779
  msgid ""
780
  "<code>%1$s</code> version <strong style=\"color:red\">%2$s</strong> is out "
781
  "of date. The core version is <strong style=\"color:red\">%3$s</strong>"
782
  msgstr ""
783
 
784
- #: admin/tinvwl.class.php:279
785
  #, php-format
786
  msgid ""
787
  "<strong>Your theme (%1$s) contains outdated copies of some WooCommerce "
@@ -792,7 +792,7 @@ msgid ""
792
  "the theme."
793
  msgstr ""
794
 
795
- #: admin/tinvwl.class.php:404
796
  #, php-format
797
  msgid ""
798
  "The \"Add to Wishlist\" button may work improperly in a product type \"%1$s"
@@ -1056,11 +1056,11 @@ msgstr ""
1056
  msgid "Ready!"
1057
  msgstr ""
1058
 
1059
- #: public/addtowishlist.class.php:172
1060
  msgid "Please, login to add products to Wishlist"
1061
  msgstr ""
1062
 
1063
- #: public/addtowishlist.class.php:174
1064
  msgid "Login"
1065
  msgstr ""
1066
 
@@ -1157,11 +1157,11 @@ msgstr ""
1157
  msgid "Return to Wishlist"
1158
  msgstr ""
1159
 
1160
- #: public/wishlist/view.class.php:444
1161
  msgid "Previous Page"
1162
  msgstr ""
1163
 
1164
- #: public/wishlist/view.class.php:453
1165
  msgid "Next Page"
1166
  msgstr ""
1167
 
@@ -1206,42 +1206,42 @@ msgid "Stock Status"
1206
  msgstr ""
1207
 
1208
  #: templates/ti-wishlist-user.php:114 templates/ti-wishlist.php:120
1209
- #: tinv-wishlists-function-integration.php:884
1210
- #: tinv-wishlists-function-integration.php:1033
1211
- #: tinv-wishlists-function-integration.php:1180
1212
- #: tinv-wishlists-function-integration.php:1394
1213
  msgid "In stock"
1214
  msgstr ""
1215
 
1216
- #: tinv-wishlists-function-integration.php:296
1217
  msgid "Select options"
1218
  msgstr ""
1219
 
1220
- #: tinv-wishlists-function-integration.php:609
1221
  msgid "Note"
1222
  msgstr ""
1223
 
1224
- #: tinv-wishlists-function-integration.php:612
1225
  msgid "To"
1226
  msgstr ""
1227
 
1228
- #: tinv-wishlists-function-integration.php:615
1229
  msgid "To Email"
1230
  msgstr ""
1231
 
1232
- #: tinv-wishlists-function-integration.php:618
1233
  msgid "Address"
1234
  msgstr ""
1235
 
1236
- #: tinv-wishlists-function-integration.php:621
1237
  msgid "Reload existing Gift Card"
1238
  msgstr ""
1239
 
1240
- #: tinv-wishlists-function-integration.php:1333
1241
  msgid "Out of stock"
1242
  msgstr ""
1243
 
1244
- #: tinv-wishlists-function-integration.php:1739
1245
  msgid "Base price"
1246
  msgstr ""
1247
 
3
  msgstr ""
4
  "Project-Id-Version: WooCommerce Wishlist Plugin\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2018-06-21 22:22+0700\n"
7
  "POT-Revision-Date: Sun Apr 10 2016 12:21:06 GMT+0200 (Västeuropa, "
8
  "sommartid)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
717
  msgid "Accent Buttons Text Hover Color"
718
  msgstr ""
719
 
720
+ #: admin/settings/upgrade.class.php:34 admin/tinvwl.class.php:212
721
  #: views/wizard/finish.php:31
722
  msgid "Upgrade to Premium"
723
  msgstr ""
774
  msgid "Are you sure you want to reset the settings?"
775
  msgstr ""
776
 
777
+ #: admin/tinvwl.class.php:251
778
  #, php-format
779
  msgid ""
780
  "<code>%1$s</code> version <strong style=\"color:red\">%2$s</strong> is out "
781
  "of date. The core version is <strong style=\"color:red\">%3$s</strong>"
782
  msgstr ""
783
 
784
+ #: admin/tinvwl.class.php:277
785
  #, php-format
786
  msgid ""
787
  "<strong>Your theme (%1$s) contains outdated copies of some WooCommerce "
792
  "the theme."
793
  msgstr ""
794
 
795
+ #: admin/tinvwl.class.php:402
796
  #, php-format
797
  msgid ""
798
  "The \"Add to Wishlist\" button may work improperly in a product type \"%1$s"
1056
  msgid "Ready!"
1057
  msgstr ""
1058
 
1059
+ #: public/addtowishlist.class.php:174
1060
  msgid "Please, login to add products to Wishlist"
1061
  msgstr ""
1062
 
1063
+ #: public/addtowishlist.class.php:176
1064
  msgid "Login"
1065
  msgstr ""
1066
 
1157
  msgid "Return to Wishlist"
1158
  msgstr ""
1159
 
1160
+ #: public/wishlist/view.class.php:454
1161
  msgid "Previous Page"
1162
  msgstr ""
1163
 
1164
+ #: public/wishlist/view.class.php:463
1165
  msgid "Next Page"
1166
  msgstr ""
1167
 
1206
  msgstr ""
1207
 
1208
  #: templates/ti-wishlist-user.php:114 templates/ti-wishlist.php:120
1209
+ #: tinv-wishlists-function-integration.php:753
1210
+ #: tinv-wishlists-function-integration.php:905
1211
+ #: tinv-wishlists-function-integration.php:1052
1212
+ #: tinv-wishlists-function-integration.php:1266
1213
  msgid "In stock"
1214
  msgstr ""
1215
 
1216
+ #: tinv-wishlists-function-integration.php:149
1217
  msgid "Select options"
1218
  msgstr ""
1219
 
1220
+ #: tinv-wishlists-function-integration.php:462
1221
  msgid "Note"
1222
  msgstr ""
1223
 
1224
+ #: tinv-wishlists-function-integration.php:465
1225
  msgid "To"
1226
  msgstr ""
1227
 
1228
+ #: tinv-wishlists-function-integration.php:468
1229
  msgid "To Email"
1230
  msgstr ""
1231
 
1232
+ #: tinv-wishlists-function-integration.php:471
1233
  msgid "Address"
1234
  msgstr ""
1235
 
1236
+ #: tinv-wishlists-function-integration.php:474
1237
  msgid "Reload existing Gift Card"
1238
  msgstr ""
1239
 
1240
+ #: tinv-wishlists-function-integration.php:1205
1241
  msgid "Out of stock"
1242
  msgstr ""
1243
 
1244
+ #: tinv-wishlists-function-integration.php:1611
1245
  msgid "Base price"
1246
  msgstr ""
1247
 
public/tinvwl.class.php CHANGED
@@ -154,7 +154,7 @@ class TInvWL_Public_TInvWL {
154
  * @return string
155
  */
156
  function locate_template( $core_file, $template, $template_base ) {
157
- $_core_file = tinv_wishlist_locate_template( $template );
158
  if ( empty( $_core_file ) ) {
159
  return $core_file;
160
  }
154
  * @return string
155
  */
156
  function locate_template( $core_file, $template, $template_base ) {
157
+ $_core_file = tinv_wishlist_locate_template( $template, $template_base );
158
  if ( empty( $_core_file ) ) {
159
  return $core_file;
160
  }
public/wishlist/view.class.php CHANGED
@@ -196,7 +196,7 @@ class TInvWL_Public_Wishlist_View {
196
  return false;
197
  }
198
 
199
- define( 'DONOTCACHEPAGE', 1 );
200
 
201
  $is_owner = is_user_logged_in() ? ( get_current_user_id() === $wishlist['author'] ) : $wishlist['is_owner'];
202
  $nonce = filter_input( INPUT_POST, 'wishlist_nonce' );
196
  return false;
197
  }
198
 
199
+ WC_Cache_Helper::set_nocache_constants();
200
 
201
  $is_owner = is_user_logged_in() ? ( get_current_user_id() === $wishlist['author'] ) : $wishlist['is_owner'];
202
  $nonce = filter_input( INPUT_POST, 'wishlist_nonce' );
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://templateinvaders.com/?utm_source=wordpressorg&utm_content=d
4
  Tags: wishlist, woocommerce, woocommerce wishlist, e-commerce, shop, ecommerce wishlist, shop wishlist, wishlist for Woocommerce
5
  Requires at least: 4.5
6
  Tested up to: 4.9
7
- Stable tag: 1.7.1
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -14,7 +14,7 @@ Add Wishlist functionality to your store for free.
14
  == Description ==
15
 
16
  = GDPR Ready =
17
- The WooCommerce Wishlist plugin does not not collect any personal data from website visitors which makes it GDPR compliant.
18
 
19
  = Increase Sales and Conversions =
20
  WooCommerce Wishlist is a simple but powerful tool that can help you to convert your site visitors into loyal customers. There are many situations when customers can’t buy a product at this time or simply don’t want. Possibility to save products for later encourages users to return to your site and after all, make a purchase. Adding products to Wishlist is easy and convenient so it may also force your customers to buy even more products than they planned. Users can share their wishlist, for example, to help their friends choose a gift for upcoming holiday and so on. By sharing their Wishlists, they are bringing you, new potential customers. All in all this increasing amount of your site visitors, conversion and as a result sales.
@@ -51,7 +51,7 @@ WooCommerce Wishlist is a simple but powerful tool that can help you to convert
51
  + Product variations Support
52
 
53
  = COMPATIBILITY WITH MOST USED PLUGINS/ADDONS =
54
- We understand that our plugin is not the only one that you are going to use for your WooCommerce store and how it is important for different plugins to work well with each others. That is why we have added compatibility with the most used WooCommerce add-ons: [WooCommerce Bookings](https://woocommerce.com/products/woocommerce-bookings/?aff=3955), [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/?aff=3955), [WooCommerce Composite Products](https://woocommerce.com/products/composite-products/?aff=3955), [WooCommerce Product Bundles](https://woocommerce.com/products/product-bundles/?aff=3955), [WooCommerce Mix and Match](https://woocommerce.com/products/woocommerce-mix-and-match-products/?aff=3955), [WooCommerce Gravity Forms Product Add-Ons](https://woocommerce.com/products/gravity-forms-add-ons/?aff=3955), [WooCommerce Gift Cards](https://wordpress.org/plugins/gift-cards-for-woocommerce/), [WooCommerce TM Extra Product Options](https://codecanyon.net/item/woocommerce-extra-product-options/7908619?ref=olegnax).
55
  It is also very important for any WordPress website to use cache plugins, so we make sure that our WooCommerce Wishlist works well with [WP Rocket](https://wp-rocket.me/), [WP Super Cache](https://wordpress.org/plugins/wp-super-cache/) and [W3 Total Cache](https://wordpress.org/plugins/w3-total-cache/) plugins.
56
 
57
  = Add to Wishlist button =
@@ -65,7 +65,6 @@ You can show/hide any column in wishlist table on wishlist page. So it is for yo
65
  WooCommerce Wishlist Plugin comes with over 60 appearance options such as colors, font size, borders, etc. Not enough? You can add your custom CSS styles directly in admin panel.
66
 
67
  = Translation Ready =
68
-
69
  You can easily translate WooCommerce Wishlist Plugin to any language. Simply choose the most convenient way for you: using poEdit tool, [Loco Translate](https://wordpress.org/plugins/loco-translate/), [WP Multilang](https://wordpress.org/plugins/wp-multilang/) or [WPML](https://wpml.org/?aid=9393&affiliate_key=9xzbMQnIyxHE).
70
 
71
  = Responsive & Retina Ready =
@@ -132,6 +131,15 @@ If you get stuck, you can ask for help in the [Plugin Forum](https://wordpress.o
132
 
133
  == Changelog ==
134
 
 
 
 
 
 
 
 
 
 
135
  = 1.7.1 =
136
  *Release Date - 01 June 2018*
137
 
@@ -493,6 +501,3 @@ You are excited from the "WooCommerce Wishlist" plugin and want to contribute? G
493
  == Documentation ==
494
  Full documentation is available [here](https://templateinvaders.com/documentation/ti-woocommerce-wishlist-free/?utm_source=wordpressorg&utm_content=documentation).
495
 
496
- == Upgrade Notice ==
497
- = 1.5 =
498
- Improved frontend performance. Added plugin support for [WooCommerce Gift Cards](https://wordpress.org/plugins/gift-cards-for-woocommerce/), [WooCommerce Bookings](https://woocommerce.com/products/woocommerce-bookings/?aff=3955), [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/?aff=3955), [WooCommerce Composite Products](https://woocommerce.com/products/composite-products/?aff=3955), [WooCommerce Product Bundles](https://woocommerce.com/products/product-bundles/?aff=3955), [WooCommerce Mix and Match](https://woocommerce.com/products/woocommerce-mix-and-match-products/?aff=3955), [WooCommerce Gravity Forms Product Add-Ons](https://woocommerce.com/products/gravity-forms-add-ons/?aff=3955).
4
  Tags: wishlist, woocommerce, woocommerce wishlist, e-commerce, shop, ecommerce wishlist, shop wishlist, wishlist for Woocommerce
5
  Requires at least: 4.5
6
  Tested up to: 4.9
7
+ Stable tag: 1.7.2
8
  License: GPLv3
9
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
10
 
14
  == Description ==
15
 
16
  = GDPR Ready =
17
+ The WooCommerce Wishlist plugin does not collect any personal data from website visitors which makes it GDPR compliant.
18
 
19
  = Increase Sales and Conversions =
20
  WooCommerce Wishlist is a simple but powerful tool that can help you to convert your site visitors into loyal customers. There are many situations when customers can’t buy a product at this time or simply don’t want. Possibility to save products for later encourages users to return to your site and after all, make a purchase. Adding products to Wishlist is easy and convenient so it may also force your customers to buy even more products than they planned. Users can share their wishlist, for example, to help their friends choose a gift for upcoming holiday and so on. By sharing their Wishlists, they are bringing you, new potential customers. All in all this increasing amount of your site visitors, conversion and as a result sales.
51
  + Product variations Support
52
 
53
  = COMPATIBILITY WITH MOST USED PLUGINS/ADDONS =
54
+ We understand that our plugin is not the only one that you are going to use for your WooCommerce store and how it is important for different plugins to work well with each others. That is why we have added compatibility with the most used WooCommerce add-ons: [WooCommerce Bookings](https://woocommerce.com/products/woocommerce-bookings/?aff=3955), [WooCommerce Subscriptions](https://woocommerce.com/products/woocommerce-subscriptions/?aff=3955), [WooCommerce Composite Products](https://woocommerce.com/products/composite-products/?aff=3955), [WooCommerce Product Bundles](https://woocommerce.com/products/product-bundles/?aff=3955), [WooCommerce Mix and Match](https://woocommerce.com/products/woocommerce-mix-and-match-products/?aff=3955), [WooCommerce Gravity Forms Product Add-Ons](https://woocommerce.com/products/gravity-forms-add-ons/?aff=3955), [WooCommerce Gift Cards](https://wordpress.org/plugins/gift-cards-for-woocommerce/), [WooCommerce TM Extra Product Options](https://codecanyon.net/item/woocommerce-extra-product-options/7908619?ref=olegnax), [WooCommerce Product Add-ons](https://woocommerce.com/products/product-add-ons/?aff=3955).
55
  It is also very important for any WordPress website to use cache plugins, so we make sure that our WooCommerce Wishlist works well with [WP Rocket](https://wp-rocket.me/), [WP Super Cache](https://wordpress.org/plugins/wp-super-cache/) and [W3 Total Cache](https://wordpress.org/plugins/w3-total-cache/) plugins.
56
 
57
  = Add to Wishlist button =
65
  WooCommerce Wishlist Plugin comes with over 60 appearance options such as colors, font size, borders, etc. Not enough? You can add your custom CSS styles directly in admin panel.
66
 
67
  = Translation Ready =
 
68
  You can easily translate WooCommerce Wishlist Plugin to any language. Simply choose the most convenient way for you: using poEdit tool, [Loco Translate](https://wordpress.org/plugins/loco-translate/), [WP Multilang](https://wordpress.org/plugins/wp-multilang/) or [WPML](https://wpml.org/?aid=9393&affiliate_key=9xzbMQnIyxHE).
69
 
70
  = Responsive & Retina Ready =
131
 
132
  == Changelog ==
133
 
134
+ = 1.7.2 =
135
+ *Release Date - 21 June 2018*
136
+
137
+ * Fixed WooCommerce templates location issue
138
+ * Fixed JavaScript condition for products custom attributes
139
+ * Improved compatibility with [WooCommerce Composite Products](https://woocommerce.com/products/composite-products/?aff=3955) plugin
140
+ * Improved compatibility with [WooCommerce Product Add-ons](https://woocommerce.com/products/product-add-ons/?aff=3955) plugin
141
+ * Improved compatibility with [WP Super Cache](https://wordpress.org/plugins/wp-super-cache/), [W3 Total Cache](https://wordpress.org/plugins/w3-total-cache/), [WP Rocket](https://wp-rocket.me/) plugins
142
+
143
  = 1.7.1 =
144
  *Release Date - 01 June 2018*
145
 
501
  == Documentation ==
502
  Full documentation is available [here](https://templateinvaders.com/documentation/ti-woocommerce-wishlist-free/?utm_source=wordpressorg&utm_content=documentation).
503
 
 
 
 
ti-woocommerce-wishlist.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin Name: WooCommerce Wishlist Plugin
5
  * Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/
6
  * Description: Wishlist functionality for your WooCommerce store.
7
- * Version: 1.7.1
8
  * Requires at least: 4.5
9
  * Tested up to: 4.9
10
  * WC requires at least: 2.6
@@ -41,7 +41,7 @@ if ( ! defined( 'TINVWL_DOMAIN' ) ) {
41
  }
42
 
43
  if ( ! defined( 'TINVWL_FVERSION' ) ) {
44
- define( 'TINVWL_FVERSION', '1.7.1' );
45
  }
46
 
47
  if ( ! defined( 'TINVWL_LOAD_FREE' ) ) {
4
  * Plugin Name: WooCommerce Wishlist Plugin
5
  * Plugin URI: https://wordpress.org/plugins/ti-woocommerce-wishlist/
6
  * Description: Wishlist functionality for your WooCommerce store.
7
+ * Version: 1.7.2
8
  * Requires at least: 4.5
9
  * Tested up to: 4.9
10
  * WC requires at least: 2.6
41
  }
42
 
43
  if ( ! defined( 'TINVWL_FVERSION' ) ) {
44
+ define( 'TINVWL_FVERSION', '1.7.2' );
45
  }
46
 
47
  if ( ! defined( 'TINVWL_LOAD_FREE' ) ) {
tinv-wishlists-function-integration.php CHANGED
@@ -11,45 +11,6 @@ if ( ! defined( 'ABSPATH' ) ) {
11
  die;
12
  }
13
 
14
- if ( ! function_exists( 'tinvwl_rocket_reject_uri' ) ) {
15
-
16
- /**
17
- * Disable cache for WP Rocket
18
- *
19
- * @param array $uri URI.
20
- *
21
- * @return array
22
- */
23
- function tinvwl_rocket_reject_uri( $uri = array() ) {
24
- $ids = array(
25
- tinv_get_option( 'page', 'wishlist' ),
26
- );
27
- $pages = $ids;
28
- $languages = apply_filters( 'wpml_active_languages', array(), array(
29
- 'skip_missing' => 0,
30
- 'orderby' => 'code',
31
- ) );
32
- if ( ! empty( $languages ) ) {
33
- foreach ( $ids as $id ) {
34
- foreach ( $languages as $l ) {
35
- $pages[] = apply_filters( 'wpml_object_id', $id, 'page', true, $l['language_code'] );
36
- }
37
- }
38
- $pages = array_unique( $pages );
39
- }
40
- $pages = array_filter( $pages );
41
- if ( ! empty( $pages ) ) {
42
- foreach ( $pages as $page ) {
43
- $uri[] = str_replace( get_site_url(), '', get_permalink( $page ) );
44
- }
45
- }
46
-
47
- return $uri;
48
- }
49
-
50
- add_filter( 'rocket_cache_reject_uri', 'tinvwl_rocket_reject_uri' );
51
- } // End if().
52
-
53
  if ( ! function_exists( 'tinvwl_rocket_reject_cookies' ) ) {
54
 
55
  /**
@@ -68,114 +29,6 @@ if ( ! function_exists( 'tinvwl_rocket_reject_cookies' ) ) {
68
  add_filter( 'rocket_cache_reject_cookies', 'tinvwl_rocket_reject_cookies' );
69
  }
70
 
71
- if ( ! function_exists( 'tinvwl_supercache_reject_uri' ) ) {
72
-
73
- /**
74
- * Disable cache for WP Super Cache
75
- *
76
- * @global array $cache_rejected_uri
77
- *
78
- * @param string $buffer Intercepted the output of the page.
79
- *
80
- * @return string
81
- */
82
- function tinvwl_supercache_reject_uri( $buffer ) {
83
- global $cache_rejected_uri;
84
- if ( ! is_null( $cache_rejected_uri ) && is_array( $cache_rejected_uri ) ) {
85
- $ids = array(
86
- tinv_get_option( 'page', 'wishlist' ),
87
- );
88
- $pages = $ids;
89
- $languages = apply_filters( 'wpml_active_languages', array(), array(
90
- 'skip_missing' => 0,
91
- 'orderby' => 'code',
92
- ) );
93
- if ( ! empty( $languages ) ) {
94
- foreach ( $ids as $id ) {
95
- foreach ( $languages as $l ) {
96
- $pages[] = apply_filters( 'wpml_object_id', $id, 'page', true, $l['language_code'] );
97
- }
98
- }
99
- $pages = array_unique( $pages );
100
- }
101
- $pages = array_filter( $pages );
102
- if ( ! empty( $pages ) ) {
103
- foreach ( $pages as $page ) {
104
- $cache_rejected_uri[] = str_replace( get_site_url(), '', get_permalink( $page ) );
105
- }
106
- }
107
- }
108
-
109
- return $buffer;
110
- }
111
-
112
- add_filter( 'wp_cache_ob_callback_filter', 'tinvwl_supercache_reject_uri' );
113
- } // End if().
114
-
115
- if ( ! function_exists( 'tinvwl_w3total_reject_uri' ) ) {
116
-
117
- /**
118
- * Disable cache for W3 Total Cache
119
- */
120
- function tinvwl_w3total_reject_uri() {
121
- if ( ! function_exists( 'w3tc_pgcache_flush' ) || ! function_exists( 'w3_instance' ) ) {
122
- return;
123
- }
124
- $ids = array(
125
- tinv_get_option( 'page', 'wishlist' ),
126
- );
127
- $pages = $ids;
128
- $languages = apply_filters( 'wpml_active_languages', array(), array(
129
- 'skip_missing' => 0,
130
- 'orderby' => 'code',
131
- ) );
132
- if ( ! empty( $languages ) ) {
133
- foreach ( $ids as $id ) {
134
- foreach ( $languages as $l ) {
135
- $pages[] = apply_filters( 'wpml_object_id', $id, 'page', true, $l['language_code'] );
136
- }
137
- }
138
- $pages = array_unique( $pages );
139
- }
140
- $pages = array_filter( $pages );
141
- if ( ! empty( $pages ) ) {
142
- foreach ( $pages as $i => $page ) {
143
- $pages[ $i ] = preg_replace( "/^\//", '', str_replace( get_site_url(), '', get_permalink( $page ) ) ); // @codingStandardsIgnoreLine Squiz.Strings.DoubleQuoteUsage.NotRequired
144
- }
145
- }
146
- $pages = array_unique( $pages );
147
- $pages = array_filter( $pages );
148
-
149
- $config = w3_instance( 'W3_Config' );
150
- if ( ! empty( $pages ) ) {
151
- $sections = array( 'dbcache.reject.uri', 'pgcache.reject.uri' );
152
- foreach ( $sections as $section ) {
153
- $settings = array_map( 'trim', $config->get_array( $section ) );
154
- $changed = false;
155
- foreach ( $pages as $page ) {
156
- if ( ! in_array( $page, $settings ) ) { // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
157
- $settings[] = $page;
158
- $changed = true;
159
- }
160
- }
161
- if ( $changed ) {
162
- $config->set( $section, $settings );
163
- $config->save();
164
- }
165
- }
166
- }
167
-
168
- $settings = array_map( 'trim', $config->get_array( 'pgcache.reject.cookie' ) );
169
- if ( ! in_array( 'tinv_wishlist', $settings ) ) { // @codingStandardsIgnoreLine WordPress.PHP.StrictInArray.MissingTrueStrict
170
- $settings[] = 'tinv_wishlist';
171
- $config->set( 'pgcache.reject.cookie', $settings );
172
- $config->save();
173
- }
174
- }
175
-
176
- add_action( 'admin_init', 'tinvwl_w3total_reject_uri' );
177
- } // End if().
178
-
179
  if ( ! function_exists( 'tinvwl_wp_fastest_cache_reject' ) ) {
180
 
181
  /**
@@ -837,7 +690,7 @@ if ( ! function_exists( 'tinvwl_row_woocommerce_composite_products' ) ) {
837
  * Add rows for sub product for WooCommerce Composite Products
838
  *
839
  * @param array $wl_product Wishlist Product.
840
- * @param \WC_Product $product Woocommerce Product.
841
  */
842
  function tinvwl_row_woocommerce_composite_products( $wl_product, $product ) {
843
  if ( is_object( $product ) && $product->is_type( 'composite' ) && array_key_exists( 'wccp_component_selection', $wl_product['meta'] ) ) {
@@ -868,6 +721,22 @@ if ( ! function_exists( 'tinvwl_row_woocommerce_composite_products' ) ) {
868
  $product_image = $composited_product->get_image();
869
  $product_title = $composited_product->get_title();
870
  $product_price = $composited_product->get_price_html();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
871
  if ( $composited_product->is_visible() ) {
872
  $product_image = sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product_image );
873
  $product_title = sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product_title );
@@ -881,11 +750,11 @@ if ( ! function_exists( 'tinvwl_row_woocommerce_composite_products' ) ) {
881
  if ( ! array_key_exists( 'class', $availability ) ) {
882
  $availability['class'] = '';
883
  }
884
- $availability_html = empty( $availability['availability'] ) ? '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="fati fati-check"></i></span><span class="tinvwl-txt">' . esc_html__( 'In stock', 'ti-woocommerce-wishlist' ) . '</span></p>' : '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="fati fati-times"></i></span><span>' . esc_html( $availability['availability'] ) . '</span></p>';
885
  $row_string = '<tr>';
886
  $row_string .= '<td colspan="2"></td>&nbsp;<td class="product-thumbnail">%2$s</td><td class="product-name">%1$s:<br/>%3$s</td>';
887
  if ( tinv_get_option( 'product_table', 'colm_price' ) ) {
888
- $row_string .= '<td class="product-price">%3$s &times; %6$s</td>';
889
  }
890
  if ( tinv_get_option( 'product_table', 'colm_date' ) ) {
891
  $row_string .= '<td class="product-date">&nbsp;</td>';
@@ -893,6 +762,9 @@ if ( ! function_exists( 'tinvwl_row_woocommerce_composite_products' ) ) {
893
  if ( tinv_get_option( 'product_table', 'colm_stock' ) ) {
894
  $row_string .= '<td class="product-stock">%5$s</td>';
895
  }
 
 
 
896
  if ( tinv_get_option( 'product_table', 'add_to_cart' ) ) {
897
  $row_string .= '<td class="product-action">&nbsp;</td>';
898
  }
@@ -1934,12 +1806,11 @@ if ( ! function_exists( 'tinvwl_item_price_woocommerce_product_addons' ) ) {
1934
 
1935
  if ( class_exists( 'WC_Product_Addons' ) ) {
1936
 
1937
- $price = 0;
1938
-
1939
  $product_addons = get_product_addons( $product->get_id() );
1940
 
1941
  if ( $product_addons ) {
1942
 
 
1943
 
1944
  foreach ( $product_addons as $addon ) {
1945
 
11
  die;
12
  }
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
  if ( ! function_exists( 'tinvwl_rocket_reject_cookies' ) ) {
15
 
16
  /**
29
  add_filter( 'rocket_cache_reject_cookies', 'tinvwl_rocket_reject_cookies' );
30
  }
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  if ( ! function_exists( 'tinvwl_wp_fastest_cache_reject' ) ) {
33
 
34
  /**
690
  * Add rows for sub product for WooCommerce Composite Products
691
  *
692
  * @param array $wl_product Wishlist Product.
693
+ * @param \WC_Product_Composite $product Woocommerce Product.
694
  */
695
  function tinvwl_row_woocommerce_composite_products( $wl_product, $product ) {
696
  if ( is_object( $product ) && $product->is_type( 'composite' ) && array_key_exists( 'wccp_component_selection', $wl_product['meta'] ) ) {
721
  $product_image = $composited_product->get_image();
722
  $product_title = $composited_product->get_title();
723
  $product_price = $composited_product->get_price_html();
724
+
725
+ $component_option = $product->get_component_option( $component_id, $composited_product_id );
726
+
727
+ if ( $component_option ) {
728
+ if ( false === $component_option->is_priced_individually() && $composited_product->get_price() == 0 ) {
729
+ $product_price = '';
730
+ } elseif ( false === $component_option->get_component()->is_subtotal_visible( 'cart' ) ) {
731
+ $product_price = '';
732
+ } elseif ( apply_filters( 'woocommerce_add_composited_cart_item_prices', true ) ) {
733
+ if ( $product_price ) {
734
+ $product_price = '<span class="component_table_item_price">' . $product_price . '</span>';
735
+ }
736
+ }
737
+ }
738
+
739
+
740
  if ( $composited_product->is_visible() ) {
741
  $product_image = sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product_image );
742
  $product_title = sprintf( '<a href="%s">%s</a>', esc_url( $product_url ), $product_title );
750
  if ( ! array_key_exists( 'class', $availability ) ) {
751
  $availability['class'] = '';
752
  }
753
+ $availability_html = empty( $availability['availability'] ) ? '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="fati fati-check"></i></span><span class="tinvwl-txt">' . esc_html__( 'In stock', 'ti-woocommerce-wishlist-premium' ) . '</span></p>' : '<p class="stock ' . esc_attr( $availability['class'] ) . '"><span><i class="fati fati-times"></i></span><span>' . esc_html( $availability['availability'] ) . '</span></p>';
754
  $row_string = '<tr>';
755
  $row_string .= '<td colspan="2"></td>&nbsp;<td class="product-thumbnail">%2$s</td><td class="product-name">%1$s:<br/>%3$s</td>';
756
  if ( tinv_get_option( 'product_table', 'colm_price' ) ) {
757
+ $row_string .= ( $product_price ) ? '<td class="product-price">%4$s &times; %6$s</td>' : '<td class="product-price">%4$s</td>';
758
  }
759
  if ( tinv_get_option( 'product_table', 'colm_date' ) ) {
760
  $row_string .= '<td class="product-date">&nbsp;</td>';
762
  if ( tinv_get_option( 'product_table', 'colm_stock' ) ) {
763
  $row_string .= '<td class="product-stock">%5$s</td>';
764
  }
765
+ if ( tinv_get_option( 'product_table', 'colm_quantity' ) ) {
766
+ $row_string .= '<td class="product-quantity">&nbsp;</td>';
767
+ }
768
  if ( tinv_get_option( 'product_table', 'add_to_cart' ) ) {
769
  $row_string .= '<td class="product-action">&nbsp;</td>';
770
  }
1806
 
1807
  if ( class_exists( 'WC_Product_Addons' ) ) {
1808
 
 
 
1809
  $product_addons = get_product_addons( $product->get_id() );
1810
 
1811
  if ( $product_addons ) {
1812
 
1813
+ $price = 0;
1814
 
1815
  foreach ( $product_addons as $addon ) {
1816
 
tinv-wishlists-function.php CHANGED
@@ -852,11 +852,10 @@ if ( ! function_exists( 'tinv_wishlistmeta' ) ) {
852
  * @return string
853
  */
854
  function tinv_wishlistmeta( $meta = '', $wl_product, $product ) {
855
- if ( empty( $meta ) ) {
856
- if ( array_key_exists( 'meta', $wl_product ) ) {
857
- $meta = apply_filters( 'tinvwl_wishlist_item_meta_wishlist_output', tinv_wishlist_print_meta( $wl_product['meta'] ), $wl_product, $product );
858
- }
859
  }
 
860
 
861
  return $meta;
862
  }
852
  * @return string
853
  */
854
  function tinv_wishlistmeta( $meta = '', $wl_product, $product ) {
855
+ if ( array_key_exists( 'meta', $wl_product ) ) {
856
+ $wlmeta = apply_filters( 'tinvwl_wishlist_item_meta_wishlist_output', tinv_wishlist_print_meta( $wl_product['meta'] ), $wl_product, $product );
 
 
857
  }
858
+ $meta .= $wlmeta;
859
 
860
  return $meta;
861
  }
views/wizard/finish.php CHANGED
@@ -17,11 +17,11 @@ if ( ! defined( 'ABSPATH' ) ) {
17
  <div class="tinvwl-desc">
18
  <?php printf( esc_html__( 'You have set basic Wishlist settings. If you want to make more in-depth plugin setup you can make it in plugin settings page %s.', 'ti-woocommerce-wishlist' ), sprintf( '<a target="_blank" href="%s">%s</a>', esc_url( self::admin_url( '' ) ), esc_html__( 'WooCommerce Wishlist Plugin Settings', 'ti-woocommerce-wishlist' ) ) ); // WPCS: xss ok. ?>
19
  <br/>
20
- <?php printf( esc_html__( 'Details about WooCommerce Wishlist Plugin options can be found in our %s.', 'ti-woocommerce-wishlist' ), sprintf( '<a target="_blank" href="%s">%s</a>', 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist/?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=wizard_documentation&partner=' . TINVWL_UTM_SOURCE, esc_html__( 'Online Documentation', 'ti-woocommerce-wishlist' ) ) ); // WPCS: xss ok.
21
  ?>
22
  </div>
23
  <a class="tinvwl-btn grey w-icon xl-icon round"
24
- href="<?php echo 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist/?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=wizard_documentation&partner=' . TINVWL_UTM_SOURCE; // WPCS: xss ok.
25
  ?>"><i class="fati fati-graduation-cap"></i><?php esc_html_e( 'Documentation', 'ti-woocommerce-wishlist' ); ?></a>
26
  <a class="tinvwl-btn grey w-icon xl-icon round" href="<?php echo esc_url( self::admin_url( '' ) ); ?>"><i
27
  class="fati fati-wrench"></i><?php esc_html_e( 'Wishlist Settings', 'ti-woocommerce-wishlist' ); ?></a>
17
  <div class="tinvwl-desc">
18
  <?php printf( esc_html__( 'You have set basic Wishlist settings. If you want to make more in-depth plugin setup you can make it in plugin settings page %s.', 'ti-woocommerce-wishlist' ), sprintf( '<a target="_blank" href="%s">%s</a>', esc_url( self::admin_url( '' ) ), esc_html__( 'WooCommerce Wishlist Plugin Settings', 'ti-woocommerce-wishlist' ) ) ); // WPCS: xss ok. ?>
19
  <br/>
20
+ <?php printf( esc_html__( 'Details about WooCommerce Wishlist Plugin options can be found in our %s.', 'ti-woocommerce-wishlist' ), sprintf( '<a target="_blank" href="%s">%s</a>', 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist-free/?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=wizard_documentation&partner=' . TINVWL_UTM_SOURCE, esc_html__( 'Online Documentation', 'ti-woocommerce-wishlist' ) ) ); // WPCS: xss ok.
21
  ?>
22
  </div>
23
  <a class="tinvwl-btn grey w-icon xl-icon round"
24
+ href="<?php echo 'https://templateinvaders.com/documentation/ti-woocommerce-wishlist-free/?utm_source=' . TINVWL_UTM_SOURCE . '&utm_campaign=' . TINVWL_UTM_CAMPAIGN . '&utm_medium=' . TINVWL_UTM_MEDIUM . '&utm_content=wizard_documentation&partner=' . TINVWL_UTM_SOURCE; // WPCS: xss ok.
25
  ?>"><i class="fati fati-graduation-cap"></i><?php esc_html_e( 'Documentation', 'ti-woocommerce-wishlist' ); ?></a>
26
  <a class="tinvwl-btn grey w-icon xl-icon round" href="<?php echo esc_url( self::admin_url( '' ) ); ?>"><i
27
  class="fati fati-wrench"></i><?php esc_html_e( 'Wishlist Settings', 'ti-woocommerce-wishlist' ); ?></a>