Perfect Brands for WooCommerce - Version 1.7.1

Version Description

  • Feature: Extends the [products] shortcode to allow 'brands' attribute
  • Feature: The brands column is sortable now
  • Catalan translation (thanks to Lluisma)
  • Enhancement: Easier select brands page link in breadcrumbs
  • Enhancement: Configure the brand banner and the brand description position independently
  • Dev: New filter 'pwb_taxonomy_rewrite' to change the rewrite slug
  • Dev: New filter 'pwb_taxonomy_with_front' to change default "with_front" value
  • Fix: Fatal error in PHP5.4
Download this release

Release Info

Developer titodevera
Plugin Icon 128x128 Perfect Brands for WooCommerce
Version 1.7.1
Comparing to
See all releases

Code changes from version 1.7.0 to 1.7.1

assets/css/styles-frontend.css CHANGED
@@ -4,10 +4,10 @@
4
  display: table;
5
  clear: both;
6
  }
7
- .pwb-brand-banner-cont.before-loop{
8
  margin-bottom: 1em;
9
  }
10
- .pwb-brand-banner-cont.after-loop{
11
  margin-top: 1em;
12
  }
13
  /* ----------------------- /Global ----------------------- */
4
  display: table;
5
  clear: both;
6
  }
7
+ .pwb-before-loop{
8
  margin-bottom: 1em;
9
  }
10
+ .pwb-after-loop{
11
  margin-top: 1em;
12
  }
13
  /* ----------------------- /Global ----------------------- */
assets/css/styles-frontend.min.css CHANGED
@@ -1 +1 @@
1
- .pwb-clearfix:after{content:"";display:table;clear:both}.pwb-brand-banner-cont.before-loop{margin-bottom:1em}.pwb-brand-banner-cont.after-loop{margin-top:1em}.pwb-carousel .pwb-slick-slide a{display:block}.pwb-carousel .pwb-slick-slide a>img{margin:0 auto}.pwb-carousel .slick-loading .slick-list,.pwb-product-carousel .slick-loading .slick-list{background:#fff url('./ajax-loader.gif') center center no-repeat}.pwb-carousel .pwb-slick-slide,.pwb-product-carousel .pwb-slick-slide{margin:0 10px}.pwb-carousel .slick-prev,.pwb-carousel .slick-next,.pwb-product-carousel .slick-prev,.pwb-product-carousel .slick-next{font-size:0;position:absolute;top:0;bottom:0;display:block;cursor:pointer;font-size:22px;width:30px;overflow:hidden;text-align:center;color:#aeaeae;border:0;outline:0;z-index:999;background:#eee;opacity:0;transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out}.pwb-carousel .slick-prev>span,.pwb-carousel .slick-next>span,.pwb-product-carousel .slick-prev>span,.pwb-product-carousel .slick-next>span{display:inline-block;height:20px;width:20px;padding:10px;position:absolute;top:50%;margin-top:-20px;left:0;right:0}.pwb-carousel .slick-prev:hover,.pwb-carousel .slick-prev:focus,.pwb-carousel .slick-next:hover,.pwb-carousel .slick-next:focus,.pwb-product-carousel .slick-prev:hover,.pwb-product-carousel .slick-prev:focus,.pwb-product-carousel .slick-next:hover,.pwb-product-carousel .slick-next:focus{outline:0}.pwb-carousel .slick-prev,.pwb-product-carousel .slick-prev{left:0}.pwb-carousel .slick-next,.pwb-product-carousel .slick-next{right:0}.pwb-carousel:hover .slick-next,.pwb-carousel:hover .slick-prev,.pwb-product-carousel:hover .slick-next,.pwb-product-carousel:hover .slick-prev{opacity:.8}.pwb-product-carousel .pwb-amount{display:block;width:100%;margin-bottom:12px}.pwb-carousel,.pwb-product-carousel{min-height:30px}.pwb-carousel .pwb-slick-slide,.pwb-product-carousel .pwb-slick-slide{display:none}.pwb-carousel.slick-initialized .pwb-slick-slide,.pwb-product-carousel.slick-initialized .pwb-slick-slide{display:block}.pwb-carousel .slick-list,.pwb-product-carousel .slick-list{opacity:0;position:absolute}.pwb-carousel.slick-initialized,.pwb-product-carousel.slick-initialized{min-height:none}.pwb-carousel.slick-initialized .slick-list,.pwb-product-carousel.slick-initialized .slick-list{opacity:1;position:relative;transition:opacity .2s ease-in}.pwb-carousel.slick-initialized .pwb-carousel-loader,.pwb-product-carousel.slick-initialized .pwb-carousel-loader{display:none!important;opacity:0!important}.pwb-carousel-loader{font-size:10px;margin:50px auto;text-indent:-9999em;width:30px;height:30px;border-radius:50%;background:#525252;background:-moz-linear-gradient(left,#525252 10%,rgba(82,82,82,0) 42%);background:-webkit-linear-gradient(left,#525252 10%,rgba(82,82,82,0) 42%);background:-o-linear-gradient(left,#525252 10%,rgba(82,82,82,0) 42%);background:-ms-linear-gradient(left,#525252 10%,rgba(82,82,82,0) 42%);background:linear-gradient(to right,#525252 10%,rgba(82,82,82,0) 42%);position:relative;-webkit-animation:PWBCarouselLoader 1.4s infinite linear;animation:PWBCarouselLoader 1.4s infinite linear;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}.pwb-carousel-loader:before{width:50%;height:50%;background:#525252;border-radius:100% 0 0 0;position:absolute;top:0;left:0;content:''}.pwb-carousel-loader:after{background:#fff;width:75%;height:75%;border-radius:50%;content:'';margin:auto;position:absolute;top:0;left:0;bottom:0;right:0}@-webkit-keyframes PWBCarouselLoader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes PWBCarouselLoader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.pwb-brands-cols-outer{margin-left:-15px;margin-right:-15px}.pwb-all-brands .pwb-pagination-wrapper{margin-top:20px;padding-top:10px;border-top:1px solid #ededed;text-align:right}.pwb-all-brands .pwb-pagination{display:inline-block;margin-right:10px;background-color:#ededed;color:#333;text-align:center;padding:10px}.pwb-all-brands .pwb-brands-cols-outer:after{content:"";display:table;clear:both}.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{padding:0 15px;width:20%;float:left}.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3>p:first-child{height:25px;overflow:hidden;font-size:14px}.pwb-az-listing-row{margin-bottom:20px}.pwb-az-listing-row-in{margin-left:-5px;margin-right:-5px}.pwb-az-listing-col{padding:5px}.pwb-az-listing-col>a{display:block;text-transform:uppercase;white-space:nowrap;overflow:hidden}.pwb-az-listing-title{border-bottom:1px solid #ddd;font-weight:bold;font-size:115%;text-transform:uppercase}.pwb-az-listing-header{margin-bottom:30px}.pwb-az-listing-header ul{margin:0;padding:0;list-style:none;margin-right:-2px;margin-left:-2px}.pwb-az-listing-header li{display:inline-block;float:left;width:25px;height:25px;margin:2px;line-height:25px;border:1px solid #ddd;text-align:center}.pwb-az-listing-header a{text-transform:uppercase}.pwb-filter-products input[type="checkbox"]{margin-right:10px}.pwb-filter-products li{margin-bottom:5px}.pwb-row:after{content:"";display:table;clear:both}.pwb-columns-2{width:50%}.pwb-columns-3{width:33.33333%}.pwb-columns-4{width:25%}.pwb-columns-5{width:20%}.pwb-columns-6{width:16.66666%}.pwb-columns{float:left}@media screen and (max-width:1000px){.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{width:25%}}@media screen and (max-width:700px){.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{width:50%}.pwb-columns-5,.pwb-columns-6{width:25%}}@media screen and (max-width:480px){.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{width:100%;float:none}.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3>p:first-child{height:auto}.pwb-columns-3,.pwb-columns-4,.pwb-columns-5,.pwb-columns-6{width:50%}}@media(min-width:576px){.pwb-az-listing-col{width:50%;float:left}}@media(min-width:992px){.pwb-az-listing-col{width:25%}}
1
+ .pwb-clearfix:after{content:"";display:table;clear:both}.pwb-before-loop{margin-bottom:1em}.pwb-after-loop{margin-top:1em}.pwb-carousel .pwb-slick-slide a{display:block}.pwb-carousel .pwb-slick-slide a>img{margin:0 auto}.pwb-carousel .slick-loading .slick-list,.pwb-product-carousel .slick-loading .slick-list{background:#fff url('./ajax-loader.gif') center center no-repeat}.pwb-carousel .pwb-slick-slide,.pwb-product-carousel .pwb-slick-slide{margin:0 10px}.pwb-carousel .slick-prev,.pwb-carousel .slick-next,.pwb-product-carousel .slick-prev,.pwb-product-carousel .slick-next{font-size:0;position:absolute;top:0;bottom:0;display:block;cursor:pointer;font-size:22px;width:30px;overflow:hidden;text-align:center;color:#aeaeae;border:0;outline:0;z-index:999;background:#eee;opacity:0;transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out}.pwb-carousel .slick-prev>span,.pwb-carousel .slick-next>span,.pwb-product-carousel .slick-prev>span,.pwb-product-carousel .slick-next>span{display:inline-block;height:20px;width:20px;padding:10px;position:absolute;top:50%;margin-top:-20px;left:0;right:0}.pwb-carousel .slick-prev:hover,.pwb-carousel .slick-prev:focus,.pwb-carousel .slick-next:hover,.pwb-carousel .slick-next:focus,.pwb-product-carousel .slick-prev:hover,.pwb-product-carousel .slick-prev:focus,.pwb-product-carousel .slick-next:hover,.pwb-product-carousel .slick-next:focus{outline:0}.pwb-carousel .slick-prev,.pwb-product-carousel .slick-prev{left:0}.pwb-carousel .slick-next,.pwb-product-carousel .slick-next{right:0}.pwb-carousel:hover .slick-next,.pwb-carousel:hover .slick-prev,.pwb-product-carousel:hover .slick-next,.pwb-product-carousel:hover .slick-prev{opacity:.8}.pwb-product-carousel .pwb-amount{display:block;width:100%;margin-bottom:12px}.pwb-carousel,.pwb-product-carousel{min-height:30px}.pwb-carousel .pwb-slick-slide,.pwb-product-carousel .pwb-slick-slide{display:none}.pwb-carousel.slick-initialized .pwb-slick-slide,.pwb-product-carousel.slick-initialized .pwb-slick-slide{display:block}.pwb-carousel .slick-list,.pwb-product-carousel .slick-list{opacity:0;position:absolute}.pwb-carousel.slick-initialized,.pwb-product-carousel.slick-initialized{min-height:none}.pwb-carousel.slick-initialized .slick-list,.pwb-product-carousel.slick-initialized .slick-list{opacity:1;position:relative;transition:opacity .2s ease-in}.pwb-carousel.slick-initialized .pwb-carousel-loader,.pwb-product-carousel.slick-initialized .pwb-carousel-loader{display:none!important;opacity:0!important}.pwb-carousel-loader{font-size:10px;margin:50px auto;text-indent:-9999em;width:30px;height:30px;border-radius:50%;background:#525252;background:-moz-linear-gradient(left,#525252 10%,rgba(82,82,82,0) 42%);background:-webkit-linear-gradient(left,#525252 10%,rgba(82,82,82,0) 42%);background:-o-linear-gradient(left,#525252 10%,rgba(82,82,82,0) 42%);background:-ms-linear-gradient(left,#525252 10%,rgba(82,82,82,0) 42%);background:linear-gradient(to right,#525252 10%,rgba(82,82,82,0) 42%);position:relative;-webkit-animation:PWBCarouselLoader 1.4s infinite linear;animation:PWBCarouselLoader 1.4s infinite linear;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}.pwb-carousel-loader:before{width:50%;height:50%;background:#525252;border-radius:100% 0 0 0;position:absolute;top:0;left:0;content:''}.pwb-carousel-loader:after{background:#fff;width:75%;height:75%;border-radius:50%;content:'';margin:auto;position:absolute;top:0;left:0;bottom:0;right:0}@-webkit-keyframes PWBCarouselLoader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes PWBCarouselLoader{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.pwb-brands-cols-outer{margin-left:-15px;margin-right:-15px}.pwb-all-brands .pwb-pagination-wrapper{margin-top:20px;padding-top:10px;border-top:1px solid #ededed;text-align:right}.pwb-all-brands .pwb-pagination{display:inline-block;margin-right:10px;background-color:#ededed;color:#333;text-align:center;padding:10px}.pwb-all-brands .pwb-brands-cols-outer:after{content:"";display:table;clear:both}.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{padding:0 15px;width:20%;float:left}.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3>p:first-child{height:25px;overflow:hidden;font-size:14px}.pwb-az-listing-row{margin-bottom:20px}.pwb-az-listing-row-in{margin-left:-5px;margin-right:-5px}.pwb-az-listing-col{padding:5px}.pwb-az-listing-col>a{display:block;text-transform:uppercase;white-space:nowrap;overflow:hidden}.pwb-az-listing-title{border-bottom:1px solid #ddd;font-weight:bold;font-size:115%;text-transform:uppercase}.pwb-az-listing-header{margin-bottom:30px}.pwb-az-listing-header ul{margin:0;padding:0;list-style:none;margin-right:-2px;margin-left:-2px}.pwb-az-listing-header li{display:inline-block;float:left;width:25px;height:25px;margin:2px;line-height:25px;border:1px solid #ddd;text-align:center}.pwb-az-listing-header a{text-transform:uppercase}.pwb-filter-products input[type="checkbox"]{margin-right:10px}.pwb-filter-products li{margin-bottom:5px}.pwb-row:after{content:"";display:table;clear:both}.pwb-columns-2{width:50%}.pwb-columns-3{width:33.33333%}.pwb-columns-4{width:25%}.pwb-columns-5{width:20%}.pwb-columns-6{width:16.66666%}.pwb-columns{float:left}@media screen and (max-width:1000px){.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{width:25%}}@media screen and (max-width:700px){.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{width:50%}.pwb-columns-5,.pwb-columns-6{width:25%}}@media screen and (max-width:480px){.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{width:100%;float:none}.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3>p:first-child{height:auto}.pwb-columns-3,.pwb-columns-4,.pwb-columns-5,.pwb-columns-6{width:50%}}@media(min-width:576px){.pwb-az-listing-col{width:50%;float:left}}@media(min-width:992px){.pwb-az-listing-col{width:25%}}
assets/js/functions-admin.js CHANGED
@@ -63,7 +63,7 @@ jQuery( function ( $ ) {
63
  $('.pwb_brand_image_selected').remove();
64
  }
65
  });
66
- }
67
 
68
  function add_delete_link( $imageSelectorScope ){
69
 
@@ -126,6 +126,10 @@ jQuery( function ( $ ) {
126
 
127
  /* ····························· Settings tab ····························· */
128
 
 
 
 
 
129
  // migrate brands
130
  $('#wc_pwb_admin_tab_tools_migrate').on( 'change', function(){
131
 
63
  $('.pwb_brand_image_selected').remove();
64
  }
65
  });
66
+ }
67
 
68
  function add_delete_link( $imageSelectorScope ){
69
 
126
 
127
  /* ····························· Settings tab ····························· */
128
 
129
+ if( $('.pwb-admin-selectwoo').length ){
130
+ $('.pwb-admin-selectwoo').selectWoo();
131
+ }
132
+
133
  // migrate brands
134
  $('#wc_pwb_admin_tab_tools_migrate').on( 'change', function(){
135
 
assets/js/functions-admin.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(d){var b=null;function a(h,g){var i=g.parent();b=wp.media({frame:"post",state:"insert",multiple:false});b.on("insert",function(){var l=b.state().get("selection").first().toJSON();var m=l.id;var n=l.url;var k='<img src="'+n+'" width="90" height="90">';var j="";switch(h.target.id){case"pwb_brand_image_select":j=".taxonomy-pwb-brand #pwb_brand_image";break;case"pwb_brand_banner_select":j=".taxonomy-pwb-brand #pwb_brand_banner";break}d(j).val(m);d(j+"_result").remove();if(d(".pwb_brand_image_selected",i).length){d(".pwb_brand_image_selected span",i).html(k)}else{i.append('<div class="pwb_brand_image_selected"><span>'+k+"</span></div>")}c(i)});b.open()}d(".taxonomy-pwb-brand #pwb_brand_image_select, .taxonomy-pwb-brand #pwb_brand_banner_select").on("click",function(g){a(g,d(this))});d(".taxonomy-pwb-brand #pwb_brand_image_select, .taxonomy-pwb-brand #pwb_brand_banner_select").each(function(){c(d(this).parent())});if(d("body").hasClass("edit-tags-php")&&d("body").hasClass("taxonomy-pwb-brand")){jQuery(document).ajaxSuccess(function(h,i,g){if(typeof g!="undefined"&&g.data&&~g.data.indexOf("action=add-tag")&&~g.data.indexOf("taxonomy=pwb-brand")){d("#pwb_brand_image").val("");d("#pwb_brand_banner").val("");d(".pwb_brand_image_selected").remove()}})}function c(g){d(".pwb_brand_image_selected span",g).append('<a href="#" class="pwb_brand_image_selected_remove">X</a>');d(".pwb_brand_image_selected_remove",g).on("click",function(h){h.preventDefault();d(this).closest(".pwb_brand_image_selected").remove();d("#pwb_brand_image",g).val("");d("#pwb_brand_banner",g).val("")})}d(".taxonomy-pwb-brand table .column-featured > span").not("pwb-blocked").on("click",function(h){h.preventDefault();var i=d(this);i.addClass("pwb-blocked");if(i.hasClass("dashicons-star-filled")){i.removeClass("dashicons-star-filled");i.addClass("dashicons-star-empty")}else{i.removeClass("dashicons-star-empty");i.addClass("dashicons-star-filled")}var g={action:"pwb_admin_set_featured_brand",brand:i.data("brand-id")};d.post(ajax_object.ajax_url,g,function(j){i.removeClass("pwb-blocked");if(j.success){var k=d(".taxonomy-pwb-brand .pwb-featured-count > span");if(j.data.direction=="up"){k.html(parseInt(k.text())+1)}else{k.html(parseInt(k.text())-1)}}else{alert(j.data.error_msg)}})});d(".taxonomy-pwb-brand #pwb-first-featured-brands").on("change",function(h){h.preventDefault();d("#screen-options-apply").replaceWith('<img src="'+ajax_object.site_url+'/wp-admin/images/loading.gif">');var g={action:"pwb_admin_save_screen_settings",new_val:d(this).is(":checked")};d.post(ajax_object.ajax_url,g,function(i){location.reload()})});d(".pwb-edit-brands-bottom > span").on("click",function(g){g.preventDefault();d(".taxonomy-pwb-brand #col-left").toggleClass("pwb-force-full-width");d(".taxonomy-pwb-brand #col-right").toggleClass("pwb-force-full-width")});d("#wc_pwb_admin_tab_tools_migrate").on("change",function(){if(d(this).val()!="-"){if(confirm(ajax_object.translations.migrate_notice)){d("html").append('<div class="pwb-modal"><div class="pwb-modal-inner"></div></div>');d(".pwb-modal-inner").html("<p>"+ajax_object.translations.migrating+"</p>");var g={action:"pwb_admin_migrate_brands",from:d(this).val()};d.post(ajax_object.ajax_url,g,function(h){setTimeout(function(){location.href=ajax_object.brands_url},1000)})}else{}}d(this).val("-")});d("#wc_pwb_admin_tab_tools_dummy_data").on("change",function(){if(d(this).val()!="-"){if(confirm(ajax_object.translations.dummy_data_notice)){d("html").append('<div class="pwb-modal"><div class="pwb-modal-inner"></div></div>');d(".pwb-modal-inner").html("<p>"+ajax_object.translations.dummy_data+"</p>");var g={action:"pwb_admin_dummy_data",from:d(this).val()};d.post(ajax_object.ajax_url,g,function(h){setTimeout(function(){location.href=ajax_object.brands_url},1000)})}else{}}d(this).val("-")});var f=d("#wc_pwb_admin_tab_tools_system_status").siblings("p");f.addClass("button wc_pwb_admin_tab_status_btn");d(".wc_pwb_admin_tab_status_btn").on("click",function(h){h.preventDefault();if(!d("#wc_pwb_admin_status_result").length){$systemStatusTextarea=d("#wc_pwb_admin_tab_tools_system_status");d('<pre id="wc_pwb_admin_status_result"></pre>').insertAfter($systemStatusTextarea);jQuery("#wc_pwb_admin_status_result").click(function(l){l.preventDefault();var j=d(this)[0];if(d.browser.msie){var i=document.body.createTextRange();i.moveToElementText(j);i.select()}else{if(d.browser.mozilla||d.browser.opera){var k=window.getSelection();var i=document.createRange();i.selectNodeContents(j);k.removeAllRanges();k.addRange(i)}else{if(d.browser.safari){var k=window.getSelection();k.setBaseAndExtent(j,0,j,1)}}}})}d("#wc_pwb_admin_status_result").html('<img src="'+ajax_object.site_url+'/wp-admin/images/spinner.gif" alt="Loading" height="20" width="20">');d("#wc_pwb_admin_status_result").show();var g={action:"pwb_system_status"};jQuery.post(ajaxurl,g,function(i){d("#wc_pwb_admin_status_result").html(i);d("#wc_pwb_admin_status_result").trigger("click")})});d(document).on("click",".pwb-notice-dismissible .notice-dismiss",function(i){i.preventDefault();var g=d(this).closest(".pwb-notice-dismissible").data("notice");var h={action:"dismiss_pwb_notice",notice_name:g};jQuery.post(ajaxurl,h,function(j){})});e();jQuery(document).bind("widget-added",function(h,g){e(g)});jQuery(document).on("widget-updated",function(h,g){e(g)});function e(g){$currentWidget=d(".pwb-select-display-as");if(g!=undefined){$currentWidget=d(".pwb-select-display-as",g)}$currentWidget.on("change",function(){if(d(this).val()=="brand_logo"){d(this).parent().siblings(".pwb-display-as-logo").addClass("show")}else{d(this).parent().siblings(".pwb-display-as-logo").removeClass("show")}})}d("button.pwb-brands-export").on("click",function(i){i.preventDefault();var h=d(this);h.addClass("pwb-loading-overlay");h.prop("disabled",true);var g={action:"pwb_brands_export"};d.post(ajax_object.ajax_url,g,function(j){if(j.success){h.removeClass("pwb-loading-overlay");h.prop("disabled",false);d("#pwb-download-export-file").remove();var k=document.createElement("a");k.download="brands.json";k.id="pwb-download-export-file";k.href=j.data.export_file_url;d("body").append(k);k.click()}})});d("button.pwb-brands-import").on("click",function(g){g.preventDefault();d("input.pwb-brands-import-file").trigger("click")});d("input.pwb-brands-import-file").on("change",function(j){j.preventDefault();var i=d("button.pwb-brands-import");i.addClass("pwb-loading-overlay");i.prop("disabled",true);var h=d(this)[0].files[0];var g=new FormData();g.append("action","pwb_brands_import");g.append("file",h);d.ajax({url:ajax_object.ajax_url,type:"post",cache:false,dataType:"json",contentType:false,processData:false,data:g,success:function(k){if(k.success){i.removeClass("pwb-loading-overlay");location.reload()}else{alert("Importer error")}}})})});
1
+ jQuery(function(d){var b=null;function a(h,g){var i=g.parent();b=wp.media({frame:"post",state:"insert",multiple:false});b.on("insert",function(){var l=b.state().get("selection").first().toJSON();var m=l.id;var n=l.url;var k='<img src="'+n+'" width="90" height="90">';var j="";switch(h.target.id){case"pwb_brand_image_select":j=".taxonomy-pwb-brand #pwb_brand_image";break;case"pwb_brand_banner_select":j=".taxonomy-pwb-brand #pwb_brand_banner";break}d(j).val(m);d(j+"_result").remove();if(d(".pwb_brand_image_selected",i).length){d(".pwb_brand_image_selected span",i).html(k)}else{i.append('<div class="pwb_brand_image_selected"><span>'+k+"</span></div>")}c(i)});b.open()}d(".taxonomy-pwb-brand #pwb_brand_image_select, .taxonomy-pwb-brand #pwb_brand_banner_select").on("click",function(g){a(g,d(this))});d(".taxonomy-pwb-brand #pwb_brand_image_select, .taxonomy-pwb-brand #pwb_brand_banner_select").each(function(){c(d(this).parent())});if(d("body").hasClass("edit-tags-php")&&d("body").hasClass("taxonomy-pwb-brand")){jQuery(document).ajaxSuccess(function(h,i,g){if(typeof g!="undefined"&&g.data&&~g.data.indexOf("action=add-tag")&&~g.data.indexOf("taxonomy=pwb-brand")){d("#pwb_brand_image").val("");d("#pwb_brand_banner").val("");d(".pwb_brand_image_selected").remove()}})}function c(g){d(".pwb_brand_image_selected span",g).append('<a href="#" class="pwb_brand_image_selected_remove">X</a>');d(".pwb_brand_image_selected_remove",g).on("click",function(h){h.preventDefault();d(this).closest(".pwb_brand_image_selected").remove();d("#pwb_brand_image",g).val("");d("#pwb_brand_banner",g).val("")})}d(".taxonomy-pwb-brand table .column-featured > span").not("pwb-blocked").on("click",function(h){h.preventDefault();var i=d(this);i.addClass("pwb-blocked");if(i.hasClass("dashicons-star-filled")){i.removeClass("dashicons-star-filled");i.addClass("dashicons-star-empty")}else{i.removeClass("dashicons-star-empty");i.addClass("dashicons-star-filled")}var g={action:"pwb_admin_set_featured_brand",brand:i.data("brand-id")};d.post(ajax_object.ajax_url,g,function(j){i.removeClass("pwb-blocked");if(j.success){var k=d(".taxonomy-pwb-brand .pwb-featured-count > span");if(j.data.direction=="up"){k.html(parseInt(k.text())+1)}else{k.html(parseInt(k.text())-1)}}else{alert(j.data.error_msg)}})});d(".taxonomy-pwb-brand #pwb-first-featured-brands").on("change",function(h){h.preventDefault();d("#screen-options-apply").replaceWith('<img src="'+ajax_object.site_url+'/wp-admin/images/loading.gif">');var g={action:"pwb_admin_save_screen_settings",new_val:d(this).is(":checked")};d.post(ajax_object.ajax_url,g,function(i){location.reload()})});d(".pwb-edit-brands-bottom > span").on("click",function(g){g.preventDefault();d(".taxonomy-pwb-brand #col-left").toggleClass("pwb-force-full-width");d(".taxonomy-pwb-brand #col-right").toggleClass("pwb-force-full-width")});if(d(".pwb-admin-selectwoo").length){d(".pwb-admin-selectwoo").selectWoo()}d("#wc_pwb_admin_tab_tools_migrate").on("change",function(){if(d(this).val()!="-"){if(confirm(ajax_object.translations.migrate_notice)){d("html").append('<div class="pwb-modal"><div class="pwb-modal-inner"></div></div>');d(".pwb-modal-inner").html("<p>"+ajax_object.translations.migrating+"</p>");var g={action:"pwb_admin_migrate_brands",from:d(this).val()};d.post(ajax_object.ajax_url,g,function(h){setTimeout(function(){location.href=ajax_object.brands_url},1000)})}else{}}d(this).val("-")});d("#wc_pwb_admin_tab_tools_dummy_data").on("change",function(){if(d(this).val()!="-"){if(confirm(ajax_object.translations.dummy_data_notice)){d("html").append('<div class="pwb-modal"><div class="pwb-modal-inner"></div></div>');d(".pwb-modal-inner").html("<p>"+ajax_object.translations.dummy_data+"</p>");var g={action:"pwb_admin_dummy_data",from:d(this).val()};d.post(ajax_object.ajax_url,g,function(h){setTimeout(function(){location.href=ajax_object.brands_url},1000)})}else{}}d(this).val("-")});var f=d("#wc_pwb_admin_tab_tools_system_status").siblings("p");f.addClass("button wc_pwb_admin_tab_status_btn");d(".wc_pwb_admin_tab_status_btn").on("click",function(h){h.preventDefault();if(!d("#wc_pwb_admin_status_result").length){$systemStatusTextarea=d("#wc_pwb_admin_tab_tools_system_status");d('<pre id="wc_pwb_admin_status_result"></pre>').insertAfter($systemStatusTextarea);jQuery("#wc_pwb_admin_status_result").click(function(l){l.preventDefault();var j=d(this)[0];if(d.browser.msie){var i=document.body.createTextRange();i.moveToElementText(j);i.select()}else{if(d.browser.mozilla||d.browser.opera){var k=window.getSelection();var i=document.createRange();i.selectNodeContents(j);k.removeAllRanges();k.addRange(i)}else{if(d.browser.safari){var k=window.getSelection();k.setBaseAndExtent(j,0,j,1)}}}})}d("#wc_pwb_admin_status_result").html('<img src="'+ajax_object.site_url+'/wp-admin/images/spinner.gif" alt="Loading" height="20" width="20">');d("#wc_pwb_admin_status_result").show();var g={action:"pwb_system_status"};jQuery.post(ajaxurl,g,function(i){d("#wc_pwb_admin_status_result").html(i);d("#wc_pwb_admin_status_result").trigger("click")})});d(document).on("click",".pwb-notice-dismissible .notice-dismiss",function(i){i.preventDefault();var g=d(this).closest(".pwb-notice-dismissible").data("notice");var h={action:"dismiss_pwb_notice",notice_name:g};jQuery.post(ajaxurl,h,function(j){})});e();jQuery(document).bind("widget-added",function(h,g){e(g)});jQuery(document).on("widget-updated",function(h,g){e(g)});function e(g){$currentWidget=d(".pwb-select-display-as");if(g!=undefined){$currentWidget=d(".pwb-select-display-as",g)}$currentWidget.on("change",function(){if(d(this).val()=="brand_logo"){d(this).parent().siblings(".pwb-display-as-logo").addClass("show")}else{d(this).parent().siblings(".pwb-display-as-logo").removeClass("show")}})}d("button.pwb-brands-export").on("click",function(i){i.preventDefault();var h=d(this);h.addClass("pwb-loading-overlay");h.prop("disabled",true);var g={action:"pwb_brands_export"};d.post(ajax_object.ajax_url,g,function(j){if(j.success){h.removeClass("pwb-loading-overlay");h.prop("disabled",false);d("#pwb-download-export-file").remove();var k=document.createElement("a");k.download="brands.json";k.id="pwb-download-export-file";k.href=j.data.export_file_url;d("body").append(k);k.click()}})});d("button.pwb-brands-import").on("click",function(g){g.preventDefault();d("input.pwb-brands-import-file").trigger("click")});d("input.pwb-brands-import-file").on("change",function(j){j.preventDefault();var i=d("button.pwb-brands-import");i.addClass("pwb-loading-overlay");i.prop("disabled",true);var h=d(this)[0].files[0];var g=new FormData();g.append("action","pwb_brands_import");g.append("file",h);d.ajax({url:ajax_object.ajax_url,type:"post",cache:false,dataType:"json",contentType:false,processData:false,data:g,success:function(k){if(k.success){i.removeClass("pwb-loading-overlay");location.reload()}else{alert("Importer error")}}})})});
classes/admin/class-pwb-admin-tab.php CHANGED
@@ -65,6 +65,10 @@
65
  foreach( $available_image_sizes as $image_size ) $available_image_sizes_adapted[$image_size] = $image_size;
66
  $available_image_sizes_adapted['full'] = 'full';
67
 
 
 
 
 
68
  $settings = array(
69
  'section_title' => array(
70
  'name' => __( 'Brands settings', 'perfect-woocommerce-brands' ),
@@ -93,6 +97,19 @@
93
  'no' => __( 'No, hide description', 'perfect-woocommerce-brands' )
94
  )
95
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  'brand_single_product_tab' => array(
97
  'name' => __( 'Single product tab', 'perfect-woocommerce-brands' ),
98
  'type' => 'checkbox',
@@ -150,11 +167,12 @@
150
  )
151
  ),
152
  'brands_page_id' => array(
153
- 'name' => __( 'Brands page id', 'perfect-woocommerce-brands' ),
154
- 'type' => 'text',
155
- 'class' => 'pwb-admin-tab-field',
156
- 'desc' => __( 'For linking breadcrumbs', 'perfect-woocommerce-brands' ),
157
- 'id' => 'wc_pwb_admin_tab_brands_page_id'
 
158
  ),
159
  'section_end' => array(
160
  'type' => 'sectionend',
65
  foreach( $available_image_sizes as $image_size ) $available_image_sizes_adapted[$image_size] = $image_size;
66
  $available_image_sizes_adapted['full'] = 'full';
67
 
68
+ $pages_select_adapted = array( '-' => '-' );
69
+ $pages_select = get_pages();
70
+ foreach( $pages_select as $page ) $pages_select_adapted[$page->ID] = $page->post_title;
71
+
72
  $settings = array(
73
  'section_title' => array(
74
  'name' => __( 'Brands settings', 'perfect-woocommerce-brands' ),
97
  'no' => __( 'No, hide description', 'perfect-woocommerce-brands' )
98
  )
99
  ),
100
+ 'brand_banner' => array(
101
+ 'name' => __( 'Show brand banner', 'perfect-woocommerce-brands' ),
102
+ 'type' => 'select',
103
+ 'class' => 'pwb-admin-tab-field',
104
+ 'default' => 'yes',
105
+ 'desc' => __( 'Show brand banner (if is set) on brand archive page', 'perfect-woocommerce-brands' ),
106
+ 'id' => 'wc_pwb_admin_tab_brand_banner',
107
+ 'options' => array(
108
+ 'yes' => __( 'Yes, before product loop', 'perfect-woocommerce-brands' ),
109
+ 'yes_after_loop' => __( 'Yes, after product loop', 'perfect-woocommerce-brands' ),
110
+ 'no' => __( 'No, hide banner', 'perfect-woocommerce-brands' )
111
+ )
112
+ ),
113
  'brand_single_product_tab' => array(
114
  'name' => __( 'Single product tab', 'perfect-woocommerce-brands' ),
115
  'type' => 'checkbox',
167
  )
168
  ),
169
  'brands_page_id' => array(
170
+ 'name' => __( 'Brands page', 'perfect-woocommerce-brands' ),
171
+ 'type' => 'select',
172
+ 'class' => 'pwb-admin-tab-field pwb-admin-selectwoo',
173
+ 'desc' => '<br>'.__( 'For linking breadcrumbs', 'perfect-woocommerce-brands' ),
174
+ 'id' => 'wc_pwb_admin_tab_brands_page_id',
175
+ 'options' => $pages_select_adapted
176
  ),
177
  'section_end' => array(
178
  'type' => 'sectionend',
classes/class-perfect-woocommerce-brands.php CHANGED
@@ -37,6 +37,77 @@ class Perfect_Woocommerce_Brands{
37
  add_action( 'woocommerce_product_duplicate', array( $this, 'product_duplicate_save' ), 10, 2 );
38
 
39
  add_filter( 'woocommerce_get_breadcrumb', array( $this, 'breadcrumbs' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  }
41
 
42
  public function review_notice(){
@@ -250,11 +321,32 @@ class Perfect_Woocommerce_Brands{
250
 
251
  if( is_tax('pwb-brand') ){
252
 
253
- $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
254
- if( !$show_desc || $show_desc == 'yes' ){
255
- add_action( 'woocommerce_archive_description', array( $this, 'archive_page_banner' ), 15);
256
- }elseif( $show_desc == 'yes_after_loop' ){
257
- add_action( 'woocommerce_after_main_content', array( $this, 'archive_page_banner' ), 9);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  }
259
 
260
  }
@@ -640,9 +732,10 @@ class Perfect_Woocommerce_Brands{
640
  'public' => true,
641
  'show_admin_column' => true,
642
  'rewrite' => array(
643
- 'slug' => $new_slug,
644
- 'hierarchical' => true,
645
- 'ep_mask' => EP_PERMALINK
 
646
  )
647
  );
648
 
@@ -708,39 +801,51 @@ class Perfect_Woocommerce_Brands{
708
 
709
  }
710
 
711
- public function archive_page_banner(){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
712
  $queried_object = get_queried_object();
713
 
714
  $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
715
- $show_desc_class = ( !$show_desc || $show_desc == 'yes' ) ? 'before-loop' : 'after-loop';
716
 
717
  $brand_banner = get_term_meta( $queried_object->term_id, 'pwb_brand_banner', true );
718
  $brand_banner_link = get_term_meta( $queried_object->term_id, 'pwb_brand_banner_link', true );
719
- $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
720
 
721
  if( $brand_banner!='' || $queried_object->description != '' && $show_desc !== 'no' ){
722
  echo '<div class="pwb-brand-banner-cont '.$show_desc_class.'">';
723
- }
724
-
725
- //pwb-brand archive
726
- if( $brand_banner!='' ){
727
- echo '<div class="pwb-brand-banner pwb-clearfix">';
728
- if($brand_banner_link!=''){
729
- echo '<a href="'.site_url($brand_banner_link).'">'.wp_get_attachment_image ( $brand_banner, 'full', false ).'</a>';
730
- }else{
731
- echo wp_get_attachment_image ( $brand_banner, 'full', false );
732
- }
733
- echo '</div>';
734
- }
735
-
736
- //show brand description
737
- if( $queried_object->description != '' && $show_desc !== 'no' ){
738
- echo '<div class="pwb-brand-description">';
739
- echo do_shortcode( wpautop( $queried_object->description ) );
740
- echo '</div>';
741
- }
742
-
743
- if( $brand_banner!='' || $queried_object->description != '' && $show_desc !== 'no' ){
744
  echo '</div>';
745
  }
746
 
@@ -762,7 +867,7 @@ class Perfect_Woocommerce_Brands{
762
  public function breadcrumbs( $crumbs ) {
763
  if( is_tax('pwb-brand') ){
764
  $brands_page_id = get_option('wc_pwb_admin_tab_brands_page_id');
765
- if( !empty( $brands_page_id ) && isset( $crumbs[count($crumbs)-2][1] ) ){
766
  $crumbs[count($crumbs)-2][1] = get_page_link( $brands_page_id );
767
  }
768
  }
37
  add_action( 'woocommerce_product_duplicate', array( $this, 'product_duplicate_save' ), 10, 2 );
38
 
39
  add_filter( 'woocommerce_get_breadcrumb', array( $this, 'breadcrumbs' ) );
40
+
41
+ add_filter( 'shortcode_atts_products', array( $this, 'extend_products_shortcode_atts' ), 10, 4 );
42
+ add_filter( 'woocommerce_shortcode_products_query', array( $this, 'extend_products_shortcode' ), 10, 3 );
43
+
44
+ add_filter( 'manage_edit-product_sortable_columns', array( $this, 'brands_column_sortable' ), 90 );
45
+ add_action( 'posts_clauses', array( $this, 'brands_column_sortable_posts' ), 10, 2 );
46
+ }
47
+
48
+ public function brands_column_sortable_posts( $clauses, $wp_query ) {
49
+ global $wpdb;
50
+
51
+ if ( isset( $wp_query->query['orderby'] ) && 'taxonomy-pwb-brand' == $wp_query->query['orderby'] ) {
52
+
53
+ $clauses['join'] .= "
54
+ LEFT OUTER JOIN {$wpdb->term_relationships} ON {$wpdb->posts}.ID={$wpdb->term_relationships}.object_id
55
+ LEFT OUTER JOIN {$wpdb->term_taxonomy} USING (term_taxonomy_id)
56
+ LEFT OUTER JOIN {$wpdb->terms} USING (term_id)";
57
+
58
+ $clauses['where'] .= " AND (taxonomy = 'pwb-brand' OR taxonomy IS NULL)";
59
+ $clauses['groupby'] = "object_id";
60
+ $clauses['orderby'] = "GROUP_CONCAT({$wpdb->terms}.name ORDER BY name ASC) ";
61
+ $clauses['orderby'] .= ( 'ASC' == strtoupper( $wp_query->get('order') ) ) ? 'ASC' : 'DESC';
62
+ }
63
+
64
+ return $clauses;
65
+ }
66
+
67
+ public function brands_column_sortable( $columns ){
68
+ $columns['taxonomy-pwb-brand'] = 'taxonomy-pwb-brand';
69
+ return $columns;
70
+ }
71
+
72
+ public function extend_products_shortcode_atts( $out, $pairs, $atts, $shortcode ){
73
+ if( !empty( $atts['brands'] ) ) $out['brands'] = explode( ',', $atts['brands'] );
74
+ return $out;
75
+ }
76
+
77
+ public function extend_products_shortcode( $query_args, $atts, $loop_name ){
78
+
79
+ if( !empty( $atts['brands'] ) ){
80
+ global $wpdb;
81
+
82
+ $terms = $atts['brands'];
83
+ $terms_count = count( $atts['brands'] );
84
+ $terms_adapted = '';
85
+
86
+ $terms_i = 0;
87
+ foreach( $terms as $brand ){
88
+ $terms_adapted .= '"'.$brand.'"';
89
+ $terms_i++;
90
+ if( $terms_i < $terms_count ) $terms_adapted .= ',';
91
+ }
92
+
93
+ $ids = $wpdb->get_col( "
94
+ SELECT DISTINCT tr.object_id
95
+ FROM {$wpdb->prefix}term_relationships as tr
96
+ INNER JOIN {$wpdb->prefix}term_taxonomy as tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
97
+ INNER JOIN {$wpdb->prefix}terms as t ON tt.term_id = t.term_id
98
+ WHERE tt.taxonomy LIKE 'pwb_brand' AND t.slug IN ($terms_adapted)
99
+ " );
100
+
101
+ if ( ! empty( $ids ) ) {
102
+ if ( 1 === count( $ids ) ) {
103
+ $query_args['p'] = $ids[0];
104
+ } else {
105
+ $query_args['post__in'] = $ids;
106
+ }
107
+ }
108
+ }
109
+
110
+ return $query_args;
111
  }
112
 
113
  public function review_notice(){
321
 
322
  if( is_tax('pwb-brand') ){
323
 
324
+ $show_banner = get_option('wc_pwb_admin_tab_brand_banner');
325
+ $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
326
+
327
+ if( (!$show_banner || $show_banner == 'yes') && (!$show_desc || $show_desc == 'yes') ){
328
+ //show banner and description before loop
329
+ add_action( 'woocommerce_archive_description', array( $this, 'print_brand_banner_and_desc' ), 15);
330
+
331
+ }elseif( $show_banner == 'yes_after_loop' && $show_desc == 'yes_after_loop' ){
332
+ //show banner and description after loop
333
+ add_action( 'woocommerce_after_main_content', array( $this, 'print_brand_banner_and_desc' ), 9);
334
+
335
+ }else{
336
+ //show banner and description independently
337
+
338
+ if( !$show_banner || $show_banner == 'yes' ){
339
+ add_action( 'woocommerce_archive_description', array( $this, 'print_brand_banner' ), 15);
340
+ }elseif( $show_banner == 'yes_after_loop' ){
341
+ add_action( 'woocommerce_after_main_content', array( $this, 'print_brand_banner' ), 9);
342
+ }
343
+
344
+ if( !$show_desc || $show_desc == 'yes' ){
345
+ add_action( 'woocommerce_archive_description', array( $this, 'print_brand_desc' ), 15);
346
+ }elseif( $show_desc == 'yes_after_loop' ){
347
+ add_action( 'woocommerce_after_main_content', array( $this, 'print_brand_desc' ), 9);
348
+ }
349
+
350
  }
351
 
352
  }
732
  'public' => true,
733
  'show_admin_column' => true,
734
  'rewrite' => array(
735
+ 'slug' => apply_filters( 'pwb_taxonomy_rewrite', $new_slug ),
736
+ 'hierarchical'=> true,
737
+ 'with_front' => apply_filters( 'pwb_taxonomy_with_front', true ),
738
+ 'ep_mask' => EP_PERMALINK
739
  )
740
  );
741
 
801
 
802
  }
803
 
804
+ public function print_brand_banner(){
805
+ $queried_object = get_queried_object();
806
+ $brand_banner = get_term_meta( $queried_object->term_id, 'pwb_brand_banner', true );
807
+ $brand_banner_link = get_term_meta( $queried_object->term_id, 'pwb_brand_banner_link', true );
808
+ $show_banner = get_option('wc_pwb_admin_tab_brand_banner');
809
+ $show_banner = get_option('wc_pwb_admin_tab_brand_banner');
810
+ $show_banner_class = ( !$show_banner || $show_banner == 'yes' ) ? 'pwb-before-loop' : 'pwb-after-loop';
811
+
812
+ if( $brand_banner!='' ){
813
+ echo '<div class="pwb-brand-banner pwb-clearfix '.$show_banner_class.'">';
814
+ if( $brand_banner_link!='' ){
815
+ echo '<a href="'.site_url($brand_banner_link).'">'.wp_get_attachment_image ( $brand_banner, 'full', false ).'</a>';
816
+ }else{
817
+ echo wp_get_attachment_image ( $brand_banner, 'full', false );
818
+ }
819
+ echo '</div>';
820
+ }
821
+ }
822
+
823
+ public function print_brand_desc(){
824
+ $queried_object = get_queried_object();
825
+ $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
826
+ $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
827
+ $show_desc_class = ( !$show_desc || $show_desc == 'yes' ) ? 'pwb-before-loop' : 'pwb-after-loop';
828
+
829
+ if( $queried_object->description != '' && $show_desc !== 'no' ){
830
+ echo '<div class="pwb-brand-description '.$show_desc_class.'">';
831
+ echo do_shortcode( wpautop( $queried_object->description ) );
832
+ echo '</div>';
833
+ }
834
+ }
835
+
836
+ public function print_brand_banner_and_desc(){
837
  $queried_object = get_queried_object();
838
 
839
  $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
840
+ $show_desc_class = ( !$show_desc || $show_desc == 'yes' ) ? 'pwb-before-loop' : 'pwb-after-loop';
841
 
842
  $brand_banner = get_term_meta( $queried_object->term_id, 'pwb_brand_banner', true );
843
  $brand_banner_link = get_term_meta( $queried_object->term_id, 'pwb_brand_banner_link', true );
 
844
 
845
  if( $brand_banner!='' || $queried_object->description != '' && $show_desc !== 'no' ){
846
  echo '<div class="pwb-brand-banner-cont '.$show_desc_class.'">';
847
+ $this->print_brand_banner();
848
+ $this->print_brand_desc();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
849
  echo '</div>';
850
  }
851
 
867
  public function breadcrumbs( $crumbs ) {
868
  if( is_tax('pwb-brand') ){
869
  $brands_page_id = get_option('wc_pwb_admin_tab_brands_page_id');
870
+ if( !empty( $brands_page_id ) && $brands_page_id != '-' && isset( $crumbs[count($crumbs)-2][1] ) ){
871
  $crumbs[count($crumbs)-2][1] = get_page_link( $brands_page_id );
872
  }
873
  }
classes/shortcodes/class-pwb-az-listing.php CHANGED
@@ -49,7 +49,8 @@ class PWB_AZ_Listing_Shortcode{
49
  <div class="pwb-az-listing-row-in">
50
  <?php
51
  foreach( $brand_group as $brand ):
52
- if( !empty( self::has_products( $brand->term_id ) ) ):
 
53
  ?>
54
  <div class="pwb-az-listing-col">
55
  <a href="<?php echo get_term_link($brand->term_id);?>"><?php echo $brand->name;?></a>
49
  <div class="pwb-az-listing-row-in">
50
  <?php
51
  foreach( $brand_group as $brand ):
52
+ $has_products = self::has_products( $brand->term_id );
53
+ if( !empty( $has_products ) ):
54
  ?>
55
  <div class="pwb-az-listing-col">
56
  <a href="<?php echo get_term_link($brand->term_id);?>"><?php echo $brand->name;?></a>
lang/perfect-woocommerce-brands-ca.mo ADDED
Binary file
lang/perfect-woocommerce-brands-ca.po ADDED
@@ -0,0 +1,722 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ msgid ""
7
+ msgstr ""
8
+ "Project-Id-Version: \n"
9
+ "Report-Msgid-Bugs-To: \n"
10
+ "POT-Creation-Date: 2018-11-29 00:15+0100\n"
11
+ "PO-Revision-Date: 2018-11-29 00:19+0100\n"
12
+ "Last-Translator: Lluís Martí <lluis@manies.cat>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+ "Language: ca \n"
15
+ "MIME-Version: 1.0\n"
16
+ "Content-Type: text/plain; charset=UTF-8\n"
17
+ "Content-Transfer-Encoding: 8bit\n"
18
+ "Plural-Forms: \n"
19
+ "X-Generator: Eazy Po 0.9.5.3\n"
20
+
21
+ #: main.php:106
22
+ msgid ""
23
+ "Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
24
+ "active WooCommerce plugin."
25
+ msgstr ""
26
+ "Perfect WooCommerce Brands necessita WooCommerce per a funcionar. Si us plau, "
27
+ "instal·la i activa WooCommerce."
28
+
29
+ #: classes/class-perfect-woocommerce-brands.php:52
30
+ msgid ""
31
+ "We know that you´re in love with Perfect WooCommerce Brands, you can help us "
32
+ "making it a bit better. Thanks a lot!"
33
+ msgstr ""
34
+ "Sabem que Perfect WooCommerce Brands t'encanta, pots ajudar-nos a "
35
+ "fer-lo una mica millor. ¡Moltes gràcies!"
36
+
37
+ #: classes/class-perfect-woocommerce-brands.php:54
38
+ msgid ""
39
+ "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
40
+ "reviews/?rate=5#new-post\" target=\"_blank\">Leave a review</a>"
41
+ msgstr ""
42
+ "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
43
+ "reviews/?rate=5#new-post\" target=\"_blank\">Deixar una review</a>"
44
+
45
+ #: classes/class-perfect-woocommerce-brands.php:55
46
+ msgid ""
47
+ "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
48
+ "woocommerce-brands\" target=\"_blank\">Translate the plugin</a>"
49
+ msgstr ""
50
+ "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
51
+ "woocommerce-brands\" target=\"_blank\">Traduir el plugin</a>"
52
+
53
+ #: classes/class-perfect-woocommerce-brands.php:56
54
+ msgid ""
55
+ "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
56
+ "\"_blank\">View on GitHub</a>"
57
+ msgstr ""
58
+ "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
59
+ "\"_blank\">Veure a GitHub</a>"
60
+
61
+ #: classes/class-perfect-woocommerce-brands.php:79
62
+ msgid "Settings"
63
+ msgstr "Ajustaments"
64
+
65
+ #: classes/class-perfect-woocommerce-brands.php:280
66
+ msgid "PWB Product carousel"
67
+ msgstr "PWB Carrussel de productes"
68
+
69
+ #: classes/class-perfect-woocommerce-brands.php:281
70
+ msgid "Product carousel by brand or by category"
71
+ msgstr "Carrussel de productes per marca o categoria"
72
+
73
+ #: classes/class-perfect-woocommerce-brands.php:289
74
+ #: classes/class-perfect-woocommerce-brands.php:611
75
+ #: classes/class-pwb-product-tab.php:18 classes/class-pwb-product-tab.php:35
76
+ #: classes/admin/class-pwb-exporter-support.php:22
77
+ #: classes/admin/class-pwb-importer-support.php:22
78
+ #: classes/admin/class-pwb-importer-support.php:33
79
+ msgid "Brand"
80
+ msgstr "Marca"
81
+
82
+ #: classes/class-perfect-woocommerce-brands.php:297
83
+ msgid "Products"
84
+ msgstr "Productes"
85
+
86
+ #: classes/class-perfect-woocommerce-brands.php:300
87
+ msgid "Number of products to load"
88
+ msgstr "Número de productes per carregar"
89
+
90
+ #: classes/class-perfect-woocommerce-brands.php:305
91
+ msgid "Products to show"
92
+ msgstr "Productes per mostrar"
93
+
94
+ #: classes/class-perfect-woocommerce-brands.php:308
95
+ msgid "Number of products to show"
96
+ msgstr "Número de productes per mostrar"
97
+
98
+ #: classes/class-perfect-woocommerce-brands.php:313
99
+ msgid "Products to scroll"
100
+ msgstr "Número de productes per scroll"
101
+
102
+ #: classes/class-perfect-woocommerce-brands.php:316
103
+ msgid "Number of products to scroll"
104
+ msgstr "Número de productes per cada scroll"
105
+
106
+ #: classes/class-perfect-woocommerce-brands.php:321
107
+ #: classes/class-perfect-woocommerce-brands.php:370
108
+ msgid "Autoplay"
109
+ msgstr "Mode automàtic"
110
+
111
+ #: classes/class-perfect-woocommerce-brands.php:323
112
+ #: classes/class-perfect-woocommerce-brands.php:372
113
+ msgid "Autoplay carousel"
114
+ msgstr "Mode automàtic pel carrussel"
115
+
116
+ #: classes/class-perfect-woocommerce-brands.php:328
117
+ #: classes/class-perfect-woocommerce-brands.php:377
118
+ msgid "Arrows"
119
+ msgstr "Dates de navegació"
120
+
121
+ #: classes/class-perfect-woocommerce-brands.php:330
122
+ #: classes/class-perfect-woocommerce-brands.php:379
123
+ msgid "Display prev and next arrows"
124
+ msgstr "Mostrar fletxes de navegació"
125
+
126
+ #: classes/class-perfect-woocommerce-brands.php:336
127
+ msgid "PWB Brands carousel"
128
+ msgstr "PWB Carrussel de marques"
129
+
130
+ #: classes/class-perfect-woocommerce-brands.php:337
131
+ msgid "Brands carousel"
132
+ msgstr "Carrussel de marques"
133
+
134
+ #: classes/class-perfect-woocommerce-brands.php:346
135
+ msgid "Items"
136
+ msgstr "Elemento"
137
+
138
+ #: classes/class-perfect-woocommerce-brands.php:349
139
+ msgid "Number of items to load (or 'featured')"
140
+ msgstr "Número d'elements per cargar (o 'featured')"
141
+
142
+ #: classes/class-perfect-woocommerce-brands.php:354
143
+ msgid "Items to show"
144
+ msgstr "Elements a mostrar"
145
+
146
+ #: classes/class-perfect-woocommerce-brands.php:357
147
+ msgid "Number of items to show"
148
+ msgstr "Número d'elements a mostrar"
149
+
150
+ #: classes/class-perfect-woocommerce-brands.php:362
151
+ msgid "Items to scroll"
152
+ msgstr "Número d'elements per scroll"
153
+
154
+ #: classes/class-perfect-woocommerce-brands.php:365
155
+ msgid "Number of items to scroll"
156
+ msgstr "Número d'elements per cada scroll"
157
+
158
+ #: classes/class-perfect-woocommerce-brands.php:383
159
+ #: classes/class-perfect-woocommerce-brands.php:411
160
+ #: classes/class-perfect-woocommerce-brands.php:492
161
+ #: classes/admin/class-pwb-admin-tab.php:129
162
+ msgid "Brand logo size"
163
+ msgstr "Mida del logo de la marca"
164
+
165
+ #: classes/class-perfect-woocommerce-brands.php:394
166
+ msgid "PWB All brands"
167
+ msgstr "PWB Totes les marques"
168
+
169
+ #: classes/class-perfect-woocommerce-brands.php:395
170
+ msgid "Show all brands"
171
+ msgstr "Mostrar totes les marques"
172
+
173
+ #: classes/class-perfect-woocommerce-brands.php:404
174
+ msgid "Brands per page"
175
+ msgstr "Marques per pàgina"
176
+
177
+ #: classes/class-perfect-woocommerce-brands.php:407
178
+ msgid "Show x brands per page"
179
+ msgstr "Mostrar x marques per pàgina"
180
+
181
+ #: classes/class-perfect-woocommerce-brands.php:418
182
+ msgid "Order by"
183
+ msgstr "Ordenar per"
184
+
185
+ #: classes/class-perfect-woocommerce-brands.php:432
186
+ msgid "Order"
187
+ msgstr "Ordre"
188
+
189
+ #: classes/class-perfect-woocommerce-brands.php:442
190
+ msgid "Title position"
191
+ msgstr "Posició del títol"
192
+
193
+ #: classes/class-perfect-woocommerce-brands.php:446
194
+ msgid "Before image"
195
+ msgstr "Abans de la imatge"
196
+
197
+ #: classes/class-perfect-woocommerce-brands.php:447
198
+ msgid "After image"
199
+ msgstr "Després de la imatge"
200
+
201
+ #: classes/class-perfect-woocommerce-brands.php:448
202
+ msgid "Hide"
203
+ msgstr "Amagar"
204
+
205
+ #: classes/class-perfect-woocommerce-brands.php:454
206
+ #: classes/widgets/class-pwb-dropdown.php:43
207
+ #: classes/widgets/class-pwb-list.php:67
208
+ msgid "Hide empty"
209
+ msgstr "Amagar buides"
210
+
211
+ #: classes/class-perfect-woocommerce-brands.php:456
212
+ msgid "Hide brands that have not been assigned to any product"
213
+ msgstr "Amagar marque que no han estat assignades a cap producte"
214
+
215
+ #: classes/class-perfect-woocommerce-brands.php:464
216
+ msgid "PWB AZ Listing"
217
+ msgstr "PWB Llista A-Z"
218
+
219
+ #: classes/class-perfect-woocommerce-brands.php:465
220
+ msgid "AZ Listing for brands"
221
+ msgstr "Llistat A-Z de marques"
222
+
223
+ #: classes/class-perfect-woocommerce-brands.php:474
224
+ msgid "PWB brand"
225
+ msgstr "PWB Marca"
226
+
227
+ #: classes/class-perfect-woocommerce-brands.php:475
228
+ msgid "Show brand for a specific product"
229
+ msgstr "Veure marques d'un producte específic"
230
+
231
+ #: classes/class-perfect-woocommerce-brands.php:485
232
+ msgid "Product id"
233
+ msgstr "Id del producte"
234
+
235
+ #: classes/class-perfect-woocommerce-brands.php:488
236
+ msgid "Product id (post id)"
237
+ msgstr "Id del producte (id del post)"
238
+
239
+ #: classes/class-perfect-woocommerce-brands.php:533
240
+ #: classes/shortcodes/class-pwb-brand.php:29
241
+ #: classes/shortcodes/class-pwb-brand.php:31
242
+ msgid "View brand"
243
+ msgstr "Veure marca"
244
+
245
+ #: classes/class-perfect-woocommerce-brands.php:598
246
+ msgid "¿Start migration?"
247
+ msgstr "Començar la migració?"
248
+
249
+ #: classes/class-perfect-woocommerce-brands.php:599
250
+ msgid ""
251
+ "We are migrating the product brands. ¡Don´t close this window until the "
252
+ "process is finished!"
253
+ msgstr ""
254
+ "Estem migrant les marques de producte. ¡No tanquis aquesta finestra fins que "
255
+ "el procés finalitzi!"
256
+
257
+ #: classes/class-perfect-woocommerce-brands.php:600
258
+ msgid "¿Start loading dummy data?"
259
+ msgstr "Començar amb la importació?"
260
+
261
+ #: classes/class-perfect-woocommerce-brands.php:601
262
+ msgid ""
263
+ "We are importing the dummy data. ¡Don´t close this window until the process "
264
+ "is finished!"
265
+ msgstr ""
266
+ "En aquest moment estem important les marques fictícies. ¡No tanquis aquesta "
267
+ "finestra fins que no acabi el procés!"
268
+
269
+ #: classes/class-perfect-woocommerce-brands.php:610
270
+ #: classes/class-perfect-woocommerce-brands.php:612
271
+ #: classes/admin/class-edit-brands-page.php:128
272
+ #: classes/admin/class-pwb-admin-tab.php:21
273
+ #: classes/widgets/class-pwb-dropdown.php:19
274
+ #: classes/widgets/class-pwb-filter-by-brand.php:20
275
+ #: classes/widgets/class-pwb-filter-by-brand.php:75
276
+ #: classes/widgets/class-pwb-list.php:19 templates/widgets/dropdown.php:16
277
+ msgid "Brands"
278
+ msgstr "Marques"
279
+
280
+ #: classes/class-perfect-woocommerce-brands.php:613
281
+ msgid "All Brands"
282
+ msgstr "Totes las marques"
283
+
284
+ #: classes/class-perfect-woocommerce-brands.php:614
285
+ msgid "Edit Brand"
286
+ msgstr "Editar marca"
287
+
288
+ #: classes/class-perfect-woocommerce-brands.php:615
289
+ msgid "View Brand"
290
+ msgstr "Veure marca"
291
+
292
+ #: classes/class-perfect-woocommerce-brands.php:616
293
+ msgid "Update Brand"
294
+ msgstr "Actualitzar marca"
295
+
296
+ #: classes/class-perfect-woocommerce-brands.php:617
297
+ msgid "Add New Brand"
298
+ msgstr "Afegir nova marca"
299
+
300
+ #: classes/class-perfect-woocommerce-brands.php:618
301
+ msgid "New Brand Name"
302
+ msgstr "Nou nom de marca"
303
+
304
+ #: classes/class-perfect-woocommerce-brands.php:619
305
+ msgid "Parent Brand"
306
+ msgstr "Marca Pare"
307
+
308
+ #: classes/class-perfect-woocommerce-brands.php:620
309
+ msgid "Parent Brand:"
310
+ msgstr "Marca Pare:"
311
+
312
+ #: classes/class-perfect-woocommerce-brands.php:621
313
+ msgid "Search Brands"
314
+ msgstr "Cercar Marques"
315
+
316
+ #: classes/class-perfect-woocommerce-brands.php:622
317
+ msgid "Popular Brands"
318
+ msgstr "Marques Populars"
319
+
320
+ #: classes/class-perfect-woocommerce-brands.php:623
321
+ msgid "Separate brands with commas"
322
+ msgstr "Separar marques amb comes"
323
+
324
+ #: classes/class-perfect-woocommerce-brands.php:624
325
+ msgid "Add or remove brands"
326
+ msgstr "Afegir o eliminar marques"
327
+
328
+ #: classes/class-perfect-woocommerce-brands.php:625
329
+ msgid "Choose from the most used brands"
330
+ msgstr "Seleccionar de les marques més utilitzades"
331
+
332
+ #: classes/class-perfect-woocommerce-brands.php:626
333
+ msgid "No brands found"
334
+ msgstr "No s'han trobat marques"
335
+
336
+ #: classes/class-perfect-woocommerce-brands.php:697
337
+ msgid "All"
338
+ msgstr "Totes"
339
+
340
+ #: classes/class-pwb-api-support.php:87
341
+ msgid "Product brands"
342
+ msgstr "Marques del producte"
343
+
344
+ #: classes/class-pwb-term.php:20
345
+ msgid "Only WP_Term objects are allowed"
346
+ msgstr "Només es permeten objectes del tipus WP_Term"
347
+
348
+ #: classes/admin/class-brands-custom-fields.php:20
349
+ #: classes/admin/class-brands-custom-fields.php:59
350
+ msgid "Description"
351
+ msgstr "Descripció"
352
+
353
+ #: classes/admin/class-brands-custom-fields.php:22
354
+ #: classes/admin/class-brands-custom-fields.php:63
355
+ msgid ""
356
+ "Brand description for the archive pages. You can include some html markup "
357
+ "and shortcodes."
358
+ msgstr ""
359
+ "Descripció de la marca per a la pàgina d'arxiu. Pots incloure marcat "
360
+ "html i shortcodes."
361
+
362
+ #: classes/admin/class-brands-custom-fields.php:26
363
+ #: classes/admin/class-brands-custom-fields.php:68
364
+ #: classes/widgets/class-pwb-list.php:43
365
+ msgid "Brand logo"
366
+ msgstr "Logo de la marca"
367
+
368
+ #: classes/admin/class-brands-custom-fields.php:28
369
+ #: classes/admin/class-brands-custom-fields.php:34
370
+ #: classes/admin/class-brands-custom-fields.php:72
371
+ #: classes/admin/class-brands-custom-fields.php:92
372
+ msgid "Select image"
373
+ msgstr "Seleccionar imatge"
374
+
375
+ #: classes/admin/class-brands-custom-fields.php:32
376
+ #: classes/admin/class-brands-custom-fields.php:88
377
+ msgid "Brand banner"
378
+ msgstr "Banner de la marca"
379
+
380
+ #: classes/admin/class-brands-custom-fields.php:35
381
+ msgid "This image will be shown on brand page"
382
+ msgstr "Aquesta imatge es mostrarà a la pàgina de la marca"
383
+
384
+ #: classes/admin/class-brands-custom-fields.php:39
385
+ #: classes/admin/class-brands-custom-fields.php:108
386
+ msgid "Brand banner link"
387
+ msgstr "Enlĺaç per al banner de la marca"
388
+
389
+ #: classes/admin/class-brands-custom-fields.php:41
390
+ #: classes/admin/class-brands-custom-fields.php:112
391
+ msgid "This link should be relative to site url. Example: product/product-name"
392
+ msgstr ""
393
+ "Aquest enllaç ha de ser relatiu a la url del lloc web. Exemple: producte/"
394
+ "nom-del-producte"
395
+
396
+ #: classes/admin/class-edit-brands-page.php:39
397
+ msgid "featured"
398
+ msgstr "preferida"
399
+
400
+ #: classes/admin/class-edit-brands-page.php:74
401
+ msgid "Logo"
402
+ msgstr "Logo"
403
+
404
+ #: classes/admin/class-edit-brands-page.php:96
405
+ msgid "Set as featured"
406
+ msgstr "Marcar com a preferida"
407
+
408
+ #: classes/admin/class-edit-brands-page.php:118
409
+ msgid "Error!"
410
+ msgstr "Error!"
411
+
412
+ #: classes/admin/class-edit-brands-page.php:131
413
+ msgid "Show featured brands first"
414
+ msgstr "Mostrar marques preferides primer"
415
+
416
+ #: classes/admin/class-pwb-admin-tab.php:70
417
+ msgid "Brands settings"
418
+ msgstr "Ajustaments de les marques"
419
+
420
+ #: classes/admin/class-pwb-admin-tab.php:76
421
+ msgid "Slug"
422
+ msgstr "Slug"
423
+
424
+ #: classes/admin/class-pwb-admin-tab.php:79
425
+ msgid "Brands taxonomy slug"
426
+ msgstr "Slug de la taxonomia marques"
427
+
428
+ #: classes/admin/class-pwb-admin-tab.php:84
429
+ msgid "Show brand description"
430
+ msgstr "Mostrar descripció de la marca"
431
+
432
+ #: classes/admin/class-pwb-admin-tab.php:88
433
+ msgid "Show brand description (if is set) on brand archive page"
434
+ msgstr "Mostrar descripció de la marca a la pàgina d'arxiu"
435
+
436
+ #: classes/admin/class-pwb-admin-tab.php:91
437
+ msgid "Yes, before product loop"
438
+ msgstr "Si, abans dels productes"
439
+
440
+ #: classes/admin/class-pwb-admin-tab.php:92
441
+ msgid "Yes, after product loop"
442
+ msgstr "Si, després dels productes"
443
+
444
+ #: classes/admin/class-pwb-admin-tab.php:93
445
+ msgid "No, hide description"
446
+ msgstr "No, ocultar descripció"
447
+
448
+ #: classes/admin/class-pwb-admin-tab.php:97
449
+ msgid "Single product tab"
450
+ msgstr "Tab a la pàgina del producte"
451
+
452
+ #: classes/admin/class-pwb-admin-tab.php:100
453
+ msgid "Show brand tab in single product page"
454
+ msgstr "Mostrar pestanya amb informació de la marca a la pàgina del producte"
455
+
456
+ #: classes/admin/class-pwb-admin-tab.php:104
457
+ msgid "Show brands in loop"
458
+ msgstr "Mostrar marques al loop"
459
+
460
+ #: classes/admin/class-pwb-admin-tab.php:107
461
+ msgid "Show brand logo (or name) in product loop"
462
+ msgstr "Mostrar el logo de la marca (o el nom) al loop"
463
+
464
+ #: classes/admin/class-pwb-admin-tab.php:110
465
+ #: classes/admin/class-pwb-admin-tab.php:123
466
+ msgid "No"
467
+ msgstr "No"
468
+
469
+ #: classes/admin/class-pwb-admin-tab.php:111
470
+ #: classes/admin/class-pwb-admin-tab.php:124
471
+ msgid "Show brand link"
472
+ msgstr "Mostrar el link de la marca"
473
+
474
+ #: classes/admin/class-pwb-admin-tab.php:112
475
+ #: classes/admin/class-pwb-admin-tab.php:125
476
+ msgid "Show brand image (if is set)"
477
+ msgstr "Mostrar el logo de la marca (si en té un d'assignat)"
478
+
479
+ #: classes/admin/class-pwb-admin-tab.php:116
480
+ msgid "Show brands in single product"
481
+ msgstr "Mostrar marques a la pàgina del producte"
482
+
483
+ #: classes/admin/class-pwb-admin-tab.php:119
484
+ msgid "Show brand logo (or name) in single product"
485
+ msgstr "Mostrar el logo de la marca (o el nom) a la pàgina del producte"
486
+
487
+ #: classes/admin/class-pwb-admin-tab.php:132
488
+ msgid "Brand logo size for single product view"
489
+ msgstr "Mida del logo per a la vista individual de producte"
490
+
491
+ #: classes/admin/class-pwb-admin-tab.php:137
492
+ msgid "Brand position"
493
+ msgstr "Posició de la marca"
494
+
495
+ #: classes/admin/class-pwb-admin-tab.php:140
496
+ msgid "For single product"
497
+ msgstr "A la pàgina individual de cada producte"
498
+
499
+ #: classes/admin/class-pwb-admin-tab.php:143
500
+ msgid "Before title"
501
+ msgstr "Abans del títol"
502
+
503
+ #: classes/admin/class-pwb-admin-tab.php:144
504
+ msgid "After title"
505
+ msgstr "Després del títol"
506
+
507
+ #: classes/admin/class-pwb-admin-tab.php:145
508
+ msgid "After price"
509
+ msgstr "Després del preu"
510
+
511
+ #: classes/admin/class-pwb-admin-tab.php:146
512
+ msgid "After excerpt"
513
+ msgstr "Després de la descripció curta"
514
+
515
+ #: classes/admin/class-pwb-admin-tab.php:147
516
+ msgid "After add to cart"
517
+ msgstr "Després del botó de comprar"
518
+
519
+ #: classes/admin/class-pwb-admin-tab.php:148
520
+ msgid "After meta"
521
+ msgstr "Després del meta"
522
+
523
+ #: classes/admin/class-pwb-admin-tab.php:149
524
+ msgid "After sharing"
525
+ msgstr "Després de compartir"
526
+
527
+ #: classes/admin/class-pwb-admin-tab.php:153
528
+ msgid "Brands page"
529
+ msgstr "Pàgina de marques"
530
+
531
+ #: classes/admin/class-pwb-admin-tab.php:156
532
+ msgid "For linking breadcrumbs"
533
+ msgstr "Per a l'enllaç de las molles de pa"
534
+
535
+ #: classes/admin/class-pwb-admin-tab.php:173
536
+ msgid "Tools"
537
+ msgstr "Eines"
538
+
539
+ #: classes/admin/class-pwb-admin-tab.php:179
540
+ #: templates/admin/brands-exporter.php:16
541
+ msgid "Import brands"
542
+ msgstr "Importar marques"
543
+
544
+ #: classes/admin/class-pwb-admin-tab.php:183
545
+ #, php-format
546
+ msgid ""
547
+ "Import brands from other brand plugin. <a href=\"%s\" target=\"_blank"
548
+ "\">Click here for more details</a>"
549
+ msgstr ""
550
+ "Importar marques de producte d'un altre plugin de marques. <a href=\"%s\" target="
551
+ "\"_blank\">Clica aquí per a veure la documentació</a>"
552
+
553
+ #: classes/admin/class-pwb-admin-tab.php:188
554
+ #: classes/admin/class-pwb-admin-tab.php:201
555
+ msgid "-"
556
+ msgstr "-"
557
+
558
+ #: classes/admin/class-pwb-admin-tab.php:189
559
+ msgid "YITH WooCommerce Brands Add-On"
560
+ msgstr "YITH WooCommerce Brands Add-On"
561
+
562
+ #: classes/admin/class-pwb-admin-tab.php:190
563
+ msgid "Ultimate WooCommerce Brands"
564
+ msgstr "Ultimate WooCommerce Brands"
565
+
566
+ #: classes/admin/class-pwb-admin-tab.php:191
567
+ msgid "Offical WooCommerce Brands"
568
+ msgstr "Offical WooCommerce Brands"
569
+
570
+ #: classes/admin/class-pwb-admin-tab.php:195
571
+ msgid "Dummy data"
572
+ msgstr "Dades fictícies"
573
+
574
+ #: classes/admin/class-pwb-admin-tab.php:198
575
+ msgid "Import generic brands and assign it to products randomly"
576
+ msgstr ""
577
+ "Importar marques genèriques i assignar-les als productes existents de forma "
578
+ "aleatòria"
579
+
580
+ #: classes/admin/class-pwb-admin-tab.php:202
581
+ msgid "Start import"
582
+ msgstr "Començar importació"
583
+
584
+ #: classes/admin/class-pwb-admin-tab.php:206
585
+ msgid "System status"
586
+ msgstr "Estat del sistema"
587
+
588
+ #: classes/admin/class-pwb-admin-tab.php:208
589
+ msgid "Show system status"
590
+ msgstr "Veure estat del sistema"
591
+
592
+ #: classes/admin/class-pwb-coupon.php:24
593
+ msgid "Brands restriction"
594
+ msgstr "Restriccions de marca"
595
+
596
+ #: classes/admin/class-pwb-coupon.php:25
597
+ msgid "Any brand"
598
+ msgstr "Qualsevol marca"
599
+
600
+ #: classes/admin/class-pwb-coupon.php:34
601
+ msgid ""
602
+ "Coupon will be valid if there are at least one product of this brands in the "
603
+ "cart"
604
+ msgstr ""
605
+ "El cupó serà vàlido si existeix com a mínim un producte de la marca indicada al "
606
+ "cistell"
607
+
608
+ #: classes/shortcodes/class-pwb-all-brands.php:108
609
+ msgid "First page"
610
+ msgstr "Primera pàgina"
611
+
612
+ #: classes/shortcodes/class-pwb-all-brands.php:111
613
+ msgid "Previous page"
614
+ msgstr "Pàgina anterior"
615
+
616
+ #: classes/shortcodes/class-pwb-all-brands.php:115
617
+ msgid "Next page"
618
+ msgstr "Següent pàgina"
619
+
620
+ #: classes/shortcodes/class-pwb-all-brands.php:118
621
+ msgid "Last page"
622
+ msgstr "Darrera pàgina"
623
+
624
+ #: classes/shortcodes/class-pwb-all-brands.php:123
625
+ msgid "No results"
626
+ msgstr "No s'han trobat resultats"
627
+
628
+ #: classes/widgets/class-pwb-dropdown.php:10
629
+ msgid "Adds a brands dropdown to your site"
630
+ msgstr "Afegeox un desplegable amb les marques al teu lloc"
631
+
632
+ #: classes/widgets/class-pwb-dropdown.php:11
633
+ msgid "Brands dropdown"
634
+ msgstr "Desplegable de marques"
635
+
636
+ #: classes/widgets/class-pwb-dropdown.php:26
637
+ msgid "Title"
638
+ msgstr "Títol"
639
+
640
+ #: classes/widgets/class-pwb-dropdown.php:54
641
+ #: classes/widgets/class-pwb-list.php:77
642
+ msgid "Only favorite brands"
643
+ msgstr "Només marques preferides"
644
+
645
+ #: classes/widgets/class-pwb-filter-by-brand.php:11
646
+ msgid "Recommended for product categories or shop page"
647
+ msgstr "Recomanat per a les categories de producte i la pàgina de la botiga"
648
+
649
+ #: classes/widgets/class-pwb-filter-by-brand.php:12
650
+ msgid "Filter products by brand"
651
+ msgstr "Filtrar productes por marca"
652
+
653
+ #: classes/widgets/class-pwb-filter-by-brand.php:25
654
+ #: classes/widgets/class-pwb-list.php:28
655
+ msgid "Title:"
656
+ msgstr "Títol:"
657
+
658
+ #: classes/widgets/class-pwb-filter-by-brand.php:30
659
+ msgid "Max number of brands"
660
+ msgstr "Número màxim de marques"
661
+
662
+ #: classes/widgets/class-pwb-filter-by-brand.php:41
663
+ msgid "Hide filter button"
664
+ msgstr "No mostrar el botó Filtrar"
665
+
666
+ #: classes/widgets/class-pwb-list.php:10
667
+ msgid "Adds a brands list to your site"
668
+ msgstr "Afegeix una llista de marques al teu lloc"
669
+
670
+ #: classes/widgets/class-pwb-list.php:11
671
+ msgid "Brands list"
672
+ msgstr "Llista de marques"
673
+
674
+ #: classes/widgets/class-pwb-list.php:37
675
+ msgid "Display as:"
676
+ msgstr "Mostrar com:"
677
+
678
+ #: classes/widgets/class-pwb-list.php:42
679
+ msgid "Brand name"
680
+ msgstr "Nom de la marca"
681
+
682
+ #: classes/widgets/class-pwb-list.php:47
683
+ msgid "Columns:"
684
+ msgstr "Columnes:"
685
+
686
+ #: classes/widgets/class-pwb-list.php:87
687
+ msgid "Randomize"
688
+ msgstr "Aleatori"
689
+
690
+ #: classes/widgets/class-pwb-list.php:119
691
+ msgid "Go to"
692
+ msgstr "Anar a"
693
+
694
+ #: templates/admin/brands-exporter.php:15
695
+ msgid "Export brands"
696
+ msgstr "Exportar marques"
697
+
698
+ #: templates/admin/brands-exporter.php:18
699
+ msgid ""
700
+ "This tool allows you to export and import the brands between different sites "
701
+ "using PWB."
702
+ msgstr ""
703
+ "Aquesta eina permet exportar i importar marques entre dos llocs "
704
+ "diferents que utilitzen PWB"
705
+
706
+ #: templates/shortcodes/carousel.php:24
707
+ #: templates/shortcodes/product-carousel.php:28
708
+ msgid "Loading"
709
+ msgstr "Carregant"
710
+
711
+ #: templates/shortcodes/product-carousel.php:34
712
+ msgid "Nothing found"
713
+ msgstr "Aquí no hi ha res"
714
+
715
+ #: templates/widgets/filter-by-brand.php:25
716
+ msgid "Apply filter"
717
+ msgstr "Filtrar"
718
+
719
+ #: classes/widgets/class-pwb-dropdown.php:66
720
+ #: classes/widgets/class-pwb-list.php:115
721
+ msgid "There is not available brands"
722
+ msgstr "No es troben marques disponibles"
lang/perfect-woocommerce-brands-es_ES.mo CHANGED
Binary file
lang/perfect-woocommerce-brands-es_ES.po CHANGED
@@ -525,8 +525,8 @@ msgid "After sharing"
525
  msgstr "Después de compartir"
526
 
527
  #: classes/admin/class-pwb-admin-tab.php:153
528
- msgid "Brands page id"
529
- msgstr "ID de la página de marcas"
530
 
531
  #: classes/admin/class-pwb-admin-tab.php:156
532
  msgid "For linking breadcrumbs"
@@ -719,4 +719,4 @@ msgstr "Filtrar"
719
  #: classes/widgets/class-pwb-dropdown.php:66
720
  #: classes/widgets/class-pwb-list.php:115
721
  msgid "There is not available brands"
722
- msgstr "No se encuentran marcas disponibles"
525
  msgstr "Después de compartir"
526
 
527
  #: classes/admin/class-pwb-admin-tab.php:153
528
+ msgid "Brands page"
529
+ msgstr "Página de marcas"
530
 
531
  #: classes/admin/class-pwb-admin-tab.php:156
532
  msgid "For linking breadcrumbs"
719
  #: classes/widgets/class-pwb-dropdown.php:66
720
  #: classes/widgets/class-pwb-list.php:115
721
  msgid "There is not available brands"
722
+ msgstr "No se encuentran marcas disponibles"
lang/perfect-woocommerce-brands.pot CHANGED
@@ -506,7 +506,7 @@ msgid "After sharing"
506
  msgstr ""
507
 
508
  #: classes/admin/class-pwb-admin-tab.php:153
509
- msgid "Brands page id"
510
  msgstr ""
511
 
512
  #: classes/admin/class-pwb-admin-tab.php:156
506
  msgstr ""
507
 
508
  #: classes/admin/class-pwb-admin-tab.php:153
509
+ msgid "Brands page"
510
  msgstr ""
511
 
512
  #: classes/admin/class-pwb-admin-tab.php:156
main.php CHANGED
@@ -3,13 +3,13 @@
3
  * Plugin Name: Perfect WooCommerce Brands
4
  * Plugin URI: https://wordpress.org/plugins/perfect-woocommerce-brands/
5
  * Description: Perfect WooCommerce Brands allows you to show product brands in your WooCommerce based store.
6
- * Version: 1.7.0
7
  * Author: Alberto de Vera Sevilla
8
  * Author URI: https://profiles.wordpress.org/titodevera/
9
  * Text Domain: perfect-woocommerce-brands
10
  * Domain Path: /lang
11
  * License: GPL3
12
- * Perfect WooCommerce Brands version 1.7.0, Copyright (C) 2018 Alberto de Vera Sevilla
13
  * Perfect WooCommerce Brands is free software: you can redistribute it and/or modify
14
  * it under the terms of the GNU General Public License as published by
15
  * the Free Software Foundation, either version 3 of the License, or
@@ -34,7 +34,7 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
34
  define( 'PWB_PLUGIN', plugins_url( '', __FILE__ ) );
35
  define( 'PWB_PLUGIN_PATH', plugin_basename( dirname( __FILE__ ) ) );
36
  define( 'PWB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
37
- define( 'PWB_PLUGIN_VERSION', '1.7.0' );
38
  define( 'PWB_WP_VERSION', get_bloginfo( 'version' ) );
39
  define( 'PWB_WC_VERSION', get_option( 'woocommerce_version' ) );
40
 
3
  * Plugin Name: Perfect WooCommerce Brands
4
  * Plugin URI: https://wordpress.org/plugins/perfect-woocommerce-brands/
5
  * Description: Perfect WooCommerce Brands allows you to show product brands in your WooCommerce based store.
6
+ * Version: 1.7.1
7
  * Author: Alberto de Vera Sevilla
8
  * Author URI: https://profiles.wordpress.org/titodevera/
9
  * Text Domain: perfect-woocommerce-brands
10
  * Domain Path: /lang
11
  * License: GPL3
12
+ * Perfect WooCommerce Brands version 1.7.1, Copyright (C) 2018 Alberto de Vera Sevilla
13
  * Perfect WooCommerce Brands is free software: you can redistribute it and/or modify
14
  * it under the terms of the GNU General Public License as published by
15
  * the Free Software Foundation, either version 3 of the License, or
34
  define( 'PWB_PLUGIN', plugins_url( '', __FILE__ ) );
35
  define( 'PWB_PLUGIN_PATH', plugin_basename( dirname( __FILE__ ) ) );
36
  define( 'PWB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
37
+ define( 'PWB_PLUGIN_VERSION', '1.7.1' );
38
  define( 'PWB_WP_VERSION', get_bloginfo( 'version' ) );
39
  define( 'PWB_WC_VERSION', get_option( 'woocommerce_version' ) );
40
 
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: titodevera
3
  Donate link: mailto:hola@albertodevera.es
4
  Tags: woocommerce, brands, brand taxonomy, product brands, woocommerce manufacturer, woocommerce supplier, e-commerce
5
  Requires at least: 4.4
6
- Tested up to: 4.9
7
- Stable tag: 1.7.0
8
  License: GPL3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
10
 
@@ -80,6 +80,15 @@ Go to `WooCommerce/Settings/` and click on `Brands` tab
80
 
81
 
82
  == Changelog ==
 
 
 
 
 
 
 
 
 
83
  = 1.7.0 =
84
  * Feature: A-Z Listing shortcode
85
  * Feature: New brands exporter/importer introduced
3
  Donate link: mailto:hola@albertodevera.es
4
  Tags: woocommerce, brands, brand taxonomy, product brands, woocommerce manufacturer, woocommerce supplier, e-commerce
5
  Requires at least: 4.4
6
+ Tested up to: 5.0
7
+ Stable tag: 1.7.1
8
  License: GPL3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
10
 
80
 
81
 
82
  == Changelog ==
83
+ = 1.7.1 =
84
+ * Feature: Extends the [products] shortcode to allow 'brands' attribute
85
+ * Feature: The brands column is sortable now
86
+ * Catalan translation (thanks to Lluisma)
87
+ * Enhancement: Easier select brands page link in breadcrumbs
88
+ * Enhancement: Configure the brand banner and the brand description position independently
89
+ * Dev: New filter 'pwb_taxonomy_rewrite' to change the rewrite slug
90
+ * Dev: New filter 'pwb_taxonomy_with_front' to change default "with_front" value
91
+ * Fix: Fatal error in PHP5.4
92
  = 1.7.0 =
93
  * Feature: A-Z Listing shortcode
94
  * Feature: New brands exporter/importer introduced