Perfect Brands for WooCommerce - Version 1.7.0

Version Description

  • Feature: A-Z Listing shortcode
  • Feature: New brands exporter/importer introduced
  • Fix: Missing some brands to filter
  • Fix: Coupon doesnt work for product variations (thanks @gekomees)
  • Fix: The brand description is not shown if there are no products
  • Enhancement: wpautop() for brand descriptions
  • Enhancement: Other filter by brand widget enhancements
  • Enhancement: Brands page link in breadcrumbs
  • Enhancement: Enqueue the carousel lib conditionally
  • Dev: New filter hook 'pwb_description_allowed_tags'
  • Update: WC 3.5 compatibility
Download this release

Release Info

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

Code changes from version 1.6.5 to 1.7.0

assets/css/styles-admin.css CHANGED
@@ -105,6 +105,15 @@
105
  display: none!important;
106
  }
107
  }
 
 
 
 
 
 
 
 
 
108
  /* ----------------------- /Taxonomy pwb-brand ----------------------- */
109
 
110
  /* ----------------------- Settings page ----------------------- */
@@ -164,3 +173,38 @@ table.wp-list-table .column-taxonomy-pwb-brand{
164
  @keyframes pwbblinkkf {
165
  50% { opacity: 0; }
166
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
  display: none!important;
106
  }
107
  }
108
+ .pwb-brands-exporter{
109
+ margin-top: 20px;
110
+ padding-top: 20px;
111
+ border-top: 1px solid #ddd;
112
+ text-align: right;
113
+ }
114
+ .pwb-brands-exporter p{
115
+ font-style: italic;
116
+ }
117
  /* ----------------------- /Taxonomy pwb-brand ----------------------- */
118
 
119
  /* ----------------------- Settings page ----------------------- */
173
  @keyframes pwbblinkkf {
174
  50% { opacity: 0; }
175
  }
176
+ @keyframes PWBLoadingOverlay {
177
+ to {transform: rotate(360deg);}
178
+ }
179
+ .pwb-loading-overlay{
180
+ position: relative;
181
+ }
182
+ .pwb-loading-overlay::after{
183
+ content: "";
184
+ position: absolute;
185
+ top: 0;
186
+ right: 0;
187
+ bottom: 0;
188
+ left: 0;
189
+ background-color: rgba( 255, 255, 255, .7 );
190
+ z-index: 1;
191
+ }
192
+ .pwb-loading-overlay::before{
193
+ content: "";
194
+ position: absolute;
195
+ box-sizing: border-box;
196
+ top: 50%;
197
+ left: 50%;
198
+ width: 15px;
199
+ height: 15px;
200
+ margin-top: -7.5px;
201
+ margin-left: -7.5px;
202
+ border-radius: 50%;
203
+ border-top: 2px solid #000;
204
+ border-right: 2px solid transparent;
205
+ animation: PWBLoadingOverlay .6s linear infinite;
206
+ z-index: 1;
207
+ }
208
+ input.pwb-brands-import-file{
209
+ display: none!important;
210
+ }
assets/css/styles-admin.min.css CHANGED
@@ -1 +1 @@
1
- .pwb-clearfix:after{content:"";display:table;clear:both}.pwb-blocked{opacity:.6}.taxonomy-pwb-brand .pwb_brand_image_selected_remove{color:#ff3030;font-family:Arial,Helvetica,sans-serif;text-decoration:none;font-size:20px;font-weight:bold;position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,0.5);opacity:0;-webkit-transition:opacity 200ms ease-in-out;-moz-transition:opacity 200ms ease-in-out;-ms-transition:opacity 200ms ease-in-out;-o-transition:opacity 200ms ease-in-out;transition:opacity 200ms ease-in-out}.taxonomy-pwb-brand .pwb_brand_image_selected span{display:inline-block;position:relative;text-align:center;line-height:90px;height:90px}.taxonomy-pwb-brand .pwb_brand_image_selected span:hover .pwb_brand_image_selected_remove{opacity:1}.taxonomy-pwb-brand .pwb_brand_cont #pwb_brand_image,.taxonomy-pwb-brand .pwb_brand_cont #pwb_brand_banner{display:none}.taxonomy-pwb-brand .pwb_brand_cont>div{margin-top:10px}#wp-pwb-brand-description-field-wrap,#brand-description-help-text{width:95%}.taxonomy-pwb-brand .term-description-wrap{display:none!important}.taxonomy-pwb-brand #col-right.pwb-force-full-width .pwb-edit-brands-bottom>span{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.taxonomy-pwb-brand table.wp-list-table .column-featured{width:48px;text-align:center}.taxonomy-pwb-brand .pwb-edit-brands-bottom{margin-top:20px;margin-bottom:20px;background-color:#f6f6f6;border-top:1px solid #e4e4e4;padding:10px}.taxonomy-pwb-brand .pwb-edit-brands-bottom>span:hover{cursor:pointer}.taxonomy-pwb-brand .pwb-edit-brands-bottom>span{float:left}.taxonomy-pwb-brand .pwb-featured-count{font-style:italic;float:right;margin-left:12px;margin-top:0;margin-bottom:0}.taxonomy-pwb-brand table.wp-list-table .column-featured .dashicons-star-empty:hover:before{content:"\f155"}.taxonomy-pwb-brand table .column-featured>span:hover{cursor:pointer}@media screen and (max-width:782px){.taxonomy-pwb-brand .wp-list-table thead th.column-logo,.taxonomy-pwb-brand .wp-list-table tfoot th.column-logo{display:none}.taxonomy-pwb-brand .wp-list-table td.column-logo:before{content:""!important}.taxonomy-pwb-brand .pwb-edit-brands-bottom>span{display:none}}@media screen and (min-width:782px){.taxonomy-pwb-brand #col-right.pwb-force-full-width{width:100%!important}.taxonomy-pwb-brand #col-left.pwb-force-full-width{width:0!important;display:none!important}}#wc_pwb_admin_status_result{display:none;background-color:#f6f6f6;padding:14px}#wc_pwb_admin_tab_tools_system_status{display:none!important}select.pwb-admin-tab-field,input[type="text"].pwb-admin-tab-field{min-width:350px;display:block;height:auto}table.wp-list-table .column-taxonomy-pwb-brand{width:11%!important}.pwb-display-as-logo{display:none}.pwb-display-as-logo.show{display:block}.pwb-notice-dismissible p a{margin-right:12px}.pwb-notice-dismissible .dashicons-heart{color:#f188ff;margin-left:3px}.pwb-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999999999;line-height:1;background:rgba(0,0,0,0.9);font-size:2em;padding-top:20px;text-align:center}.pwb-modal-inner{max-width:70%;margin:0 auto;animation:pwbblinkkf 3s linear infinite;color:#fff}.pwb-modal-inner p{font-size:2em}@keyframes pwbblinkkf{50%{opacity:0}}
1
+ .pwb-clearfix:after{content:"";display:table;clear:both}.pwb-blocked{opacity:.6}.taxonomy-pwb-brand .pwb_brand_image_selected_remove{color:#ff3030;font-family:Arial,Helvetica,sans-serif;text-decoration:none;font-size:20px;font-weight:bold;position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(0,0,0,0.5);opacity:0;-webkit-transition:opacity 200ms ease-in-out;-moz-transition:opacity 200ms ease-in-out;-ms-transition:opacity 200ms ease-in-out;-o-transition:opacity 200ms ease-in-out;transition:opacity 200ms ease-in-out}.taxonomy-pwb-brand .pwb_brand_image_selected span{display:inline-block;position:relative;text-align:center;line-height:90px;height:90px}.taxonomy-pwb-brand .pwb_brand_image_selected span:hover .pwb_brand_image_selected_remove{opacity:1}.taxonomy-pwb-brand .pwb_brand_cont #pwb_brand_image,.taxonomy-pwb-brand .pwb_brand_cont #pwb_brand_banner{display:none}.taxonomy-pwb-brand .pwb_brand_cont>div{margin-top:10px}#wp-pwb-brand-description-field-wrap,#brand-description-help-text{width:95%}.taxonomy-pwb-brand .term-description-wrap{display:none!important}.taxonomy-pwb-brand #col-right.pwb-force-full-width .pwb-edit-brands-bottom>span{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.taxonomy-pwb-brand table.wp-list-table .column-featured{width:48px;text-align:center}.taxonomy-pwb-brand .pwb-edit-brands-bottom{margin-top:20px;margin-bottom:20px;background-color:#f6f6f6;border-top:1px solid #e4e4e4;padding:10px}.taxonomy-pwb-brand .pwb-edit-brands-bottom>span:hover{cursor:pointer}.taxonomy-pwb-brand .pwb-edit-brands-bottom>span{float:left}.taxonomy-pwb-brand .pwb-featured-count{font-style:italic;float:right;margin-left:12px;margin-top:0;margin-bottom:0}.taxonomy-pwb-brand table.wp-list-table .column-featured .dashicons-star-empty:hover:before{content:"\f155"}.taxonomy-pwb-brand table .column-featured>span:hover{cursor:pointer}@media screen and (max-width:782px){.taxonomy-pwb-brand .wp-list-table thead th.column-logo,.taxonomy-pwb-brand .wp-list-table tfoot th.column-logo{display:none}.taxonomy-pwb-brand .wp-list-table td.column-logo:before{content:""!important}.taxonomy-pwb-brand .pwb-edit-brands-bottom>span{display:none}}@media screen and (min-width:782px){.taxonomy-pwb-brand #col-right.pwb-force-full-width{width:100%!important}.taxonomy-pwb-brand #col-left.pwb-force-full-width{width:0!important;display:none!important}}.pwb-brands-exporter{margin-top:20px;padding-top:20px;border-top:1px solid #ddd;text-align:right}.pwb-brands-exporter p{font-style:italic}#wc_pwb_admin_status_result{display:none;background-color:#f6f6f6;padding:14px}#wc_pwb_admin_tab_tools_system_status{display:none!important}select.pwb-admin-tab-field,input[type="text"].pwb-admin-tab-field{min-width:350px;display:block;height:auto}table.wp-list-table .column-taxonomy-pwb-brand{width:11%!important}.pwb-display-as-logo{display:none}.pwb-display-as-logo.show{display:block}.pwb-notice-dismissible p a{margin-right:12px}.pwb-notice-dismissible .dashicons-heart{color:#f188ff;margin-left:3px}.pwb-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999999999;line-height:1;background:rgba(0,0,0,0.9);font-size:2em;padding-top:20px;text-align:center}.pwb-modal-inner{max-width:70%;margin:0 auto;animation:pwbblinkkf 3s linear infinite;color:#fff}.pwb-modal-inner p{font-size:2em}@keyframes pwbblinkkf{50%{opacity:0}}@keyframes PWBLoadingOverlay{to{transform:rotate(360deg)}}.pwb-loading-overlay{position:relative}.pwb-loading-overlay::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-color:rgba(255,255,255,.7);z-index:1}.pwb-loading-overlay::before{content:"";position:absolute;box-sizing:border-box;top:50%;left:50%;width:15px;height:15px;margin-top:-7.5px;margin-left:-7.5px;border-radius:50%;border-top:2px solid #000;border-right:2px solid transparent;animation:PWBLoadingOverlay .6s linear infinite;z-index:1}input.pwb-brands-import-file{display:none!important}
assets/css/styles-frontend.css CHANGED
@@ -220,6 +220,54 @@
220
  }
221
  /* ----------------------- /PWB All Brands ----------------------- */
222
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  /* ----------------------- Filter products widget ----------------------- */
224
  .pwb-filter-products input[type="checkbox"]{
225
  margin-right: 10px;
@@ -281,4 +329,16 @@
281
  width: 50%;
282
  }
283
  }
 
 
 
 
 
 
 
 
 
 
 
 
284
  /* ----------------------- /Responsive ----------------------- */
220
  }
221
  /* ----------------------- /PWB All Brands ----------------------- */
222
 
223
+ /* ----------------------- PWB AZ Listing ----------------------- */
224
+ .pwb-az-listing-row{
225
+ margin-bottom: 20px;
226
+ }
227
+ .pwb-az-listing-row-in{
228
+ margin-left: -5px;
229
+ margin-right: -5px;
230
+ }
231
+ .pwb-az-listing-col{
232
+ padding: 5px;
233
+ }
234
+ .pwb-az-listing-col > a{
235
+ display: block;
236
+ text-transform: uppercase;
237
+ white-space:nowrap;
238
+ overflow:hidden;
239
+ }
240
+ .pwb-az-listing-title{
241
+ border-bottom: 1px solid #ddd;
242
+ font-weight: bold;
243
+ font-size: 115%;
244
+ text-transform: uppercase;
245
+ }
246
+ .pwb-az-listing-header{
247
+ margin-bottom: 30px;
248
+ }
249
+ .pwb-az-listing-header ul{
250
+ margin: 0;
251
+ padding: 0;
252
+ list-style: none;
253
+ margin-right: -2px;
254
+ margin-left: -2px;
255
+ }
256
+ .pwb-az-listing-header li{
257
+ display: inline-block;
258
+ float: left;
259
+ width: 25px;
260
+ height: 25px;
261
+ margin: 2px;
262
+ line-height: 25px;
263
+ border: 1px solid #ddd;
264
+ text-align: center;
265
+ }
266
+ .pwb-az-listing-header a{
267
+ text-transform: uppercase;
268
+ }
269
+ /* ----------------------- /PWB AZ Listing ----------------------- */
270
+
271
  /* ----------------------- Filter products widget ----------------------- */
272
  .pwb-filter-products input[type="checkbox"]{
273
  margin-right: 10px;
329
  width: 50%;
330
  }
331
  }
332
+
333
+ @media (min-width: 576px) {
334
+ .pwb-az-listing-col{
335
+ width: 50%;
336
+ float: left;
337
+ }
338
+ }
339
+ @media (min-width: 992px) {
340
+ .pwb-az-listing-col{
341
+ width: 25%;
342
+ }
343
+ }
344
  /* ----------------------- /Responsive ----------------------- */
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-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%}}
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%}}
assets/img/icon_pwb.jpg CHANGED
Binary file
assets/js/functions-admin.js CHANGED
@@ -54,14 +54,16 @@ jQuery( function ( $ ) {
54
  });
55
 
56
  //clear custom fields when brand is added
57
- jQuery( document ).ajaxSuccess(function( event, xhr, settings ) {
 
58
  //Check ajax action of request that succeeded
59
  if( typeof settings != "undefined" && settings.data && ~settings.data.indexOf("action=add-tag") && ~settings.data.indexOf("taxonomy=pwb-brand") ) {
60
  $('#pwb_brand_image').val('');
61
  $('#pwb_brand_banner').val('');
62
  $('.pwb_brand_image_selected').remove();
63
  }
64
- });
 
65
 
66
  function add_delete_link( $imageSelectorScope ){
67
 
@@ -271,4 +273,71 @@ jQuery( function ( $ ) {
271
  }
272
  /* ····························· /Widgets ····························· */
273
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  });
54
  });
55
 
56
  //clear custom fields when brand is added
57
+ if( $('body').hasClass('edit-tags-php') && $('body').hasClass('taxonomy-pwb-brand') ){
58
+ jQuery( document ).ajaxSuccess(function( event, xhr, settings ) {
59
  //Check ajax action of request that succeeded
60
  if( typeof settings != "undefined" && settings.data && ~settings.data.indexOf("action=add-tag") && ~settings.data.indexOf("taxonomy=pwb-brand") ) {
61
  $('#pwb_brand_image').val('');
62
  $('#pwb_brand_banner').val('');
63
  $('.pwb_brand_image_selected').remove();
64
  }
65
+ });
66
+ }
67
 
68
  function add_delete_link( $imageSelectorScope ){
69
 
273
  }
274
  /* ····························· /Widgets ····························· */
275
 
276
+ /* ····························· Brands exporter ····························· */
277
+ $('button.pwb-brands-export').on('click', function(e){
278
+ e.preventDefault();
279
+
280
+ var $clickedBtn = $(this);
281
+ $clickedBtn.addClass('pwb-loading-overlay');
282
+ $clickedBtn.prop("disabled",true);
283
+
284
+ var data = { 'action': 'pwb_brands_export' };
285
+ $.post(ajax_object.ajax_url, data, function(response) {
286
+
287
+ if( response.success ){
288
+ $clickedBtn.removeClass('pwb-loading-overlay');
289
+ $clickedBtn.prop("disabled",false);
290
+
291
+ //descarga el archivo json de exportación
292
+ $('#pwb-download-export-file').remove();
293
+ var link = document.createElement("a");
294
+ link.download = 'brands.json';
295
+ link.id = 'pwb-download-export-file';
296
+ link.href = response.data.export_file_url;
297
+ $('body').append( link );
298
+ link.click();
299
+ }
300
+
301
+ });
302
+
303
+ });
304
+
305
+ $('button.pwb-brands-import').on('click', function(e){
306
+ e.preventDefault();
307
+ $('input.pwb-brands-import-file').trigger('click');
308
+ });
309
+ $('input.pwb-brands-import-file').on('change', function(e){
310
+ e.preventDefault();
311
+
312
+ var $clickedBtn = $('button.pwb-brands-import');
313
+ $clickedBtn.addClass('pwb-loading-overlay');
314
+ $clickedBtn.prop("disabled",true);
315
+
316
+ var file = $(this)[0].files[0];
317
+
318
+ var reqData = new FormData();
319
+ reqData.append('action', 'pwb_brands_import');
320
+ reqData.append('file', file);
321
+
322
+ $.ajax({
323
+ url: ajax_object.ajax_url,
324
+ type: 'post',
325
+ cache: false,
326
+ dataType: 'json',
327
+ contentType: false,
328
+ processData: false,
329
+ data: reqData,
330
+ success: function( resp ){
331
+ if( resp.success ){
332
+ $clickedBtn.removeClass('pwb-loading-overlay');
333
+ location.reload();
334
+ }else{
335
+ alert('Importer error');
336
+ }
337
+ }
338
+ });
339
+
340
+ })
341
+ /* ····························· /Brands exporter ····························· */
342
+
343
  });
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())});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")}})}});
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")}}})})});
assets/js/functions-frontend.js CHANGED
@@ -5,107 +5,113 @@ jQuery( function ( $ ) {
5
  location.href = href;
6
  });
7
 
8
- $('.pwb-carousel').slick({
9
- slide: '.pwb-slick-slide',
10
- infinite: true,
11
- draggable: false,
12
- prevArrow: '<div class="slick-prev"><span title="Prev">&lt;</span></div>',
13
- nextArrow: '<div class="slick-next"><span title="Next">&gt;</span></div>',
14
- speed: 300,
15
- lazyLoad: 'progressive',
16
- responsive: [
17
- {
18
- breakpoint: 1024,
19
- settings: {
20
- slidesToShow: 4,
21
- draggable: true,
22
- arrows: false
23
- }
24
- },
25
- {
26
- breakpoint: 600,
27
- settings: {
28
- slidesToShow: 3,
29
- draggable: true,
30
- arrows: false
31
- }
32
- },
33
- {
34
- breakpoint: 480,
35
- settings: {
36
- slidesToShow: 2,
37
- draggable: true,
38
- arrows: false
39
- }
40
- }
41
- ]
42
- });
 
 
43
 
44
- $('.pwb-product-carousel').slick({
45
- slide: '.pwb-slick-slide',
46
- infinite: true,
47
- draggable: false,
48
- prevArrow: '<div class="slick-prev"><span title="Prev">&lt;</span></div>',
49
- nextArrow: '<div class="slick-next"><span title="Next">&gt;</span></div>',
50
- speed: 300,
51
- lazyLoad: 'progressive',
52
- responsive: [
53
- {
54
- breakpoint: 1024,
55
- settings: {
56
- slidesToShow: 3,
57
- draggable: true,
58
- arrows: false
59
- }
60
- },
61
- {
62
- breakpoint: 600,
63
- settings: {
64
- slidesToShow: 2,
65
- draggable: true,
66
- arrows: false
67
- }
68
- },
69
- {
70
- breakpoint: 480,
71
- settings: {
72
- slidesToShow: 1,
73
- draggable: true,
74
- arrows: false
75
- }
76
- }
77
- ]
78
- });
79
 
 
80
 
81
  /* ··························· Filter by brand widget ··························· */
82
 
83
  var PWBFilterByBrand = function(){
84
 
 
85
  var currentUrl = window.location.href;
86
 
87
- var marcas = '';
88
  $('.pwb-filter-products input[type="checkbox"]').each(function(index){
89
- var checked = $(this).prop('checked');
90
- if(checked){
91
- marcas+=$(this).val();
92
- if($('.pwb-filter-products input[type="checkbox"]').length-1 != index){
93
- marcas+=',';
94
- }
95
- }
96
  });
 
 
 
97
 
98
- //removes previous "pwb-brand" from url
99
- currentUrl = currentUrl.replace(/&?pwb-brand-filter=([^&]$|[^&]*)/i, "");
100
 
101
- //removes pagination
102
- currentUrl = currentUrl.replace(/\/page\/\d*\//i, "");
 
 
 
 
 
 
103
 
104
- if( currentUrl.indexOf("?") === -1 ){
105
- currentUrl = currentUrl + '?pwb-brand-filter='+marcas;
106
  }else{
107
- currentUrl = currentUrl + '&pwb-brand-filter='+marcas;
108
  }
 
109
  location.href = currentUrl;
110
 
111
  }
5
  location.href = href;
6
  });
7
 
8
+ if( typeof $.fn.slick === 'function' ){
9
+
10
+ $('.pwb-carousel').slick({
11
+ slide: '.pwb-slick-slide',
12
+ infinite: true,
13
+ draggable: false,
14
+ prevArrow: '<div class="slick-prev"><span title="Prev">&lt;</span></div>',
15
+ nextArrow: '<div class="slick-next"><span title="Next">&gt;</span></div>',
16
+ speed: 300,
17
+ lazyLoad: 'progressive',
18
+ responsive: [
19
+ {
20
+ breakpoint: 1024,
21
+ settings: {
22
+ slidesToShow: 4,
23
+ draggable: true,
24
+ arrows: false
25
+ }
26
+ },
27
+ {
28
+ breakpoint: 600,
29
+ settings: {
30
+ slidesToShow: 3,
31
+ draggable: true,
32
+ arrows: false
33
+ }
34
+ },
35
+ {
36
+ breakpoint: 480,
37
+ settings: {
38
+ slidesToShow: 2,
39
+ draggable: true,
40
+ arrows: false
41
+ }
42
+ }
43
+ ]
44
+ });
45
 
46
+ $('.pwb-product-carousel').slick({
47
+ slide: '.pwb-slick-slide',
48
+ infinite: true,
49
+ draggable: false,
50
+ prevArrow: '<div class="slick-prev"><span title="Prev">&lt;</span></div>',
51
+ nextArrow: '<div class="slick-next"><span title="Next">&gt;</span></div>',
52
+ speed: 300,
53
+ lazyLoad: 'progressive',
54
+ responsive: [
55
+ {
56
+ breakpoint: 1024,
57
+ settings: {
58
+ slidesToShow: 3,
59
+ draggable: true,
60
+ arrows: false
61
+ }
62
+ },
63
+ {
64
+ breakpoint: 600,
65
+ settings: {
66
+ slidesToShow: 2,
67
+ draggable: true,
68
+ arrows: false
69
+ }
70
+ },
71
+ {
72
+ breakpoint: 480,
73
+ settings: {
74
+ slidesToShow: 1,
75
+ draggable: true,
76
+ arrows: false
77
+ }
78
+ }
79
+ ]
80
+ });
81
 
82
+ }
83
 
84
  /* ··························· Filter by brand widget ··························· */
85
 
86
  var PWBFilterByBrand = function(){
87
 
88
+ var baseUrl = [location.protocol, '//', location.host, location.pathname].join('');
89
  var currentUrl = window.location.href;
90
 
91
+ var marcas = [];
92
  $('.pwb-filter-products input[type="checkbox"]').each(function(index){
93
+ if( $(this).prop('checked') ) marcas.push( $(this).val() );
 
 
 
 
 
 
94
  });
95
+ marcas = marcas.join();
96
+
97
+ if( marcas ){
98
 
99
+ //removes previous "pwb-brand" from url
100
+ currentUrl = currentUrl.replace(/&?pwb-brand-filter=([^&]$|[^&]*)/i, "");
101
 
102
+ //removes pagination
103
+ currentUrl = currentUrl.replace(/\/page\/\d*\//i, "");
104
+
105
+ if( currentUrl.indexOf("?") === -1 ){
106
+ currentUrl = currentUrl + '?pwb-brand-filter='+marcas;
107
+ }else{
108
+ currentUrl = currentUrl + '&pwb-brand-filter='+marcas;
109
+ }
110
 
 
 
111
  }else{
112
+ currentUrl = baseUrl;
113
  }
114
+
115
  location.href = currentUrl;
116
 
117
  }
assets/js/functions-frontend.min.js CHANGED
@@ -1 +1 @@
1
- jQuery(function(e){e(".pwb-dropdown-widget").on("change",function(){var g=e(this).find(":selected").val();location.href=g});e(".pwb-carousel").slick({slide:".pwb-slick-slide",infinite:true,draggable:false,prevArrow:'<div class="slick-prev"><span title="Prev">&lt;</span></div>',nextArrow:'<div class="slick-next"><span title="Next">&gt;</span></div>',speed:300,lazyLoad:"progressive",responsive:[{breakpoint:1024,settings:{slidesToShow:4,draggable:true,arrows:false}},{breakpoint:600,settings:{slidesToShow:3,draggable:true,arrows:false}},{breakpoint:480,settings:{slidesToShow:2,draggable:true,arrows:false}}]});e(".pwb-product-carousel").slick({slide:".pwb-slick-slide",infinite:true,draggable:false,prevArrow:'<div class="slick-prev"><span title="Prev">&lt;</span></div>',nextArrow:'<div class="slick-next"><span title="Next">&gt;</span></div>',speed:300,lazyLoad:"progressive",responsive:[{breakpoint:1024,settings:{slidesToShow:3,draggable:true,arrows:false}},{breakpoint:600,settings:{slidesToShow:2,draggable:true,arrows:false}},{breakpoint:480,settings:{slidesToShow:1,draggable:true,arrows:false}}]});var f=function(){var h=window.location.href;var g="";e('.pwb-filter-products input[type="checkbox"]').each(function(i){var j=e(this).prop("checked");if(j){g+=e(this).val();if(e('.pwb-filter-products input[type="checkbox"]').length-1!=i){g+=","}}});h=h.replace(/&?pwb-brand-filter=([^&]$|[^&]*)/i,"");h=h.replace(/\/page\/\d*\//i,"");if(h.indexOf("?")===-1){h=h+"?pwb-brand-filter="+g}else{h=h+"&pwb-brand-filter="+g}location.href=h};e(".pwb-filter-products button").on("click",function(){f()});e(".pwb-filter-products.pwb-hide-submit-btn input").on("change",function(){f()});var d=PWBgetUrlParameter("pwb-brand-filter");if(d!=null){var b=d.split(",");e('.pwb-filter-products input[type="checkbox"]').prop("checked",false);for(var c=0,a=b.length;c<a;c++){e('.pwb-filter-products input[type="checkbox"]').each(function(g){if(e(this).val()){if(b[c]==e(this).val()){e(this).prop("checked",true)}}})}}else{e('.pwb-filter-products input[type="checkbox"]').prop("checked",false)}});var PWBgetUrlParameter=function PWBgetUrlParameter(a){var d=decodeURIComponent(window.location.search.substring(1)),c=d.split("&"),e,b;for(b=0;b<c.length;b++){e=c[b].split("=");if(e[0]===a){return e[1]===undefined?true:e[1]}}};
1
+ jQuery(function(e){e(".pwb-dropdown-widget").on("change",function(){var g=e(this).find(":selected").val();location.href=g});if(typeof e.fn.slick==="function"){e(".pwb-carousel").slick({slide:".pwb-slick-slide",infinite:true,draggable:false,prevArrow:'<div class="slick-prev"><span title="Prev">&lt;</span></div>',nextArrow:'<div class="slick-next"><span title="Next">&gt;</span></div>',speed:300,lazyLoad:"progressive",responsive:[{breakpoint:1024,settings:{slidesToShow:4,draggable:true,arrows:false}},{breakpoint:600,settings:{slidesToShow:3,draggable:true,arrows:false}},{breakpoint:480,settings:{slidesToShow:2,draggable:true,arrows:false}}]});e(".pwb-product-carousel").slick({slide:".pwb-slick-slide",infinite:true,draggable:false,prevArrow:'<div class="slick-prev"><span title="Prev">&lt;</span></div>',nextArrow:'<div class="slick-next"><span title="Next">&gt;</span></div>',speed:300,lazyLoad:"progressive",responsive:[{breakpoint:1024,settings:{slidesToShow:3,draggable:true,arrows:false}},{breakpoint:600,settings:{slidesToShow:2,draggable:true,arrows:false}},{breakpoint:480,settings:{slidesToShow:1,draggable:true,arrows:false}}]})}var f=function(){var h=[location.protocol,"//",location.host,location.pathname].join("");var i=window.location.href;var g=[];e('.pwb-filter-products input[type="checkbox"]').each(function(j){if(e(this).prop("checked")){g.push(e(this).val())}});g=g.join();if(g){i=i.replace(/&?pwb-brand-filter=([^&]$|[^&]*)/i,"");i=i.replace(/\/page\/\d*\//i,"");if(i.indexOf("?")===-1){i=i+"?pwb-brand-filter="+g}else{i=i+"&pwb-brand-filter="+g}}else{i=h}location.href=i};e(".pwb-filter-products button").on("click",function(){f()});e(".pwb-filter-products.pwb-hide-submit-btn input").on("change",function(){f()});var d=PWBgetUrlParameter("pwb-brand-filter");if(d!=null){var b=d.split(",");e('.pwb-filter-products input[type="checkbox"]').prop("checked",false);for(var c=0,a=b.length;c<a;c++){e('.pwb-filter-products input[type="checkbox"]').each(function(g){if(e(this).val()){if(b[c]==e(this).val()){e(this).prop("checked",true)}}})}}else{e('.pwb-filter-products input[type="checkbox"]').prop("checked",false)}});var PWBgetUrlParameter=function PWBgetUrlParameter(a){var d=decodeURIComponent(window.location.search.substring(1)),c=d.split("&"),e,b;for(b=0;b<c.length;b++){e=c[b].split("=");if(e[0]===a){return e[1]===undefined?true:e[1]}}};
classes/admin/class-brands-custom-fields.php CHANGED
@@ -161,10 +161,11 @@ class Brands_Custom_Fields {
161
 
162
  /* ·············· Brand desc ·············· */
163
  if( isset( $_POST['pwb_brand_description_field'] ) ){
164
- $desc = strip_tags(
165
- wp_unslash( $_POST['pwb_brand_description_field'] ),
166
  '<p><span><a><ul><ol><li><h1><h2><h3><h4><h5><h6><pre><strong><em><blockquote><del><ins><img><code><hr>'
167
  );
 
168
  global $wpdb;
169
  $wpdb->update( $wpdb->term_taxonomy, [ 'description' => $desc ], [ 'term_id' => $term_id ] );
170
  }
161
 
162
  /* ·············· Brand desc ·············· */
163
  if( isset( $_POST['pwb_brand_description_field'] ) ){
164
+ $allowed_tags = apply_filters(
165
+ 'pwb_description_allowed_tags',
166
  '<p><span><a><ul><ol><li><h1><h2><h3><h4><h5><h6><pre><strong><em><blockquote><del><ins><img><code><hr>'
167
  );
168
+ $desc = strip_tags( wp_unslash( $_POST['pwb_brand_description_field'] ), $allowed_tags );
169
  global $wpdb;
170
  $wpdb->update( $wpdb->term_taxonomy, [ 'description' => $desc ], [ 'term_id' => $term_id ] );
171
  }
classes/admin/class-brands-exporter.php ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Perfect_Woocommerce_Brands\Admin;
3
+
4
+ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
5
+
6
+ class Brands_Exporter {
7
+
8
+ function __construct(){
9
+ add_action( 'after-pwb-brand-table', array( $this, 'exporter_button' ) );
10
+ add_action( 'wp_ajax_pwb_brands_export', array( $this, 'export_brands' ) );
11
+ add_action( 'wp_ajax_pwb_brands_import', array( $this, 'import_brands' ) );
12
+ }
13
+
14
+ public function exporter_button(){
15
+ echo \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::render_template(
16
+ 'brands-exporter', 'admin', array( 'ok' => 'va' )
17
+ );
18
+ }
19
+
20
+ public function export_brands(){
21
+ $this->get_brands();
22
+ wp_die();
23
+ }
24
+
25
+ private function get_brands(){
26
+
27
+ $brands_data = array();
28
+
29
+ $brands = get_terms( 'pwb-brand',array( 'hide_empty' => false ) );
30
+ foreach( $brands as $brand ){
31
+
32
+ $current_brand = array(
33
+ 'slug' => $brand->slug,
34
+ 'name' => $brand->name,
35
+ 'banner_link' => get_term_meta( $brand->term_id, 'pwb_brand_banner_link', true ),
36
+ 'desc' => htmlentities( $brand->description )
37
+ );
38
+
39
+ $image = get_term_meta( $brand->term_id, 'pwb_brand_image', true );
40
+ $image = wp_get_attachment_image_src( $image, 'full' );
41
+ if( $image ) $current_brand['image'] = $image[0];
42
+
43
+ $banner = get_term_meta( $brand->term_id, 'pwb_brand_banner', true );
44
+ $banner = wp_get_attachment_image_src( $banner, 'full' );
45
+ if( $banner ) $current_brand['banner'] = $banner[0];
46
+
47
+ $brands_data[] = $current_brand;
48
+
49
+ }
50
+
51
+ $export_file = fopen( WP_CONTENT_DIR . '/uploads/pwb-export.json', 'w' );
52
+ fwrite( $export_file, json_encode( $brands_data ) );
53
+ fclose( $export_file );
54
+
55
+ $result = array( 'export_file_url' => WP_CONTENT_URL . '/uploads/pwb-export.json' );
56
+
57
+ wp_send_json_success( $result );
58
+
59
+ }
60
+
61
+ public function import_brands(){
62
+
63
+ if( isset( $_FILES['file'] ) ){
64
+ $file = $_FILES['file'];
65
+
66
+ $file_content = json_decode( file_get_contents( $file['tmp_name'] ), true );
67
+
68
+ if( is_array( $file_content ) ){
69
+
70
+ foreach( $file_content as $brand ){
71
+
72
+ $new_brand = wp_insert_term( $brand['name'], 'pwb-brand', array(
73
+ 'slug' => $brand['slug'],
74
+ 'description' => html_entity_decode( $brand['desc'] )
75
+ ));
76
+
77
+ if( !is_wp_error( $new_brand ) ){
78
+
79
+ if( !empty( $brand['image'] ) )
80
+ $this->upload_remote_image_and_attach( $brand['image'], $new_brand['term_id'], 'pwb_brand_image' );
81
+ if( !empty( $brand['banner'] ) )
82
+ $this->upload_remote_image_and_attach( $brand['banner'], $new_brand['term_id'], 'pwb_brand_banner' );
83
+ if( !empty( $brand['banner_link'] ) )
84
+ update_term_meta( $new_brand['term_id'], 'pwb_brand_banner_link', $brand['banner_link'], true );
85
+
86
+ }
87
+
88
+ }
89
+
90
+ wp_send_json_success();
91
+
92
+ }else{
93
+ wp_send_json_error();
94
+ }
95
+
96
+
97
+
98
+ }else{
99
+ wp_send_json_error();
100
+ }
101
+
102
+ wp_die();
103
+ }
104
+
105
+ private function upload_remote_image_and_attach( $image_url, $term_id, $meta_key ){
106
+
107
+ $get = wp_remote_get( $image_url );
108
+ $type = wp_remote_retrieve_header( $get, 'content-type' );
109
+
110
+ if( !$type ) return false;
111
+
112
+ $mirror = wp_upload_bits( basename( $image_url ), '', wp_remote_retrieve_body( $get ) );
113
+
114
+ $attachment = array(
115
+ 'post_title' => basename( $image_url ),
116
+ 'post_mime_type' => $type
117
+ );
118
+
119
+ $attach_id = wp_insert_attachment( $attachment, $mirror['file'] );
120
+ require_once ABSPATH . 'wp-admin/includes/image.php';
121
+ $attach_data = wp_generate_attachment_metadata( $attach_id, $mirror['file'] );
122
+ wp_update_attachment_metadata( $attach_id, $attach_data );
123
+
124
+ update_term_meta( $term_id, $meta_key, $attach_id, true );
125
+
126
+ }
127
+
128
+ }
classes/admin/class-edit-brands-page.php CHANGED
@@ -108,7 +108,7 @@ class Edit_Brands_Page {
108
  $direction = 'up';
109
  $brand = intval( $_POST['brand'] );
110
  if( $this->is_featured_brand( $brand ) ){
111
- update_term_meta( $brand, 'pwb_featured_brand', false );
112
  $direction = 'down';
113
  }else{
114
  update_term_meta( $brand, 'pwb_featured_brand', true );
108
  $direction = 'up';
109
  $brand = intval( $_POST['brand'] );
110
  if( $this->is_featured_brand( $brand ) ){
111
+ delete_term_meta( $brand, 'pwb_featured_brand', true );
112
  $direction = 'down';
113
  }else{
114
  update_term_meta( $brand, 'pwb_featured_brand', true );
classes/admin/class-pwb-admin-tab.php CHANGED
@@ -62,10 +62,7 @@
62
 
63
  $available_image_sizes_adapted = array();
64
  $available_image_sizes = get_intermediate_image_sizes();
65
-
66
- foreach($available_image_sizes as $image_size){
67
- $available_image_sizes_adapted[$image_size] = $image_size;
68
- }
69
  $available_image_sizes_adapted['full'] = 'full';
70
 
71
  $settings = array(
@@ -152,6 +149,13 @@
152
  'after_sharing' => __( 'After sharing', 'perfect-woocommerce-brands' )
153
  )
154
  ),
 
 
 
 
 
 
 
155
  'section_end' => array(
156
  'type' => 'sectionend',
157
  'id' => 'wc_pwb_admin_tab_section_end'
62
 
63
  $available_image_sizes_adapted = array();
64
  $available_image_sizes = get_intermediate_image_sizes();
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(
149
  'after_sharing' => __( 'After sharing', 'perfect-woocommerce-brands' )
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',
161
  'id' => 'wc_pwb_admin_tab_section_end'
classes/admin/class-pwb-coupon.php CHANGED
@@ -64,7 +64,11 @@
64
  $selected_brands = get_post_meta( $coupon_id, '_pwb_coupon_restriction', true );
65
  if ( empty( $selected_brands ) ) return $valid;
66
 
67
- $product_id = is_callable( array( $product, 'get_id' ) ) ? $product->get_id() : $product->id;
 
 
 
 
68
  $product_brands = wp_get_post_terms( $product_id, 'pwb-brand', array( 'fields' => 'ids' ) );
69
  $valid_brands = array_intersect( $selected_brands, $product_brands );
70
  return !empty( $valid_brands );
64
  $selected_brands = get_post_meta( $coupon_id, '_pwb_coupon_restriction', true );
65
  if ( empty( $selected_brands ) ) return $valid;
66
 
67
+ if( $product->is_type( 'variation' ) ){
68
+ $product_id = $product->get_parent_id();
69
+ }else{
70
+ $product_id = is_callable( array( $product, 'get_id' ) ) ? $product->get_id() : $product->id;
71
+ }
72
  $product_brands = wp_get_post_terms( $product_id, 'pwb-brand', array( 'fields' => 'ids' ) );
73
  $valid_brands = array_intersect( $selected_brands, $product_brands );
74
  return !empty( $valid_brands );
classes/class-perfect-woocommerce-brands.php CHANGED
@@ -11,7 +11,7 @@ class Perfect_Woocommerce_Brands{
11
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
12
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
13
  $this->brand_logo_position();
14
- $this->brand_desc_position();
15
  add_action( 'woocommerce_after_shop_loop_item_title', array( $this, 'show_brands_in_loop' ) );
16
  $this->add_shortcodes();
17
  if( is_plugin_active('js_composer/js_composer.php') || is_plugin_active('visual_composer/js_composer.php') ){
@@ -35,16 +35,18 @@ class Perfect_Woocommerce_Brands{
35
  remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
36
  });
37
  add_action( 'woocommerce_product_duplicate', array( $this, 'product_duplicate_save' ), 10, 2 );
 
 
38
  }
39
 
40
  public function review_notice(){
41
  $show_notice = get_option('wc_pwb_notice_plugin_review', true);
42
  $activate_on = get_option('pwb_activate_on', time());
43
  $now = time();
44
- $one_month = 2592000;
45
  $date_diff = $now - $activate_on;
46
 
47
- if ( $show_notice && $date_diff > $one_month ) {
48
  ?>
49
  <div class="notice notice-info pwb-notice-dismissible is-dismissible" data-notice="wc_pwb_notice_plugin_review">
50
  <p><?php echo __('We know that you´re in love with Perfect WooCommerce Brands, you can help us making it a bit better. Thanks a lot!', 'perfect-woocommerce-brands' ); ?><span class="dashicons dashicons-heart"></span></p>
@@ -152,6 +154,10 @@ class Perfect_Woocommerce_Brands{
152
  '\Perfect_Woocommerce_Brands\Shortcodes\PWB_All_Brands_Shortcode',
153
  'all_brands_shortcode'
154
  ) );
 
 
 
 
155
  add_shortcode( 'pwb-brand', array(
156
  '\Perfect_Woocommerce_Brands\Shortcodes\PWB_Brand_Shortcode',
157
  'brand_shortcode'
@@ -241,12 +247,18 @@ class Perfect_Woocommerce_Brands{
241
  }
242
 
243
  public function brand_desc_position(){
244
- $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
245
- if( !$show_desc || $show_desc == 'yes' ){
246
- add_action( 'woocommerce_before_shop_loop', array( $this, 'archive_page_banner' ), 9);
247
- }elseif( $show_desc == 'yes_after_loop' ){
248
- add_action( 'woocommerce_after_shop_loop', array( $this, 'archive_page_banner' ), 40);
 
 
 
 
 
249
  }
 
250
  }
251
 
252
  /*
@@ -448,6 +460,16 @@ class Perfect_Woocommerce_Brands{
448
 
449
  ));
450
 
 
 
 
 
 
 
 
 
 
 
451
  vc_map(array(
452
  "name" => __( "PWB brand", "perfect-woocommerce-brands" ),
453
  "description" => __( "Show brand for a specific product", "perfect-woocommerce-brands" ),
@@ -506,7 +528,7 @@ class Perfect_Woocommerce_Brands{
506
  $attachment_html = wp_get_attachment_image($attachment_id,$image_size);
507
 
508
  if( !empty($attachment_html) && $show_as=='brand_image' || !empty($attachment_html) && !$show_as ){
509
- echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$attachment_html.'</a>';
510
  }else{
511
  echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$brand->name.'</a>';
512
  }
@@ -525,7 +547,7 @@ class Perfect_Woocommerce_Brands{
525
 
526
  public function enqueue_scripts(){
527
 
528
- wp_enqueue_script(
529
  'pwb-lib-slick',
530
  PWB_PLUGIN . '/assets/lib/slick/slick.min.js',
531
  array('jquery'),
@@ -533,7 +555,7 @@ class Perfect_Woocommerce_Brands{
533
  true
534
  );
535
 
536
- wp_enqueue_style(
537
  'pwb-lib-slick',
538
  PWB_PLUGIN . '/assets/lib/slick/slick.css',
539
  array(),
@@ -544,7 +566,7 @@ class Perfect_Woocommerce_Brands{
544
  wp_enqueue_style(
545
  'pwb-styles-frontend',
546
  PWB_PLUGIN . '/assets/css/styles-frontend.min.css',
547
- array('pwb-lib-slick'),
548
  PWB_PLUGIN_VERSION,
549
  'all'
550
  );
@@ -552,7 +574,7 @@ class Perfect_Woocommerce_Brands{
552
  wp_enqueue_script(
553
  'pwb-functions-frontend',
554
  PWB_PLUGIN . '/assets/js/functions-frontend.min.js',
555
- array('jquery','pwb-lib-slick'),
556
  PWB_PLUGIN_VERSION,
557
  true
558
  );
@@ -692,38 +714,34 @@ class Perfect_Woocommerce_Brands{
692
  $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
693
  $show_desc_class = ( !$show_desc || $show_desc == 'yes' ) ? 'before-loop' : 'after-loop';
694
 
695
- if( is_tax('pwb-brand') ){
696
-
697
- $brand_banner = get_term_meta( $queried_object->term_id, 'pwb_brand_banner', true );
698
- $brand_banner_link = get_term_meta( $queried_object->term_id, 'pwb_brand_banner_link', true );
699
- $show_desc = get_option('wc_pwb_admin_tab_brand_desc');
700
-
701
- if( $brand_banner!='' || $queried_object->description != '' && $show_desc !== 'no' ){
702
- echo '<div class="pwb-brand-banner-cont '.$show_desc_class.'">';
703
- }
704
 
705
- //pwb-brand archive
706
- if( $brand_banner!='' ){
707
- echo '<div class="pwb-brand-banner pwb-clearfix">';
708
- if($brand_banner_link!=''){
709
- echo '<a href="'.site_url($brand_banner_link).'">'.wp_get_attachment_image ( $brand_banner, 'full', false ).'</a>';
710
- }else{
711
- echo wp_get_attachment_image ( $brand_banner, 'full', false );
712
- }
713
- echo '</div>';
714
- }
715
 
716
- //show brand description
717
- if( $queried_object->description != '' && $show_desc !== 'no' ){
718
- echo '<div class="pwb-brand-description">';
719
- echo do_shortcode( $queried_object->description );
720
- echo '</div>';
 
 
721
  }
 
 
722
 
723
- if( $brand_banner!='' || $queried_object->description != '' && $show_desc !== 'no' ){
 
 
 
724
  echo '</div>';
725
  }
726
 
 
 
727
  }
728
 
729
  }
@@ -741,4 +759,14 @@ class Perfect_Woocommerce_Brands{
741
  wp_set_object_terms( $duplicate->get_id(), $product_brands, 'pwb-brand' );
742
  }
743
 
 
 
 
 
 
 
 
 
 
 
744
  }
11
  add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
12
  add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
13
  $this->brand_logo_position();
14
+ add_action( 'parse_query', array( $this, 'brand_desc_position' ) );
15
  add_action( 'woocommerce_after_shop_loop_item_title', array( $this, 'show_brands_in_loop' ) );
16
  $this->add_shortcodes();
17
  if( is_plugin_active('js_composer/js_composer.php') || is_plugin_active('visual_composer/js_composer.php') ){
35
  remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
36
  });
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(){
43
  $show_notice = get_option('wc_pwb_notice_plugin_review', true);
44
  $activate_on = get_option('pwb_activate_on', time());
45
  $now = time();
46
+ $one_week = 604800;
47
  $date_diff = $now - $activate_on;
48
 
49
+ if ( $show_notice && $date_diff > $one_week ) {
50
  ?>
51
  <div class="notice notice-info pwb-notice-dismissible is-dismissible" data-notice="wc_pwb_notice_plugin_review">
52
  <p><?php echo __('We know that you´re in love with Perfect WooCommerce Brands, you can help us making it a bit better. Thanks a lot!', 'perfect-woocommerce-brands' ); ?><span class="dashicons dashicons-heart"></span></p>
154
  '\Perfect_Woocommerce_Brands\Shortcodes\PWB_All_Brands_Shortcode',
155
  'all_brands_shortcode'
156
  ) );
157
+ add_shortcode( 'pwb-az-listing', array(
158
+ '\Perfect_Woocommerce_Brands\Shortcodes\PWB_AZ_Listing_Shortcode',
159
+ 'shortcode'
160
+ ) );
161
  add_shortcode( 'pwb-brand', array(
162
  '\Perfect_Woocommerce_Brands\Shortcodes\PWB_Brand_Shortcode',
163
  'brand_shortcode'
247
  }
248
 
249
  public function brand_desc_position(){
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
  }
261
+
262
  }
263
 
264
  /*
460
 
461
  ));
462
 
463
+ vc_map(array(
464
+ "name" => __( "PWB AZ Listing", "perfect-woocommerce-brands" ),
465
+ "description" => __( "AZ Listing for brands", "perfect-woocommerce-brands" ),
466
+ "base" => "pwb-az-listing",
467
+ "class" => "",
468
+ "icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
469
+ "category" => "Woocommerce",
470
+ "params" => array()
471
+ ));
472
+
473
  vc_map(array(
474
  "name" => __( "PWB brand", "perfect-woocommerce-brands" ),
475
  "description" => __( "Show brand for a specific product", "perfect-woocommerce-brands" ),
528
  $attachment_html = wp_get_attachment_image($attachment_id,$image_size);
529
 
530
  if( !empty($attachment_html) && $show_as=='brand_image' || !empty($attachment_html) && !$show_as ){
531
+ echo '<a href="'.$brand_link.'" title="'.$brand->name.'">'.$attachment_html.'</a>';
532
  }else{
533
  echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$brand->name.'</a>';
534
  }
547
 
548
  public function enqueue_scripts(){
549
 
550
+ wp_register_script(
551
  'pwb-lib-slick',
552
  PWB_PLUGIN . '/assets/lib/slick/slick.min.js',
553
  array('jquery'),
555
  true
556
  );
557
 
558
+ wp_register_style(
559
  'pwb-lib-slick',
560
  PWB_PLUGIN . '/assets/lib/slick/slick.css',
561
  array(),
566
  wp_enqueue_style(
567
  'pwb-styles-frontend',
568
  PWB_PLUGIN . '/assets/css/styles-frontend.min.css',
569
+ array(),
570
  PWB_PLUGIN_VERSION,
571
  'all'
572
  );
574
  wp_enqueue_script(
575
  'pwb-functions-frontend',
576
  PWB_PLUGIN . '/assets/js/functions-frontend.min.js',
577
+ array('jquery'),
578
  PWB_PLUGIN_VERSION,
579
  true
580
  );
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
 
747
  }
759
  wp_set_object_terms( $duplicate->get_id(), $product_brands, 'pwb-brand' );
760
  }
761
 
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
+ }
769
+ return $crumbs;
770
+ }
771
+
772
  }
classes/class-pwb-api-support.php CHANGED
@@ -7,10 +7,7 @@ defined('ABSPATH') or die('No script kiddies please!');
7
 
8
  class PWB_API_Support{
9
 
10
- private $namespaces = array(
11
- "wc/v1",
12
- "wc/v2",
13
- );
14
  private $base = 'brands';
15
 
16
  function __construct(){
7
 
8
  class PWB_API_Support{
9
 
10
+ private $namespaces = array( "wc/v1", "wc/v2", "wc/v3" );
 
 
 
11
  private $base = 'brands';
12
 
13
  function __construct(){
classes/shortcodes/class-pwb-all-brands.php CHANGED
@@ -78,18 +78,18 @@ class PWB_All_Brands_Shortcode{
78
 
79
  <?php if( $title_position != 'none' && $title_position != 'after' ): ?>
80
  <p>
81
- <?php echo $brand_name;?>
82
  <small>(<?php echo $brand->count;?>)</small>
83
  </p>
84
  <?php endif; ?>
85
 
86
  <div>
87
- <a href="<?php echo $brand_link;?>" title="<?php _e( 'View brand', 'perfect-woocommerce-brands' );?>"><?php echo $attachment_html;?></a>
88
  </div>
89
 
90
  <?php if( $title_position != 'none' && $title_position == 'after' ): ?>
91
  <p>
92
- <?php echo $brand_name;?>
93
  <small>(<?php echo $brand->count;?>)</small>
94
  </p>
95
  <?php endif; ?>
78
 
79
  <?php if( $title_position != 'none' && $title_position != 'after' ): ?>
80
  <p>
81
+ <a href="<?php echo $brand_link;?>"><?php echo $brand_name;?></a>
82
  <small>(<?php echo $brand->count;?>)</small>
83
  </p>
84
  <?php endif; ?>
85
 
86
  <div>
87
+ <a href="<?php echo $brand_link;?>" title="<?php echo $brand_name;?>"><?php echo $attachment_html;?></a>
88
  </div>
89
 
90
  <?php if( $title_position != 'none' && $title_position == 'after' ): ?>
91
  <p>
92
+ <a href="<?php echo $brand_link;?>"><?php echo $brand_name;?></a>
93
  <small>(<?php echo $brand->count;?>)</small>
94
  </p>
95
  <?php endif; ?>
classes/shortcodes/class-pwb-az-listing.php ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Perfect_Woocommerce_Brands\Shortcodes;
3
+ use WP_Query;
4
+
5
+ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
6
+
7
+ class PWB_AZ_Listing_Shortcode{
8
+
9
+ public static function shortcode( $atts ) {
10
+
11
+ $atts = shortcode_atts( array(), $atts, 'pwb-az-listing' );
12
+
13
+ ob_start();
14
+
15
+ $brands = \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_brands( true, 'name', 'ASC' );
16
+ $grouped_brands = array();
17
+
18
+ $letter = null;
19
+ foreach( $brands as $brand ){
20
+ if( $letter != $brand->name[0] ) $letter = $brand->name[0];
21
+ $letter = strtolower( self::replace_specials_characters( $letter ) );
22
+ $grouped_brands[$letter][] = $brand;
23
+ }
24
+
25
+ //navigation
26
+ if( !empty( $grouped_brands ) ):
27
+ ?>
28
+ <div class="pwb-az-listing">
29
+
30
+ <div class="pwb-az-listing-header">
31
+ <ul class="pwb-clearfix">
32
+ <?php
33
+ foreach( $grouped_brands as $letter => $brand_group ):
34
+ ?>
35
+ <li><a href="#pwb-az-listing-<?php echo $letter;?>"><?php echo $letter;?></a></li>
36
+ <?php
37
+ endforeach;
38
+ ?>
39
+ </ul>
40
+ </div>
41
+
42
+ <div class="pwb-az-listing-content">
43
+ <?php
44
+
45
+ foreach( $grouped_brands as $letter => $brand_group ):
46
+ ?>
47
+ <div id="pwb-az-listing-<?php echo $letter;?>" class="pwb-az-listing-row pwb-clearfix">
48
+ <p class="pwb-az-listing-title"><?php echo $letter;?></p>
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>
56
+ </div>
57
+ <?php
58
+ endif;
59
+ endforeach;
60
+ ?>
61
+ </div>
62
+ </div>
63
+ <?php
64
+ endforeach;
65
+
66
+ ?>
67
+ </div>
68
+
69
+ </div>
70
+ <?php
71
+
72
+ endif;
73
+
74
+ return ob_get_clean();
75
+
76
+ }
77
+
78
+ protected static function replace_specials_characters($s){
79
+ $s = preg_replace("/á|à|â|ã|ª/","a",$s);
80
+ $s = preg_replace("/Á|À|Â|Ã/","A",$s);
81
+ $s = preg_replace("/é|è|ê/","e",$s);
82
+ $s = preg_replace("/É|È|Ê/","E",$s);
83
+ $s = preg_replace("/í|ì|î/","i",$s);
84
+ $s = preg_replace("/Í|Ì|Î/","I",$s);
85
+ $s = preg_replace("/ó|ò|ô|õ|º/","o",$s);
86
+ $s = preg_replace("/Ó|Ò|Ô|Õ/","O",$s);
87
+ $s = preg_replace("/ú|ù|û/","u",$s);
88
+ $s = preg_replace("/Ú|Ù|Û/","U",$s);
89
+
90
+ $s = preg_replace('/[^a-zA-Z0-9_.-]/', '', $s);
91
+ return $s;
92
+ }
93
+
94
+ private static function has_products( $brand_id ){
95
+
96
+ $args = array(
97
+ 'posts_per_page' => -1,
98
+ 'post_type' => 'product',
99
+ 'tax_query' => array(
100
+ array(
101
+ 'taxonomy' => 'pwb-brand',
102
+ 'field' => 'term_id',
103
+ 'terms' => array( $brand_id )
104
+ )
105
+ ),
106
+ 'fields' => 'ids'
107
+ );
108
+
109
+ if( get_option('woocommerce_hide_out_of_stock_items') === 'yes' ){
110
+ $args['meta_query'] = array(
111
+ array(
112
+ 'key' => '_stock_status',
113
+ 'value' => 'outofstock',
114
+ 'compare' => 'NOT IN'
115
+ )
116
+ );
117
+ }
118
+
119
+ $wp_query = new WP_Query($args);
120
+ wp_reset_postdata();
121
+ return $wp_query->posts;
122
+
123
+ }
124
+
125
+ }
classes/shortcodes/class-pwb-carousel.php CHANGED
@@ -19,6 +19,10 @@ class PWB_Carousel_Shortcode{
19
  'hide_empty' => false
20
  ), $atts, 'pwb-carousel' );
21
 
 
 
 
 
22
  return \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::render_template(
23
  'carousel',
24
  'shortcodes',
@@ -57,7 +61,7 @@ class PWB_Carousel_Shortcode{
57
  $attachment_html = $brand->name;
58
  if($attachment_id!='') $attachment_html = wp_get_attachment_image( $attachment_id, self::$atts['image_size'] );
59
 
60
- $brands[] = array( 'link' => $brand_link, 'attachment_html' => $attachment_html );
61
 
62
  $foreach_i++;
63
  }
19
  'hide_empty' => false
20
  ), $atts, 'pwb-carousel' );
21
 
22
+ //enqueue deps
23
+ if( !wp_style_is('pwb-lib-slick') ) wp_enqueue_style('pwb-lib-slick');
24
+ if( !wp_script_is('pwb-lib-slick') ) wp_enqueue_script('pwb-lib-slick');
25
+
26
  return \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::render_template(
27
  'carousel',
28
  'shortcodes',
61
  $attachment_html = $brand->name;
62
  if($attachment_id!='') $attachment_html = wp_get_attachment_image( $attachment_id, self::$atts['image_size'] );
63
 
64
+ $brands[] = array( 'link' => $brand_link, 'attachment_html' => $attachment_html, 'name' => $brand->name );
65
 
66
  $foreach_i++;
67
  }
classes/shortcodes/class-pwb-product-carousel.php CHANGED
@@ -18,6 +18,10 @@ class PWB_Product_Carousel_Shortcode{
18
  'arrows' => "false"
19
  ), $atts, 'pwb-product-carousel' );
20
 
 
 
 
 
21
  return \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::render_template(
22
  'product-carousel',
23
  'shortcodes',
18
  'arrows' => "false"
19
  ), $atts, 'pwb-product-carousel' );
20
 
21
+ //enqueue deps
22
+ if( !wp_style_is('pwb-lib-slick') ) wp_enqueue_style('pwb-lib-slick');
23
+ if( !wp_script_is('pwb-lib-slick') ) wp_enqueue_script('pwb-lib-slick');
24
+
25
  return \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::render_template(
26
  'product-carousel',
27
  'shortcodes',
classes/widgets/class-pwb-filter-by-brand.php CHANGED
@@ -19,7 +19,6 @@ class PWB_Filter_By_Brand_Widget extends \WP_Widget {
19
 
20
  $title = ( isset( $instance[ 'title' ] ) ) ? $instance[ 'title' ] : __('Brands', 'perfect-woocommerce-brands');
21
  $limit = ( isset( $instance[ 'limit' ] ) ) ? $instance[ 'limit' ] : 20;
22
- $hide_empty = ( isset( $hide_empty ) && $hide_empty == 'on' ) ? true : false;
23
  $hide_submit_btn = ( isset( $hide_submit_btn ) && $hide_submit_btn == 'on' ) ? true : false;
24
  ?>
25
  <p>
@@ -32,16 +31,6 @@ class PWB_Filter_By_Brand_Widget extends \WP_Widget {
32
  </label>
33
  <input class="widefat" id="<?php echo $this->get_field_id( 'limit' ); ?>" name="<?php echo $this->get_field_name( 'limit' ); ?>" type="text" value="<?php echo esc_attr( $limit ); ?>" />
34
  </p>
35
- <p>
36
- <input
37
- type="checkbox"
38
- id="<?php echo esc_attr( $this->get_field_id('hide_empty') ); ?>"
39
- name="<?php echo esc_attr( $this->get_field_name('hide_empty') ); ?>"
40
- <?php checked( $hide_empty ); ?>>
41
- <label for="<?php echo esc_attr( $this->get_field_id('hide_empty') ); ?>">
42
- <?php echo __( 'Hide empty', 'perfect-woocommerce-brands' );?>
43
- </label>
44
- </p>
45
  <p>
46
  <input
47
  type="checkbox"
@@ -62,8 +51,7 @@ class PWB_Filter_By_Brand_Widget extends \WP_Widget {
62
  $instance = array();
63
  $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : '';
64
  $instance['limit'] = ( $limit != false ) ? $limit : $old_instance['limit'];
65
- $instance['hide_empty'] = $new_instance['hide_empty'];
66
- $instance['hide_submit_btn'] = $new_instance['hide_submit_btn'];
67
  return $instance;
68
  }
69
 
@@ -74,16 +62,12 @@ class PWB_Filter_By_Brand_Widget extends \WP_Widget {
74
  if( !is_tax('pwb-brand') && !is_product() ){
75
 
76
  $hide_submit_btn = ( isset( $hide_submit_btn ) && $hide_submit_btn == 'on' ) ? true : false;
77
- $hide_empty = ( isset( $hide_empty ) && $hide_empty == 'on' ) ? true : false;
78
- $brands = get_terms( 'pwb-brand', array( 'hide_empty' => $hide_empty ) );
79
- $brands_ids = array();
80
- foreach( $brands as $brand ) $brands_ids[] = $brand->term_id;
81
 
82
  $show_widget = true;
83
- $current_products_query = false;
84
- if( is_product_category() ){
85
- $current_products_query = $this->current_products_query( $brands_ids );
86
- if( !$current_products_query->have_posts() ) $show_widget = false;
87
  }
88
 
89
  if( $show_widget ){
@@ -94,7 +78,7 @@ class PWB_Filter_By_Brand_Widget extends \WP_Widget {
94
 
95
  echo $args['before_widget'];
96
  if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title'];
97
- $this->render_widget( $current_products_query, $brands_ids, $limit, $hide_submit_btn );
98
  echo $args['after_widget'];
99
  }
100
 
@@ -102,39 +86,40 @@ class PWB_Filter_By_Brand_Widget extends \WP_Widget {
102
 
103
  }
104
 
105
- public function render_widget( $the_query, $brands_ids, $limit, $hide_submit_btn ){
106
-
107
- if( is_product_category() ){
108
 
109
- if( $the_query->have_posts() ) {
110
- while ( $the_query->have_posts() ) {
111
- $the_query->the_post();
112
 
113
- $product_brands = wp_get_post_terms(get_the_ID(), 'pwb-brand');
114
- foreach ($product_brands as $brand) $result_brands[] = $brand->term_id;
 
 
 
115
  }
 
116
  }
117
- wp_reset_postdata();
118
 
119
- $cate = get_queried_object();
120
- $cateID = $cate->term_id;
121
- $cate_url = get_term_link($cateID);
122
-
123
- if( $limit > 0 ) $result_brands = array_slice( $result_brands, 0, $limit );
 
 
124
 
125
  }else{
126
  //no product category
127
- $cate_url = get_permalink( wc_get_page_id( 'shop' ));
128
- $result_brands = $brands_ids;
129
- if( $limit > 0 ) $result_brands = array_slice( $brands_ids, 0, $limit );
130
  }
131
 
 
 
132
  global $wp;
133
  $current_url = home_url(add_query_arg(array(),$wp->request));
134
 
135
  if( !empty( $result_brands ) ){
136
 
137
- $result_brands = array_unique($result_brands);
138
  $result_brands_ordered = array();
139
  foreach( $result_brands as $brand ){
140
  $brand = get_term($brand);
@@ -154,33 +139,45 @@ class PWB_Filter_By_Brand_Widget extends \WP_Widget {
154
 
155
  }
156
 
157
- private function current_products_query( $brands_ids ){
158
 
159
- $cat = get_queried_object();
160
- $cat_id = $cat->term_taxonomy_id;
161
- $cat_id_array = get_term_children( $cat_id, 'product_cat' );
162
- $cat_id_array[] = $cat_id;
163
-
164
- $result_brands = array();
165
  $args = array(
166
  'posts_per_page' => -1,
167
  'post_type' => 'product',
168
  'tax_query' => array(
169
- 'relation' => 'AND',
170
- array(
171
- 'taxonomy' => 'product_cat',
172
- 'field' => 'term_id',
173
- 'terms' => $cat_id_array
174
- ),
175
  array(
176
  'taxonomy' => 'pwb-brand',
177
- 'field' => 'term_id',
178
- 'terms' => $brands_ids
179
  )
180
- )
 
181
  );
182
 
183
- return new WP_Query($args);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
185
  }
186
 
19
 
20
  $title = ( isset( $instance[ 'title' ] ) ) ? $instance[ 'title' ] : __('Brands', 'perfect-woocommerce-brands');
21
  $limit = ( isset( $instance[ 'limit' ] ) ) ? $instance[ 'limit' ] : 20;
 
22
  $hide_submit_btn = ( isset( $hide_submit_btn ) && $hide_submit_btn == 'on' ) ? true : false;
23
  ?>
24
  <p>
31
  </label>
32
  <input class="widefat" id="<?php echo $this->get_field_id( 'limit' ); ?>" name="<?php echo $this->get_field_name( 'limit' ); ?>" type="text" value="<?php echo esc_attr( $limit ); ?>" />
33
  </p>
 
 
 
 
 
 
 
 
 
 
34
  <p>
35
  <input
36
  type="checkbox"
51
  $instance = array();
52
  $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : '';
53
  $instance['limit'] = ( $limit != false ) ? $limit : $old_instance['limit'];
54
+ $instance['hide_submit_btn'] = ( isset( $new_instance['hide_submit_btn'] ) ) ? $new_instance['hide_submit_btn'] : '';
 
55
  return $instance;
56
  }
57
 
62
  if( !is_tax('pwb-brand') && !is_product() ){
63
 
64
  $hide_submit_btn = ( isset( $hide_submit_btn ) && $hide_submit_btn == 'on' ) ? true : false;
 
 
 
 
65
 
66
  $show_widget = true;
67
+ $current_products = false;
68
+ if( is_product_category() || is_shop() ){
69
+ $current_products = $this->current_products_query();
70
+ if( empty( $current_products ) ) $show_widget = false;
71
  }
72
 
73
  if( $show_widget ){
78
 
79
  echo $args['before_widget'];
80
  if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title'];
81
+ $this->render_widget( $current_products, $limit, $hide_submit_btn );
82
  echo $args['after_widget'];
83
  }
84
 
86
 
87
  }
88
 
89
+ public function render_widget( $current_products, $limit, $hide_submit_btn ){
 
 
90
 
91
+ if( is_product_category() || is_shop() ){
 
 
92
 
93
+ if( !empty( $current_products ) ) {
94
+ $result_brands = array();
95
+ foreach( $current_products as $product_id ) {
96
+ $product_brands = wp_get_post_terms($product_id, 'pwb-brand');
97
+ foreach($product_brands as $brand) $result_brands[] = $brand->term_id;
98
  }
99
+ $result_brands = array_unique($result_brands);
100
  }
 
101
 
102
+ if( is_shop() ){
103
+ $cate_url = get_permalink( wc_get_page_id( 'shop' ) );
104
+ }else{
105
+ $cate = get_queried_object();
106
+ $cateID = $cate->term_id;
107
+ $cate_url = get_term_link($cateID);
108
+ }
109
 
110
  }else{
111
  //no product category
112
+ $cate_url = get_permalink( wc_get_page_id( 'shop' ) );
113
+ $result_brands = get_terms( 'pwb-brand', array( 'hide_empty' => true, 'fields' => 'ids' ) );
 
114
  }
115
 
116
+ if( $limit > 0 ) $result_brands = array_slice( $result_brands, 0, $limit );
117
+
118
  global $wp;
119
  $current_url = home_url(add_query_arg(array(),$wp->request));
120
 
121
  if( !empty( $result_brands ) ){
122
 
 
123
  $result_brands_ordered = array();
124
  foreach( $result_brands as $brand ){
125
  $brand = get_term($brand);
139
 
140
  }
141
 
142
+ private function current_products_query(){
143
 
 
 
 
 
 
 
144
  $args = array(
145
  'posts_per_page' => -1,
146
  'post_type' => 'product',
147
  'tax_query' => array(
 
 
 
 
 
 
148
  array(
149
  'taxonomy' => 'pwb-brand',
150
+ 'operator' => 'EXISTS'
 
151
  )
152
+ ),
153
+ 'fields' => 'ids'
154
  );
155
 
156
+ $cat = get_queried_object();
157
+ if( is_a( $cat, 'WP_Term' ) ){
158
+ $cat_id = $cat->term_taxonomy_id;
159
+ $cat_id_array = get_term_children( $cat_id, 'product_cat' );
160
+ $cat_id_array[] = $cat_id;
161
+ $args['tax_query'][] = array(
162
+ 'taxonomy' => 'product_cat',
163
+ 'field' => 'term_id',
164
+ 'terms' => $cat_id_array
165
+ );
166
+ }
167
+
168
+ if( get_option('woocommerce_hide_out_of_stock_items') === 'yes' ){
169
+ $args['meta_query'] = array(
170
+ array(
171
+ 'key' => '_stock_status',
172
+ 'value' => 'outofstock',
173
+ 'compare' => 'NOT IN'
174
+ )
175
+ );
176
+ }
177
+
178
+ $wp_query = new WP_Query($args);
179
+ wp_reset_postdata();
180
+ return $wp_query->posts;
181
 
182
  }
183
 
lang/perfect-woocommerce-brands-es_ES.mo CHANGED
Binary file
lang/perfect-woocommerce-brands-es_ES.po CHANGED
@@ -7,8 +7,8 @@ msgid ""
7
  msgstr ""
8
  "Project-Id-Version: \n"
9
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2018-03-05 00:01+0100\n"
11
- "PO-Revision-Date: 2018-03-05 20:29+0100\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
  "Language: \n"
@@ -18,7 +18,7 @@ msgstr ""
18
  "Plural-Forms: \n"
19
  "X-Generator: Eazy Po 0.9.5.3\n"
20
 
21
- #: main.php:105
22
  msgid ""
23
  "Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
24
  "active WooCommerce plugin."
@@ -26,7 +26,7 @@ msgstr ""
26
  "Perfect WooCommerce Brands necesita WooCommerce para funcionar. Por favor, "
27
  "instala y activa WooCommerce."
28
 
29
- #: classes/class-perfect-woocommerce-brands.php:50
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!"
@@ -34,7 +34,7 @@ msgstr ""
34
  "Sabemos que Perfect WooCommerce Brands te encanta, puedes ayudarnos a "
35
  "hacerlo un poco mejor. ¡Muchas gracias!"
36
 
37
- #: classes/class-perfect-woocommerce-brands.php:52
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>"
@@ -42,7 +42,7 @@ msgstr ""
42
  "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
43
  "reviews/?rate=5#new-post\" target=\"_blank\">Dejar una review</a>"
44
 
45
- #: classes/class-perfect-woocommerce-brands.php:53
46
  msgid ""
47
  "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
48
  "woocommerce-brands\" target=\"_blank\">Translate the plugin</a>"
@@ -50,7 +50,7 @@ msgstr ""
50
  "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
51
  "woocommerce-brands\" target=\"_blank\">Traducir el plugin</a>"
52
 
53
- #: classes/class-perfect-woocommerce-brands.php:54
54
  msgid ""
55
  "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
56
  "\"_blank\">View on GitHub</a>"
@@ -58,20 +58,20 @@ msgstr ""
58
  "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
59
  "\"_blank\">Ver en GitHub</a>"
60
 
61
- #: classes/class-perfect-woocommerce-brands.php:77
62
  msgid "Settings"
63
  msgstr "Ajustes"
64
 
65
- #: classes/class-perfect-woocommerce-brands.php:268
66
  msgid "PWB Product carousel"
67
  msgstr "PWB Carrusel de productos"
68
 
69
- #: classes/class-perfect-woocommerce-brands.php:269
70
  msgid "Product carousel by brand or by category"
71
  msgstr "Carrusel de productos por marca o categoría"
72
 
73
- #: classes/class-perfect-woocommerce-brands.php:277
74
- #: classes/class-perfect-woocommerce-brands.php:589
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
@@ -79,170 +79,174 @@ msgstr "Carrusel de productos por marca o categoría"
79
  msgid "Brand"
80
  msgstr "Marca"
81
 
82
- #: classes/class-perfect-woocommerce-brands.php:285
83
  msgid "Products"
84
  msgstr "Productos"
85
 
86
- #: classes/class-perfect-woocommerce-brands.php:288
87
  msgid "Number of products to load"
88
  msgstr "Número de productos que cargar"
89
 
90
- #: classes/class-perfect-woocommerce-brands.php:293
91
  msgid "Products to show"
92
  msgstr "Productos a mostrar"
93
 
94
- #: classes/class-perfect-woocommerce-brands.php:296
95
  msgid "Number of products to show"
96
  msgstr "Número de productos que mostrar"
97
 
98
- #: classes/class-perfect-woocommerce-brands.php:301
99
  msgid "Products to scroll"
100
  msgstr "Número de productos por scroll"
101
 
102
- #: classes/class-perfect-woocommerce-brands.php:304
103
  msgid "Number of products to scroll"
104
  msgstr "Número de productos por cada scroll"
105
 
106
- #: classes/class-perfect-woocommerce-brands.php:309
107
- #: classes/class-perfect-woocommerce-brands.php:358
108
  msgid "Autoplay"
109
  msgstr "Modo automático"
110
 
111
- #: classes/class-perfect-woocommerce-brands.php:311
112
- #: classes/class-perfect-woocommerce-brands.php:360
113
  msgid "Autoplay carousel"
114
  msgstr "Modo automático para el carrusel"
115
 
116
- #: classes/class-perfect-woocommerce-brands.php:316
117
- #: classes/class-perfect-woocommerce-brands.php:365
118
  msgid "Arrows"
119
  msgstr "Flechas de navegación"
120
 
121
- #: classes/class-perfect-woocommerce-brands.php:318
122
- #: classes/class-perfect-woocommerce-brands.php:367
123
  msgid "Display prev and next arrows"
124
  msgstr "Mostrar flechas de navegación"
125
 
126
- #: classes/class-perfect-woocommerce-brands.php:324
127
  msgid "PWB Brands carousel"
128
  msgstr "PWB Carrusel de marcas"
129
 
130
- #: classes/class-perfect-woocommerce-brands.php:325
131
  msgid "Brands carousel"
132
  msgstr "Carrusel de marcas"
133
 
134
- #: classes/class-perfect-woocommerce-brands.php:334
135
  msgid "Items"
136
  msgstr "Elementos"
137
 
138
- #: classes/class-perfect-woocommerce-brands.php:337
139
  msgid "Number of items to load (or 'featured')"
140
  msgstr "Número de elementos a cargar (o 'featured')"
141
 
142
- #: classes/class-perfect-woocommerce-brands.php:342
143
  msgid "Items to show"
144
  msgstr "Elementos a mostrar"
145
 
146
- #: classes/class-perfect-woocommerce-brands.php:345
147
  msgid "Number of items to show"
148
  msgstr "Número de elementos a mostrar"
149
 
150
- #: classes/class-perfect-woocommerce-brands.php:350
151
  msgid "Items to scroll"
152
  msgstr "Número de elementos por scroll"
153
 
154
- #: classes/class-perfect-woocommerce-brands.php:353
155
  msgid "Number of items to scroll"
156
  msgstr "Número de elementos por cada scroll"
157
 
158
- #: classes/class-perfect-woocommerce-brands.php:371
159
- #: classes/class-perfect-woocommerce-brands.php:399
160
- #: classes/class-perfect-woocommerce-brands.php:470
161
- #: classes/admin/class-pwb-admin-tab.php:132
162
  msgid "Brand logo size"
163
  msgstr "Tamaño del logo de la marca"
164
 
165
- #: classes/class-perfect-woocommerce-brands.php:382
166
  msgid "PWB All brands"
167
  msgstr "PWB Todas las marcas"
168
 
169
- #: classes/class-perfect-woocommerce-brands.php:383
170
  msgid "Show all brands"
171
  msgstr "Mostrar todas las marcas"
172
 
173
- #: classes/class-perfect-woocommerce-brands.php:392
174
  msgid "Brands per page"
175
  msgstr "Marcas por página"
176
 
177
- #: classes/class-perfect-woocommerce-brands.php:395
178
  msgid "Show x brands per page"
179
  msgstr "Mostrar x marcas por página"
180
 
181
- #: classes/class-perfect-woocommerce-brands.php:406
182
  msgid "Order by"
183
  msgstr "Ordenar por"
184
 
185
- #: classes/class-perfect-woocommerce-brands.php:420
186
  msgid "Order"
187
  msgstr "Orden"
188
 
189
- #: classes/class-perfect-woocommerce-brands.php:430
190
  msgid "Title position"
191
  msgstr "Posición del título"
192
 
193
- #: classes/class-perfect-woocommerce-brands.php:434
194
  msgid "Before image"
195
  msgstr "Antes de la imagen"
196
 
197
- #: classes/class-perfect-woocommerce-brands.php:435
198
  msgid "After image"
199
  msgstr "Después de la imagen"
200
 
201
- #: classes/class-perfect-woocommerce-brands.php:436
202
  msgid "Hide"
203
  msgstr "Ocultar"
204
 
205
- #: classes/class-perfect-woocommerce-brands.php:442
206
- #: classes/widgets/class-pwb-dropdown.php:41
207
- #: classes/widgets/class-pwb-filter-by-brand.php:33
208
- #: classes/widgets/class-pwb-list.php:66
209
  msgid "Hide empty"
210
  msgstr "Ocultar vacías"
211
 
212
- #: classes/class-perfect-woocommerce-brands.php:444
213
  msgid "Hide brands that have not been assigned to any product"
214
  msgstr "Ocultar marcas que no han sido asignadas a ningún producto"
215
 
216
- #: classes/class-perfect-woocommerce-brands.php:452
 
 
 
 
 
 
 
 
217
  msgid "PWB brand"
218
  msgstr "PWB Marca"
219
 
220
- #: classes/class-perfect-woocommerce-brands.php:453
221
  msgid "Show brand for a specific product"
222
  msgstr "Ver marcas de un producto específico"
223
 
224
- #: classes/class-perfect-woocommerce-brands.php:463
225
  msgid "Product id"
226
  msgstr "Id del producto"
227
 
228
- #: classes/class-perfect-woocommerce-brands.php:466
229
  msgid "Product id (post id)"
230
  msgstr "Id del producto (id del post)"
231
 
232
- #: classes/class-perfect-woocommerce-brands.php:509
233
- #: classes/class-perfect-woocommerce-brands.php:511
234
- #: classes/shortcodes/class-pwb-all-brands.php:90
235
  #: classes/shortcodes/class-pwb-brand.php:29
236
  #: classes/shortcodes/class-pwb-brand.php:31
237
- #: templates/shortcodes/carousel.php:18
238
  msgid "View brand"
239
  msgstr "Ver marca"
240
 
241
- #: classes/class-perfect-woocommerce-brands.php:576
242
  msgid "¿Start migration?"
243
  msgstr "¿Comenzar la migración?"
244
 
245
- #: classes/class-perfect-woocommerce-brands.php:577
246
  msgid ""
247
  "We are migrating the product brands. ¡Don´t close this window until the "
248
  "process is finished!"
@@ -250,11 +254,11 @@ msgstr ""
250
  "Estamos migrando las marcas de producto. ¡No cierres esta ventana hasta que "
251
  "el proceso finalice!"
252
 
253
- #: classes/class-perfect-woocommerce-brands.php:578
254
  msgid "¿Start loading dummy data?"
255
  msgstr "¿Comenzar con la importación?"
256
 
257
- #: classes/class-perfect-woocommerce-brands.php:579
258
  msgid ""
259
  "We are importing the dummy data. ¡Don´t close this window until the process "
260
  "is finished!"
@@ -262,80 +266,85 @@ msgstr ""
262
  "En este momento estamos importando las marcas ficticias. ¡No cierre esta "
263
  "ventana hasta que termine el proceso!"
264
 
265
- #: classes/class-perfect-woocommerce-brands.php:588
266
- #: classes/class-perfect-woocommerce-brands.php:590
267
  #: classes/admin/class-edit-brands-page.php:128
268
  #: classes/admin/class-pwb-admin-tab.php:21
269
- #: classes/widgets/class-pwb-filter-by-brand.php:19
270
- #: classes/widgets/class-pwb-filter-by-brand.php:44
271
- #: templates/widgets/dropdown.php:16
 
272
  msgid "Brands"
273
  msgstr "Marcas"
274
 
275
- #: classes/class-perfect-woocommerce-brands.php:591
276
  msgid "All Brands"
277
  msgstr "Todas las marcas"
278
 
279
- #: classes/class-perfect-woocommerce-brands.php:592
280
  msgid "Edit Brand"
281
  msgstr "Editar marca"
282
 
283
- #: classes/class-perfect-woocommerce-brands.php:593
284
  msgid "View Brand"
285
  msgstr "Ver marca"
286
 
287
- #: classes/class-perfect-woocommerce-brands.php:594
288
  msgid "Update Brand"
289
  msgstr "Actualizar marca"
290
 
291
- #: classes/class-perfect-woocommerce-brands.php:595
292
  msgid "Add New Brand"
293
  msgstr "Añadir nueva marca"
294
 
295
- #: classes/class-perfect-woocommerce-brands.php:596
296
  msgid "New Brand Name"
297
  msgstr "Nuevo nombre de marca"
298
 
299
- #: classes/class-perfect-woocommerce-brands.php:597
300
  msgid "Parent Brand"
301
  msgstr "Marca Padre"
302
 
303
- #: classes/class-perfect-woocommerce-brands.php:598
304
  msgid "Parent Brand:"
305
  msgstr "Marca Padre:"
306
 
307
- #: classes/class-perfect-woocommerce-brands.php:599
308
  msgid "Search Brands"
309
  msgstr "Buscar Marcas"
310
 
311
- #: classes/class-perfect-woocommerce-brands.php:600
312
  msgid "Popular Brands"
313
  msgstr "Marcas Populares"
314
 
315
- #: classes/class-perfect-woocommerce-brands.php:601
316
  msgid "Separate brands with commas"
317
  msgstr "Separar marcas con comas"
318
 
319
- #: classes/class-perfect-woocommerce-brands.php:602
320
  msgid "Add or remove brands"
321
  msgstr "Añadir o eliminar marcas"
322
 
323
- #: classes/class-perfect-woocommerce-brands.php:603
324
  msgid "Choose from the most used brands"
325
  msgstr "Seleccionar de las marcas más utilizadas"
326
 
327
- #: classes/class-perfect-woocommerce-brands.php:604
328
  msgid "No brands found"
329
  msgstr "No se han encontrado marcas"
330
 
331
- #: classes/class-perfect-woocommerce-brands.php:662
332
  msgid "All"
333
  msgstr "Todas"
334
 
335
- #: classes/class-pwb-api-support.php:90
336
  msgid "Product brands"
337
  msgstr "Marcas del producto"
338
 
 
 
 
 
339
  #: classes/admin/class-brands-custom-fields.php:20
340
  #: classes/admin/class-brands-custom-fields.php:59
341
  msgid "Description"
@@ -352,7 +361,7 @@ msgstr ""
352
 
353
  #: classes/admin/class-brands-custom-fields.php:26
354
  #: classes/admin/class-brands-custom-fields.php:68
355
- #: classes/widgets/class-pwb-list.php:40
356
  msgid "Brand logo"
357
  msgstr "Logo de la marca"
358
 
@@ -404,126 +413,135 @@ msgstr "Error!"
404
  msgid "Show featured brands first"
405
  msgstr "Mostrar marcas favoritas primero"
406
 
407
- #: classes/admin/class-pwb-admin-tab.php:73
408
  msgid "Brands settings"
409
  msgstr "Ajustes de las marcas"
410
 
411
- #: classes/admin/class-pwb-admin-tab.php:79
412
  msgid "Slug"
413
  msgstr "Slug"
414
 
415
- #: classes/admin/class-pwb-admin-tab.php:82
416
  msgid "Brands taxonomy slug"
417
  msgstr "Slug de la taxonomía marcas"
418
 
419
- #: classes/admin/class-pwb-admin-tab.php:87
420
  msgid "Show brand description"
421
  msgstr "Mostrar descripción de la marca"
422
 
423
- #: classes/admin/class-pwb-admin-tab.php:91
424
  msgid "Show brand description (if is set) on brand archive page"
425
  msgstr "Mostrar descripción de la marca en la página de archivo"
426
 
427
- #: classes/admin/class-pwb-admin-tab.php:94
428
  msgid "Yes, before product loop"
429
  msgstr "Si, antes de los productos"
430
 
431
- #: classes/admin/class-pwb-admin-tab.php:95
432
  msgid "Yes, after product loop"
433
  msgstr "Si, después de los productos"
434
 
435
- #: classes/admin/class-pwb-admin-tab.php:96
436
  msgid "No, hide description"
437
  msgstr "No, ocultar descripción"
438
 
439
- #: classes/admin/class-pwb-admin-tab.php:100
440
  msgid "Single product tab"
441
  msgstr "Tab en la página del producto"
442
 
443
- #: classes/admin/class-pwb-admin-tab.php:103
444
  msgid "Show brand tab in single product page"
445
  msgstr "Mostrar pestaña con información de la marca en la página del producto"
446
 
447
- #: classes/admin/class-pwb-admin-tab.php:107
448
  msgid "Show brands in loop"
449
  msgstr "Mostrar marcas en el loop"
450
 
451
- #: classes/admin/class-pwb-admin-tab.php:110
452
  msgid "Show brand logo (or name) in product loop"
453
  msgstr "Mostrar el logo de la marca (o el nombre) en el loop"
454
 
455
- #: classes/admin/class-pwb-admin-tab.php:113
456
- #: classes/admin/class-pwb-admin-tab.php:126
457
  msgid "No"
458
  msgstr "No"
459
 
460
- #: classes/admin/class-pwb-admin-tab.php:114
461
- #: classes/admin/class-pwb-admin-tab.php:127
462
  msgid "Show brand link"
463
  msgstr "Mostrar el link de la marca"
464
 
465
- #: classes/admin/class-pwb-admin-tab.php:115
466
- #: classes/admin/class-pwb-admin-tab.php:128
467
  msgid "Show brand image (if is set)"
468
  msgstr "Mostrar el logo de la marca (si tiene uno asignado)"
469
 
470
- #: classes/admin/class-pwb-admin-tab.php:119
471
  msgid "Show brands in single product"
472
  msgstr "Mostrar marcas en la página del producto"
473
 
474
- #: classes/admin/class-pwb-admin-tab.php:122
475
  msgid "Show brand logo (or name) in single product"
476
  msgstr "Mostrar el logo de la marca (o el nombre) en la página del producto"
477
 
478
- #: classes/admin/class-pwb-admin-tab.php:135
479
  msgid "Brand logo size for single product view"
480
  msgstr "Tamaño del logo para la vista individual de producto"
481
 
482
- #: classes/admin/class-pwb-admin-tab.php:140
483
  msgid "Brand position"
484
  msgstr "Posición de la marca"
485
 
486
- #: classes/admin/class-pwb-admin-tab.php:143
487
  msgid "For single product"
488
  msgstr "En la página individual de cada producto"
489
 
490
- #: classes/admin/class-pwb-admin-tab.php:146
491
  msgid "Before title"
492
  msgstr "Antes del título"
493
 
494
- #: classes/admin/class-pwb-admin-tab.php:147
495
  msgid "After title"
496
  msgstr "Después del título"
497
 
498
- #: classes/admin/class-pwb-admin-tab.php:148
499
  msgid "After price"
500
  msgstr "Después del precio"
501
 
502
- #: classes/admin/class-pwb-admin-tab.php:149
503
  msgid "After excerpt"
504
  msgstr "Después de la descripción corta"
505
 
506
- #: classes/admin/class-pwb-admin-tab.php:150
507
  msgid "After add to cart"
508
  msgstr "Después del botón de comprar"
509
 
510
- #: classes/admin/class-pwb-admin-tab.php:151
511
  msgid "After meta"
512
  msgstr "Después del meta"
513
 
514
- #: classes/admin/class-pwb-admin-tab.php:152
515
  msgid "After sharing"
516
  msgstr "Después de compartir"
517
 
518
- #: classes/admin/class-pwb-admin-tab.php:169
 
 
 
 
 
 
 
 
519
  msgid "Tools"
520
  msgstr "Herramientas"
521
 
522
- #: classes/admin/class-pwb-admin-tab.php:175
 
523
  msgid "Import brands"
524
  msgstr "Importar marcas"
525
 
526
- #: classes/admin/class-pwb-admin-tab.php:179
527
  #, php-format
528
  msgid ""
529
  "Import brands from other brand plugin. <a href=\"%s\" target=\"_blank"
@@ -532,42 +550,42 @@ msgstr ""
532
  "Importar marcas de producto de otro plugin de marcas. <a href=\"%s\" target="
533
  "\"_blank\">Pulsa aquí para ver la documentación</a>"
534
 
535
- #: classes/admin/class-pwb-admin-tab.php:184
536
- #: classes/admin/class-pwb-admin-tab.php:197
537
  msgid "-"
538
  msgstr "-"
539
 
540
- #: classes/admin/class-pwb-admin-tab.php:185
541
  msgid "YITH WooCommerce Brands Add-On"
542
  msgstr "YITH WooCommerce Brands Add-On"
543
 
544
- #: classes/admin/class-pwb-admin-tab.php:186
545
  msgid "Ultimate WooCommerce Brands"
546
  msgstr "Ultimate WooCommerce Brands"
547
 
548
- #: classes/admin/class-pwb-admin-tab.php:187
549
  msgid "Offical WooCommerce Brands"
550
  msgstr "Offical WooCommerce Brands"
551
 
552
- #: classes/admin/class-pwb-admin-tab.php:191
553
  msgid "Dummy data"
554
  msgstr "Datos ficticios"
555
 
556
- #: classes/admin/class-pwb-admin-tab.php:194
557
  msgid "Import generic brands and assign it to products randomly"
558
  msgstr ""
559
  "Importar marcas genéricas y asignarlas a los productos existentes de forma "
560
  "aleatoria"
561
 
562
- #: classes/admin/class-pwb-admin-tab.php:198
563
  msgid "Start import"
564
  msgstr "Comenzar importación"
565
 
566
- #: classes/admin/class-pwb-admin-tab.php:202
567
  msgid "System status"
568
  msgstr "Estado del sistema"
569
 
570
- #: classes/admin/class-pwb-admin-tab.php:204
571
  msgid "Show system status"
572
  msgstr "Ver estado del sistema"
573
 
@@ -587,23 +605,23 @@ msgstr ""
587
  "El cupón será válido si existe al menos un producto de la marca señalada en "
588
  "el carrito"
589
 
590
- #: classes/shortcodes/class-pwb-all-brands.php:111
591
  msgid "First page"
592
  msgstr "Primera página"
593
 
594
- #: classes/shortcodes/class-pwb-all-brands.php:114
595
  msgid "Previous page"
596
  msgstr "Página anterior"
597
 
598
- #: classes/shortcodes/class-pwb-all-brands.php:118
599
  msgid "Next page"
600
  msgstr "Siguiente página"
601
 
602
- #: classes/shortcodes/class-pwb-all-brands.php:121
603
  msgid "Last page"
604
  msgstr "Última página"
605
 
606
- #: classes/shortcodes/class-pwb-all-brands.php:126
607
  msgid "No results"
608
  msgstr "No se han encontrado resultados"
609
 
@@ -615,28 +633,36 @@ msgstr "Añade un desplegable con las marcas a tu sitio"
615
  msgid "Brands dropdown"
616
  msgstr "Desplegable de marcas"
617
 
618
- #: classes/widgets/class-pwb-dropdown.php:24
619
  msgid "Title"
620
  msgstr "Título"
621
 
622
- #: classes/widgets/class-pwb-dropdown.php:66
623
- #: classes/widgets/class-pwb-list.php:115
624
- msgid "There is not available brands"
625
- msgstr "No se encuentran marcas disponibles"
626
 
627
- #: classes/widgets/class-pwb-filter-by-brand.php:10
628
  msgid "Recommended for product categories or shop page"
629
  msgstr "Recomendado para las categorías de producto y la página de la tienda"
630
 
631
- #: classes/widgets/class-pwb-filter-by-brand.php:11
632
  msgid "Filter products by brand"
633
  msgstr "Filtrar productos por marca"
634
 
635
- #: classes/widgets/class-pwb-filter-by-brand.php:23
636
- #: classes/widgets/class-pwb-list.php:25
637
  msgid "Title:"
638
  msgstr "Título:"
639
 
 
 
 
 
 
 
 
 
640
  #: classes/widgets/class-pwb-list.php:10
641
  msgid "Adds a brands list to your site"
642
  msgstr "Añade una lista de marcas a tu sitio"
@@ -645,23 +671,38 @@ msgstr "Añade una lista de marcas a tu sitio"
645
  msgid "Brands list"
646
  msgstr "Lista de marcas"
647
 
648
- #: classes/widgets/class-pwb-list.php:34
649
  msgid "Display as:"
650
  msgstr "Mostrar como:"
651
 
652
- #: classes/widgets/class-pwb-list.php:39
653
  msgid "Brand name"
654
  msgstr "Nombre de la marca"
655
 
656
- #: classes/widgets/class-pwb-list.php:45
657
  msgid "Columns:"
658
  msgstr "Columnas:"
659
 
660
- #: classes/widgets/class-pwb-list.php:107
661
- #: classes/widgets/class-pwb-list.php:109
 
 
 
662
  msgid "Go to"
663
  msgstr "Ir a"
664
 
 
 
 
 
 
 
 
 
 
 
 
 
665
  #: templates/shortcodes/carousel.php:24
666
  #: templates/shortcodes/product-carousel.php:28
667
  msgid "Loading"
@@ -671,18 +712,11 @@ msgstr "Cargando"
671
  msgid "Nothing found"
672
  msgstr "Aquí no hay nada"
673
 
674
- #: templates/widgets/filter-by-brand.php:24
675
  msgid "Apply filter"
676
  msgstr "Filtrar"
677
 
678
- #~ msgid "Perfect WooCommerce Brands"
679
- #~ msgstr "Perfect WooCommerce Brands"
680
-
681
- #~ msgid "https://wordpress.org/plugins/perfect-woocommerce-brands/"
682
- #~ msgstr "https://wordpress.org/plugins/perfect-woocommerce-brands/"
683
-
684
- #~ msgid "Alberto de Vera Sevilla"
685
- #~ msgstr "Alberto de Vera Sevilla"
686
-
687
- #~ msgid "https://profiles.wordpress.org/titodevera/"
688
- #~ msgstr "https://profiles.wordpress.org/titodevera/"
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: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
  "Language: \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."
26
  "Perfect WooCommerce Brands necesita WooCommerce para funcionar. Por favor, "
27
  "instala y 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!"
34
  "Sabemos que Perfect WooCommerce Brands te encanta, puedes ayudarnos a "
35
  "hacerlo un poco mejor. ¡Muchas gracias!"
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>"
42
  "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
43
  "reviews/?rate=5#new-post\" target=\"_blank\">Dejar 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>"
50
  "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
51
  "woocommerce-brands\" target=\"_blank\">Traducir 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>"
58
  "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
59
  "\"_blank\">Ver en GitHub</a>"
60
 
61
+ #: classes/class-perfect-woocommerce-brands.php:79
62
  msgid "Settings"
63
  msgstr "Ajustes"
64
 
65
+ #: classes/class-perfect-woocommerce-brands.php:280
66
  msgid "PWB Product carousel"
67
  msgstr "PWB Carrusel de productos"
68
 
69
+ #: classes/class-perfect-woocommerce-brands.php:281
70
  msgid "Product carousel by brand or by category"
71
  msgstr "Carrusel de productos por marca o categoría"
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
79
  msgid "Brand"
80
  msgstr "Marca"
81
 
82
+ #: classes/class-perfect-woocommerce-brands.php:297
83
  msgid "Products"
84
  msgstr "Productos"
85
 
86
+ #: classes/class-perfect-woocommerce-brands.php:300
87
  msgid "Number of products to load"
88
  msgstr "Número de productos que cargar"
89
 
90
+ #: classes/class-perfect-woocommerce-brands.php:305
91
  msgid "Products to show"
92
  msgstr "Productos a mostrar"
93
 
94
+ #: classes/class-perfect-woocommerce-brands.php:308
95
  msgid "Number of products to show"
96
  msgstr "Número de productos que mostrar"
97
 
98
+ #: classes/class-perfect-woocommerce-brands.php:313
99
  msgid "Products to scroll"
100
  msgstr "Número de productos por scroll"
101
 
102
+ #: classes/class-perfect-woocommerce-brands.php:316
103
  msgid "Number of products to scroll"
104
  msgstr "Número de productos por cada scroll"
105
 
106
+ #: classes/class-perfect-woocommerce-brands.php:321
107
+ #: classes/class-perfect-woocommerce-brands.php:370
108
  msgid "Autoplay"
109
  msgstr "Modo automático"
110
 
111
+ #: classes/class-perfect-woocommerce-brands.php:323
112
+ #: classes/class-perfect-woocommerce-brands.php:372
113
  msgid "Autoplay carousel"
114
  msgstr "Modo automático para el carrusel"
115
 
116
+ #: classes/class-perfect-woocommerce-brands.php:328
117
+ #: classes/class-perfect-woocommerce-brands.php:377
118
  msgid "Arrows"
119
  msgstr "Flechas de navegación"
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 flechas de navegación"
125
 
126
+ #: classes/class-perfect-woocommerce-brands.php:336
127
  msgid "PWB Brands carousel"
128
  msgstr "PWB Carrusel de marcas"
129
 
130
+ #: classes/class-perfect-woocommerce-brands.php:337
131
  msgid "Brands carousel"
132
  msgstr "Carrusel de marcas"
133
 
134
+ #: classes/class-perfect-woocommerce-brands.php:346
135
  msgid "Items"
136
  msgstr "Elementos"
137
 
138
+ #: classes/class-perfect-woocommerce-brands.php:349
139
  msgid "Number of items to load (or 'featured')"
140
  msgstr "Número de elementos a cargar (o 'featured')"
141
 
142
+ #: classes/class-perfect-woocommerce-brands.php:354
143
  msgid "Items to show"
144
  msgstr "Elementos a mostrar"
145
 
146
+ #: classes/class-perfect-woocommerce-brands.php:357
147
  msgid "Number of items to show"
148
  msgstr "Número de elementos a mostrar"
149
 
150
+ #: classes/class-perfect-woocommerce-brands.php:362
151
  msgid "Items to scroll"
152
  msgstr "Número de elementos por scroll"
153
 
154
+ #: classes/class-perfect-woocommerce-brands.php:365
155
  msgid "Number of items to scroll"
156
  msgstr "Número de elementos por 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 "Tamaño del logo de la marca"
164
 
165
+ #: classes/class-perfect-woocommerce-brands.php:394
166
  msgid "PWB All brands"
167
  msgstr "PWB Todas las marcas"
168
 
169
+ #: classes/class-perfect-woocommerce-brands.php:395
170
  msgid "Show all brands"
171
  msgstr "Mostrar todas las marcas"
172
 
173
+ #: classes/class-perfect-woocommerce-brands.php:404
174
  msgid "Brands per page"
175
  msgstr "Marcas por página"
176
 
177
+ #: classes/class-perfect-woocommerce-brands.php:407
178
  msgid "Show x brands per page"
179
  msgstr "Mostrar x marcas por página"
180
 
181
+ #: classes/class-perfect-woocommerce-brands.php:418
182
  msgid "Order by"
183
  msgstr "Ordenar por"
184
 
185
+ #: classes/class-perfect-woocommerce-brands.php:432
186
  msgid "Order"
187
  msgstr "Orden"
188
 
189
+ #: classes/class-perfect-woocommerce-brands.php:442
190
  msgid "Title position"
191
  msgstr "Posición del título"
192
 
193
+ #: classes/class-perfect-woocommerce-brands.php:446
194
  msgid "Before image"
195
  msgstr "Antes de la imagen"
196
 
197
+ #: classes/class-perfect-woocommerce-brands.php:447
198
  msgid "After image"
199
  msgstr "Después de la imagen"
200
 
201
+ #: classes/class-perfect-woocommerce-brands.php:448
202
  msgid "Hide"
203
  msgstr "Ocultar"
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 "Ocultar vacías"
210
 
211
+ #: classes/class-perfect-woocommerce-brands.php:456
212
  msgid "Hide brands that have not been assigned to any product"
213
  msgstr "Ocultar marcas que no han sido asignadas a ningún producto"
214
 
215
+ #: classes/class-perfect-woocommerce-brands.php:464
216
+ msgid "PWB AZ Listing"
217
+ msgstr "Lista A-Z"
218
+
219
+ #: classes/class-perfect-woocommerce-brands.php:465
220
+ msgid "AZ Listing for brands"
221
+ msgstr "Listado A-Z de marcas"
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 "Ver marcas de un producto específico"
230
 
231
+ #: classes/class-perfect-woocommerce-brands.php:485
232
  msgid "Product id"
233
  msgstr "Id del producto"
234
 
235
+ #: classes/class-perfect-woocommerce-brands.php:488
236
  msgid "Product id (post id)"
237
  msgstr "Id del producto (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 "Ver marca"
244
 
245
+ #: classes/class-perfect-woocommerce-brands.php:598
246
  msgid "¿Start migration?"
247
  msgstr "¿Comenzar la migración?"
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!"
254
  "Estamos migrando las marcas de producto. ¡No cierres esta ventana hasta que "
255
  "el proceso finalice!"
256
 
257
+ #: classes/class-perfect-woocommerce-brands.php:600
258
  msgid "¿Start loading dummy data?"
259
  msgstr "¿Comenzar con la importación?"
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!"
266
  "En este momento estamos importando las marcas ficticias. ¡No cierre esta "
267
  "ventana hasta que termine el proceso!"
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 "Marcas"
279
 
280
+ #: classes/class-perfect-woocommerce-brands.php:613
281
  msgid "All Brands"
282
  msgstr "Todas las marcas"
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 "Ver marca"
291
 
292
+ #: classes/class-perfect-woocommerce-brands.php:616
293
  msgid "Update Brand"
294
  msgstr "Actualizar marca"
295
 
296
+ #: classes/class-perfect-woocommerce-brands.php:617
297
  msgid "Add New Brand"
298
  msgstr "Añadir nueva marca"
299
 
300
+ #: classes/class-perfect-woocommerce-brands.php:618
301
  msgid "New Brand Name"
302
  msgstr "Nuevo nombre de marca"
303
 
304
+ #: classes/class-perfect-woocommerce-brands.php:619
305
  msgid "Parent Brand"
306
  msgstr "Marca Padre"
307
 
308
+ #: classes/class-perfect-woocommerce-brands.php:620
309
  msgid "Parent Brand:"
310
  msgstr "Marca Padre:"
311
 
312
+ #: classes/class-perfect-woocommerce-brands.php:621
313
  msgid "Search Brands"
314
  msgstr "Buscar Marcas"
315
 
316
+ #: classes/class-perfect-woocommerce-brands.php:622
317
  msgid "Popular Brands"
318
  msgstr "Marcas Populares"
319
 
320
+ #: classes/class-perfect-woocommerce-brands.php:623
321
  msgid "Separate brands with commas"
322
  msgstr "Separar marcas con comas"
323
 
324
+ #: classes/class-perfect-woocommerce-brands.php:624
325
  msgid "Add or remove brands"
326
  msgstr "Añadir o eliminar marcas"
327
 
328
+ #: classes/class-perfect-woocommerce-brands.php:625
329
  msgid "Choose from the most used brands"
330
  msgstr "Seleccionar de las marcas más utilizadas"
331
 
332
+ #: classes/class-perfect-woocommerce-brands.php:626
333
  msgid "No brands found"
334
  msgstr "No se han encontrado marcas"
335
 
336
+ #: classes/class-perfect-woocommerce-brands.php:697
337
  msgid "All"
338
  msgstr "Todas"
339
 
340
+ #: classes/class-pwb-api-support.php:87
341
  msgid "Product brands"
342
  msgstr "Marcas del producto"
343
 
344
+ #: classes/class-pwb-term.php:20
345
+ msgid "Only WP_Term objects are allowed"
346
+ msgstr "Solo se permiten objetos del tipo WP_Term"
347
+
348
  #: classes/admin/class-brands-custom-fields.php:20
349
  #: classes/admin/class-brands-custom-fields.php:59
350
  msgid "Description"
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
 
413
  msgid "Show featured brands first"
414
  msgstr "Mostrar marcas favoritas primero"
415
 
416
+ #: classes/admin/class-pwb-admin-tab.php:70
417
  msgid "Brands settings"
418
  msgstr "Ajustes de las marcas"
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 taxonomía marcas"
427
 
428
+ #: classes/admin/class-pwb-admin-tab.php:84
429
  msgid "Show brand description"
430
  msgstr "Mostrar descripción 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ón de la marca en la página de archivo"
435
 
436
+ #: classes/admin/class-pwb-admin-tab.php:91
437
  msgid "Yes, before product loop"
438
  msgstr "Si, antes de los productos"
439
 
440
+ #: classes/admin/class-pwb-admin-tab.php:92
441
  msgid "Yes, after product loop"
442
  msgstr "Si, después de los productos"
443
 
444
+ #: classes/admin/class-pwb-admin-tab.php:93
445
  msgid "No, hide description"
446
  msgstr "No, ocultar descripción"
447
 
448
+ #: classes/admin/class-pwb-admin-tab.php:97
449
  msgid "Single product tab"
450
  msgstr "Tab en la página del producto"
451
 
452
+ #: classes/admin/class-pwb-admin-tab.php:100
453
  msgid "Show brand tab in single product page"
454
  msgstr "Mostrar pestaña con información de la marca en la página del producto"
455
 
456
+ #: classes/admin/class-pwb-admin-tab.php:104
457
  msgid "Show brands in loop"
458
  msgstr "Mostrar marcas en el 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 nombre) en el 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 tiene uno asignado)"
478
 
479
+ #: classes/admin/class-pwb-admin-tab.php:116
480
  msgid "Show brands in single product"
481
  msgstr "Mostrar marcas en la página del producto"
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 nombre) en la página del producto"
486
 
487
+ #: classes/admin/class-pwb-admin-tab.php:132
488
  msgid "Brand logo size for single product view"
489
  msgstr "Tamaño del logo para la vista individual de producto"
490
 
491
+ #: classes/admin/class-pwb-admin-tab.php:137
492
  msgid "Brand position"
493
  msgstr "Posición de la marca"
494
 
495
+ #: classes/admin/class-pwb-admin-tab.php:140
496
  msgid "For single product"
497
  msgstr "En la página individual de cada producto"
498
 
499
+ #: classes/admin/class-pwb-admin-tab.php:143
500
  msgid "Before title"
501
  msgstr "Antes del título"
502
 
503
+ #: classes/admin/class-pwb-admin-tab.php:144
504
  msgid "After title"
505
  msgstr "Después del título"
506
 
507
+ #: classes/admin/class-pwb-admin-tab.php:145
508
  msgid "After price"
509
  msgstr "Después del precio"
510
 
511
+ #: classes/admin/class-pwb-admin-tab.php:146
512
  msgid "After excerpt"
513
  msgstr "Después de la descripción corta"
514
 
515
+ #: classes/admin/class-pwb-admin-tab.php:147
516
  msgid "After add to cart"
517
  msgstr "Después del botón de comprar"
518
 
519
+ #: classes/admin/class-pwb-admin-tab.php:148
520
  msgid "After meta"
521
  msgstr "Después del meta"
522
 
523
+ #: classes/admin/class-pwb-admin-tab.php:149
524
  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"
533
+ msgstr "Para el enlace de las migas de pan"
534
+
535
+ #: classes/admin/class-pwb-admin-tab.php:173
536
  msgid "Tools"
537
  msgstr "Herramientas"
538
 
539
+ #: classes/admin/class-pwb-admin-tab.php:179
540
+ #: templates/admin/brands-exporter.php:16
541
  msgid "Import brands"
542
  msgstr "Importar marcas"
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"
550
  "Importar marcas de producto de otro plugin de marcas. <a href=\"%s\" target="
551
  "\"_blank\">Pulsa aquí para ver la documentación</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 "Datos ficticios"
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 marcas genéricas y asignarlas a los productos existentes de forma "
578
  "aleatoria"
579
 
580
+ #: classes/admin/class-pwb-admin-tab.php:202
581
  msgid "Start import"
582
  msgstr "Comenzar importación"
583
 
584
+ #: classes/admin/class-pwb-admin-tab.php:206
585
  msgid "System status"
586
  msgstr "Estado del sistema"
587
 
588
+ #: classes/admin/class-pwb-admin-tab.php:208
589
  msgid "Show system status"
590
  msgstr "Ver estado del sistema"
591
 
605
  "El cupón será válido si existe al menos un producto de la marca señalada en "
606
  "el carrito"
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 "Siguiente página"
619
 
620
+ #: classes/shortcodes/class-pwb-all-brands.php:118
621
  msgid "Last page"
622
  msgstr "Última página"
623
 
624
+ #: classes/shortcodes/class-pwb-all-brands.php:123
625
  msgid "No results"
626
  msgstr "No se han encontrado resultados"
627
 
633
  msgid "Brands dropdown"
634
  msgstr "Desplegable de marcas"
635
 
636
+ #: classes/widgets/class-pwb-dropdown.php:26
637
  msgid "Title"
638
  msgstr "Título"
639
 
640
+ #: classes/widgets/class-pwb-dropdown.php:54
641
+ #: classes/widgets/class-pwb-list.php:77
642
+ msgid "Only favorite brands"
643
+ msgstr "Solo marcas favoritas"
644
 
645
+ #: classes/widgets/class-pwb-filter-by-brand.php:11
646
  msgid "Recommended for product categories or shop page"
647
  msgstr "Recomendado para las categorías de producto y la página de la tienda"
648
 
649
+ #: classes/widgets/class-pwb-filter-by-brand.php:12
650
  msgid "Filter products by brand"
651
  msgstr "Filtrar productos 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ítulo:"
657
 
658
+ #: classes/widgets/class-pwb-filter-by-brand.php:30
659
+ msgid "Max number of brands"
660
+ msgstr "Número máximo de marcas"
661
+
662
+ #: classes/widgets/class-pwb-filter-by-brand.php:41
663
+ msgid "Hide filter button"
664
+ msgstr "No mostrar el botón Filtrar"
665
+
666
  #: classes/widgets/class-pwb-list.php:10
667
  msgid "Adds a brands list to your site"
668
  msgstr "Añade una lista de marcas a tu sitio"
671
  msgid "Brands list"
672
  msgstr "Lista de marcas"
673
 
674
+ #: classes/widgets/class-pwb-list.php:37
675
  msgid "Display as:"
676
  msgstr "Mostrar como:"
677
 
678
+ #: classes/widgets/class-pwb-list.php:42
679
  msgid "Brand name"
680
  msgstr "Nombre de la marca"
681
 
682
+ #: classes/widgets/class-pwb-list.php:47
683
  msgid "Columns:"
684
  msgstr "Columnas:"
685
 
686
+ #: classes/widgets/class-pwb-list.php:87
687
+ msgid "Randomize"
688
+ msgstr "Aleatorio"
689
+
690
+ #: classes/widgets/class-pwb-list.php:119
691
  msgid "Go to"
692
  msgstr "Ir a"
693
 
694
+ #: templates/admin/brands-exporter.php:15
695
+ msgid "Export brands"
696
+ msgstr "Exportar marcas"
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
+ "Esta herramienta permite exportar e importar marcas entre dos sitios "
704
+ "diferentes que utilizan PWB"
705
+
706
  #: templates/shortcodes/carousel.php:24
707
  #: templates/shortcodes/product-carousel.php:28
708
  msgid "Loading"
712
  msgid "Nothing found"
713
  msgstr "Aquí no hay nada"
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 se encuentran marcas disponibles"
 
 
 
 
 
 
 
lang/perfect-woocommerce-brands.pot CHANGED
@@ -2,66 +2,65 @@
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
  #, fuzzy
6
  msgid ""
7
  msgstr ""
8
- "Project-Id-Version: \n"
9
- "Report-Msgid-Bugs-To: BUG-EMAIL-ADDR <EMAIL@ADDRESS>\n"
10
- "POT-Creation-Date: yyyy-mm-dd hh:mm+0000\n"
11
- "PO-Revision-Date: 2018-03-05 00:05+0100\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
  "Language: \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: nplurals=INTEGER; plural=EXPRESSION;\n"
19
- "X-Generator: Eazy Po 0.9.5.3\n"
20
 
21
- #: main.php:105
22
  msgid ""
23
  "Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
24
  "active WooCommerce plugin."
25
  msgstr ""
26
 
27
- #: classes/class-perfect-woocommerce-brands.php:50
28
  msgid ""
29
  "We know that you´re in love with Perfect WooCommerce Brands, you can help us "
30
  "making it a bit better. Thanks a lot!"
31
  msgstr ""
32
 
33
- #: classes/class-perfect-woocommerce-brands.php:52
34
  msgid ""
35
  "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
36
  "reviews/?rate=5#new-post\" target=\"_blank\">Leave a review</a>"
37
  msgstr ""
38
 
39
- #: classes/class-perfect-woocommerce-brands.php:53
40
  msgid ""
41
  "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
42
  "woocommerce-brands\" target=\"_blank\">Translate the plugin</a>"
43
  msgstr ""
44
 
45
- #: classes/class-perfect-woocommerce-brands.php:54
46
  msgid ""
47
  "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
48
  "\"_blank\">View on GitHub</a>"
49
  msgstr ""
50
 
51
- #: classes/class-perfect-woocommerce-brands.php:77
52
  msgid "Settings"
53
  msgstr ""
54
 
55
- #: classes/class-perfect-woocommerce-brands.php:268
56
  msgid "PWB Product carousel"
57
  msgstr ""
58
 
59
- #: classes/class-perfect-woocommerce-brands.php:269
60
  msgid "Product carousel by brand or by category"
61
  msgstr ""
62
 
63
- #: classes/class-perfect-woocommerce-brands.php:277
64
- #: classes/class-perfect-woocommerce-brands.php:589
65
  #: classes/class-pwb-product-tab.php:18 classes/class-pwb-product-tab.php:35
66
  #: classes/admin/class-pwb-exporter-support.php:22
67
  #: classes/admin/class-pwb-importer-support.php:22
@@ -69,259 +68,268 @@ msgstr ""
69
  msgid "Brand"
70
  msgstr ""
71
 
72
- #: classes/class-perfect-woocommerce-brands.php:285
73
  msgid "Products"
74
  msgstr ""
75
 
76
- #: classes/class-perfect-woocommerce-brands.php:288
77
  msgid "Number of products to load"
78
  msgstr ""
79
 
80
- #: classes/class-perfect-woocommerce-brands.php:293
81
  msgid "Products to show"
82
  msgstr ""
83
 
84
- #: classes/class-perfect-woocommerce-brands.php:296
85
  msgid "Number of products to show"
86
  msgstr ""
87
 
88
- #: classes/class-perfect-woocommerce-brands.php:301
89
  msgid "Products to scroll"
90
  msgstr ""
91
 
92
- #: classes/class-perfect-woocommerce-brands.php:304
93
  msgid "Number of products to scroll"
94
  msgstr ""
95
 
96
- #: classes/class-perfect-woocommerce-brands.php:309
97
- #: classes/class-perfect-woocommerce-brands.php:358
98
  msgid "Autoplay"
99
  msgstr ""
100
 
101
- #: classes/class-perfect-woocommerce-brands.php:311
102
- #: classes/class-perfect-woocommerce-brands.php:360
103
  msgid "Autoplay carousel"
104
  msgstr ""
105
 
106
- #: classes/class-perfect-woocommerce-brands.php:316
107
- #: classes/class-perfect-woocommerce-brands.php:365
108
  msgid "Arrows"
109
  msgstr ""
110
 
111
- #: classes/class-perfect-woocommerce-brands.php:318
112
- #: classes/class-perfect-woocommerce-brands.php:367
113
  msgid "Display prev and next arrows"
114
  msgstr ""
115
 
116
- #: classes/class-perfect-woocommerce-brands.php:324
117
  msgid "PWB Brands carousel"
118
  msgstr ""
119
 
120
- #: classes/class-perfect-woocommerce-brands.php:325
121
  msgid "Brands carousel"
122
  msgstr ""
123
 
124
- #: classes/class-perfect-woocommerce-brands.php:334
125
  msgid "Items"
126
  msgstr ""
127
 
128
- #: classes/class-perfect-woocommerce-brands.php:337
129
  msgid "Number of items to load (or 'featured')"
130
  msgstr ""
131
 
132
- #: classes/class-perfect-woocommerce-brands.php:342
133
  msgid "Items to show"
134
  msgstr ""
135
 
136
- #: classes/class-perfect-woocommerce-brands.php:345
137
  msgid "Number of items to show"
138
  msgstr ""
139
 
140
- #: classes/class-perfect-woocommerce-brands.php:350
141
  msgid "Items to scroll"
142
  msgstr ""
143
 
144
- #: classes/class-perfect-woocommerce-brands.php:353
145
  msgid "Number of items to scroll"
146
  msgstr ""
147
 
148
- #: classes/class-perfect-woocommerce-brands.php:371
149
- #: classes/class-perfect-woocommerce-brands.php:399
150
- #: classes/class-perfect-woocommerce-brands.php:470
151
- #: classes/admin/class-pwb-admin-tab.php:132
152
  msgid "Brand logo size"
153
  msgstr ""
154
 
155
- #: classes/class-perfect-woocommerce-brands.php:382
156
  msgid "PWB All brands"
157
  msgstr ""
158
 
159
- #: classes/class-perfect-woocommerce-brands.php:383
160
  msgid "Show all brands"
161
  msgstr ""
162
 
163
- #: classes/class-perfect-woocommerce-brands.php:392
164
  msgid "Brands per page"
165
  msgstr ""
166
 
167
- #: classes/class-perfect-woocommerce-brands.php:395
168
  msgid "Show x brands per page"
169
  msgstr ""
170
 
171
- #: classes/class-perfect-woocommerce-brands.php:406
172
  msgid "Order by"
173
  msgstr ""
174
 
175
- #: classes/class-perfect-woocommerce-brands.php:420
176
  msgid "Order"
177
  msgstr ""
178
 
179
- #: classes/class-perfect-woocommerce-brands.php:430
180
  msgid "Title position"
181
  msgstr ""
182
 
183
- #: classes/class-perfect-woocommerce-brands.php:434
184
  msgid "Before image"
185
  msgstr ""
186
 
187
- #: classes/class-perfect-woocommerce-brands.php:435
188
  msgid "After image"
189
  msgstr ""
190
 
191
- #: classes/class-perfect-woocommerce-brands.php:436
192
  msgid "Hide"
193
  msgstr ""
194
 
195
- #: classes/class-perfect-woocommerce-brands.php:442
196
- #: classes/widgets/class-pwb-dropdown.php:41
197
- #: classes/widgets/class-pwb-filter-by-brand.php:33
198
- #: classes/widgets/class-pwb-list.php:66
199
  msgid "Hide empty"
200
  msgstr ""
201
 
202
- #: classes/class-perfect-woocommerce-brands.php:444
203
  msgid "Hide brands that have not been assigned to any product"
204
  msgstr ""
205
 
206
- #: classes/class-perfect-woocommerce-brands.php:452
 
 
 
 
 
 
 
 
207
  msgid "PWB brand"
208
  msgstr ""
209
 
210
- #: classes/class-perfect-woocommerce-brands.php:453
211
  msgid "Show brand for a specific product"
212
  msgstr ""
213
 
214
- #: classes/class-perfect-woocommerce-brands.php:463
215
  msgid "Product id"
216
  msgstr ""
217
 
218
- #: classes/class-perfect-woocommerce-brands.php:466
219
  msgid "Product id (post id)"
220
  msgstr ""
221
 
222
- #: classes/class-perfect-woocommerce-brands.php:509
223
- #: classes/class-perfect-woocommerce-brands.php:511
224
- #: classes/shortcodes/class-pwb-all-brands.php:90
225
  #: classes/shortcodes/class-pwb-brand.php:29
226
  #: classes/shortcodes/class-pwb-brand.php:31
227
- #: templates/shortcodes/carousel.php:18
228
  msgid "View brand"
229
  msgstr ""
230
 
231
- #: classes/class-perfect-woocommerce-brands.php:576
232
  msgid "¿Start migration?"
233
  msgstr ""
234
 
235
- #: classes/class-perfect-woocommerce-brands.php:577
236
  msgid ""
237
  "We are migrating the product brands. ¡Don´t close this window until the "
238
  "process is finished!"
239
  msgstr ""
240
 
241
- #: classes/class-perfect-woocommerce-brands.php:578
242
  msgid "¿Start loading dummy data?"
243
  msgstr ""
244
 
245
- #: classes/class-perfect-woocommerce-brands.php:579
246
  msgid ""
247
  "We are importing the dummy data. ¡Don´t close this window until the process "
248
  "is finished!"
249
  msgstr ""
250
 
251
- #: classes/class-perfect-woocommerce-brands.php:588
252
- #: classes/class-perfect-woocommerce-brands.php:590
253
  #: classes/admin/class-edit-brands-page.php:128
254
  #: classes/admin/class-pwb-admin-tab.php:21
255
- #: classes/widgets/class-pwb-filter-by-brand.php:19
256
- #: classes/widgets/class-pwb-filter-by-brand.php:44
257
- #: templates/widgets/dropdown.php:16
 
258
  msgid "Brands"
259
  msgstr ""
260
 
261
- #: classes/class-perfect-woocommerce-brands.php:591
262
  msgid "All Brands"
263
  msgstr ""
264
 
265
- #: classes/class-perfect-woocommerce-brands.php:592
266
  msgid "Edit Brand"
267
  msgstr ""
268
 
269
- #: classes/class-perfect-woocommerce-brands.php:593
270
  msgid "View Brand"
271
  msgstr ""
272
 
273
- #: classes/class-perfect-woocommerce-brands.php:594
274
  msgid "Update Brand"
275
  msgstr ""
276
 
277
- #: classes/class-perfect-woocommerce-brands.php:595
278
  msgid "Add New Brand"
279
  msgstr ""
280
 
281
- #: classes/class-perfect-woocommerce-brands.php:596
282
  msgid "New Brand Name"
283
  msgstr ""
284
 
285
- #: classes/class-perfect-woocommerce-brands.php:597
286
  msgid "Parent Brand"
287
  msgstr ""
288
 
289
- #: classes/class-perfect-woocommerce-brands.php:598
290
  msgid "Parent Brand:"
291
  msgstr ""
292
 
293
- #: classes/class-perfect-woocommerce-brands.php:599
294
  msgid "Search Brands"
295
  msgstr ""
296
 
297
- #: classes/class-perfect-woocommerce-brands.php:600
298
  msgid "Popular Brands"
299
  msgstr ""
300
 
301
- #: classes/class-perfect-woocommerce-brands.php:601
302
  msgid "Separate brands with commas"
303
  msgstr ""
304
 
305
- #: classes/class-perfect-woocommerce-brands.php:602
306
  msgid "Add or remove brands"
307
  msgstr ""
308
 
309
- #: classes/class-perfect-woocommerce-brands.php:603
310
  msgid "Choose from the most used brands"
311
  msgstr ""
312
 
313
- #: classes/class-perfect-woocommerce-brands.php:604
314
  msgid "No brands found"
315
  msgstr ""
316
 
317
- #: classes/class-perfect-woocommerce-brands.php:662
318
  msgid "All"
319
  msgstr ""
320
 
321
- #: classes/class-pwb-api-support.php:90
322
  msgid "Product brands"
323
  msgstr ""
324
 
 
 
 
 
325
  #: classes/admin/class-brands-custom-fields.php:20
326
  #: classes/admin/class-brands-custom-fields.php:59
327
  msgid "Description"
@@ -336,7 +344,7 @@ msgstr ""
336
 
337
  #: classes/admin/class-brands-custom-fields.php:26
338
  #: classes/admin/class-brands-custom-fields.php:68
339
- #: classes/widgets/class-pwb-list.php:40
340
  msgid "Brand logo"
341
  msgstr ""
342
 
@@ -386,166 +394,175 @@ msgstr ""
386
  msgid "Show featured brands first"
387
  msgstr ""
388
 
389
- #: classes/admin/class-pwb-admin-tab.php:73
390
  msgid "Brands settings"
391
  msgstr ""
392
 
393
- #: classes/admin/class-pwb-admin-tab.php:79
394
  msgid "Slug"
395
  msgstr ""
396
 
397
- #: classes/admin/class-pwb-admin-tab.php:82
398
  msgid "Brands taxonomy slug"
399
  msgstr ""
400
 
401
- #: classes/admin/class-pwb-admin-tab.php:87
402
  msgid "Show brand description"
403
  msgstr ""
404
 
405
- #: classes/admin/class-pwb-admin-tab.php:91
406
  msgid "Show brand description (if is set) on brand archive page"
407
  msgstr ""
408
 
409
- #: classes/admin/class-pwb-admin-tab.php:94
410
  msgid "Yes, before product loop"
411
  msgstr ""
412
 
413
- #: classes/admin/class-pwb-admin-tab.php:95
414
  msgid "Yes, after product loop"
415
  msgstr ""
416
 
417
- #: classes/admin/class-pwb-admin-tab.php:96
418
  msgid "No, hide description"
419
  msgstr ""
420
 
421
- #: classes/admin/class-pwb-admin-tab.php:100
422
  msgid "Single product tab"
423
  msgstr ""
424
 
425
- #: classes/admin/class-pwb-admin-tab.php:103
426
  msgid "Show brand tab in single product page"
427
  msgstr ""
428
 
429
- #: classes/admin/class-pwb-admin-tab.php:107
430
  msgid "Show brands in loop"
431
  msgstr ""
432
 
433
- #: classes/admin/class-pwb-admin-tab.php:110
434
  msgid "Show brand logo (or name) in product loop"
435
  msgstr ""
436
 
437
- #: classes/admin/class-pwb-admin-tab.php:113
438
- #: classes/admin/class-pwb-admin-tab.php:126
439
  msgid "No"
440
  msgstr ""
441
 
442
- #: classes/admin/class-pwb-admin-tab.php:114
443
- #: classes/admin/class-pwb-admin-tab.php:127
444
  msgid "Show brand link"
445
  msgstr ""
446
 
447
- #: classes/admin/class-pwb-admin-tab.php:115
448
- #: classes/admin/class-pwb-admin-tab.php:128
449
  msgid "Show brand image (if is set)"
450
  msgstr ""
451
 
452
- #: classes/admin/class-pwb-admin-tab.php:119
453
  msgid "Show brands in single product"
454
  msgstr ""
455
 
456
- #: classes/admin/class-pwb-admin-tab.php:122
457
  msgid "Show brand logo (or name) in single product"
458
  msgstr ""
459
 
460
- #: classes/admin/class-pwb-admin-tab.php:135
461
  msgid "Brand logo size for single product view"
462
  msgstr ""
463
 
464
- #: classes/admin/class-pwb-admin-tab.php:140
465
  msgid "Brand position"
466
  msgstr ""
467
 
468
- #: classes/admin/class-pwb-admin-tab.php:143
469
  msgid "For single product"
470
  msgstr ""
471
 
472
- #: classes/admin/class-pwb-admin-tab.php:146
473
  msgid "Before title"
474
  msgstr ""
475
 
476
- #: classes/admin/class-pwb-admin-tab.php:147
477
  msgid "After title"
478
  msgstr ""
479
 
480
- #: classes/admin/class-pwb-admin-tab.php:148
481
  msgid "After price"
482
  msgstr ""
483
 
484
- #: classes/admin/class-pwb-admin-tab.php:149
485
  msgid "After excerpt"
486
  msgstr ""
487
 
488
- #: classes/admin/class-pwb-admin-tab.php:150
489
  msgid "After add to cart"
490
  msgstr ""
491
 
492
- #: classes/admin/class-pwb-admin-tab.php:151
493
  msgid "After meta"
494
  msgstr ""
495
 
496
- #: classes/admin/class-pwb-admin-tab.php:152
497
  msgid "After sharing"
498
  msgstr ""
499
 
500
- #: classes/admin/class-pwb-admin-tab.php:169
 
 
 
 
 
 
 
 
501
  msgid "Tools"
502
  msgstr ""
503
 
504
- #: classes/admin/class-pwb-admin-tab.php:175
 
505
  msgid "Import brands"
506
  msgstr ""
507
 
508
- #: classes/admin/class-pwb-admin-tab.php:179
509
  #, php-format
510
  msgid ""
511
  "Import brands from other brand plugin. <a href=\"%s\" target=\"_blank"
512
  "\">Click here for more details</a>"
513
  msgstr ""
514
 
515
- #: classes/admin/class-pwb-admin-tab.php:184
516
- #: classes/admin/class-pwb-admin-tab.php:197
517
  msgid "-"
518
  msgstr ""
519
 
520
- #: classes/admin/class-pwb-admin-tab.php:185
521
  msgid "YITH WooCommerce Brands Add-On"
522
  msgstr ""
523
 
524
- #: classes/admin/class-pwb-admin-tab.php:186
525
  msgid "Ultimate WooCommerce Brands"
526
  msgstr ""
527
 
528
- #: classes/admin/class-pwb-admin-tab.php:187
529
  msgid "Offical WooCommerce Brands"
530
  msgstr ""
531
 
532
- #: classes/admin/class-pwb-admin-tab.php:191
533
  msgid "Dummy data"
534
  msgstr ""
535
 
536
- #: classes/admin/class-pwb-admin-tab.php:194
537
  msgid "Import generic brands and assign it to products randomly"
538
  msgstr ""
539
 
540
- #: classes/admin/class-pwb-admin-tab.php:198
541
  msgid "Start import"
542
  msgstr ""
543
 
544
- #: classes/admin/class-pwb-admin-tab.php:202
545
  msgid "System status"
546
  msgstr ""
547
 
548
- #: classes/admin/class-pwb-admin-tab.php:204
549
  msgid "Show system status"
550
  msgstr ""
551
 
@@ -563,23 +580,23 @@ msgid ""
563
  "cart"
564
  msgstr ""
565
 
566
- #: classes/shortcodes/class-pwb-all-brands.php:111
567
  msgid "First page"
568
  msgstr ""
569
 
570
- #: classes/shortcodes/class-pwb-all-brands.php:114
571
  msgid "Previous page"
572
  msgstr ""
573
 
574
- #: classes/shortcodes/class-pwb-all-brands.php:118
575
  msgid "Next page"
576
  msgstr ""
577
 
578
- #: classes/shortcodes/class-pwb-all-brands.php:121
579
  msgid "Last page"
580
  msgstr ""
581
 
582
- #: classes/shortcodes/class-pwb-all-brands.php:126
583
  msgid "No results"
584
  msgstr ""
585
 
@@ -591,28 +608,36 @@ msgstr ""
591
  msgid "Brands dropdown"
592
  msgstr ""
593
 
594
- #: classes/widgets/class-pwb-dropdown.php:24
595
  msgid "Title"
596
  msgstr ""
597
 
598
- #: classes/widgets/class-pwb-dropdown.php:66
599
- #: classes/widgets/class-pwb-list.php:115
600
- msgid "There is not available brands"
601
  msgstr ""
602
 
603
- #: classes/widgets/class-pwb-filter-by-brand.php:10
604
  msgid "Recommended for product categories or shop page"
605
  msgstr ""
606
 
607
- #: classes/widgets/class-pwb-filter-by-brand.php:11
608
  msgid "Filter products by brand"
609
  msgstr ""
610
 
611
- #: classes/widgets/class-pwb-filter-by-brand.php:23
612
- #: classes/widgets/class-pwb-list.php:25
613
  msgid "Title:"
614
  msgstr ""
615
 
 
 
 
 
 
 
 
 
616
  #: classes/widgets/class-pwb-list.php:10
617
  msgid "Adds a brands list to your site"
618
  msgstr ""
@@ -621,23 +646,36 @@ msgstr ""
621
  msgid "Brands list"
622
  msgstr ""
623
 
624
- #: classes/widgets/class-pwb-list.php:34
625
  msgid "Display as:"
626
  msgstr ""
627
 
628
- #: classes/widgets/class-pwb-list.php:39
629
  msgid "Brand name"
630
  msgstr ""
631
 
632
- #: classes/widgets/class-pwb-list.php:45
633
  msgid "Columns:"
634
  msgstr ""
635
 
636
- #: classes/widgets/class-pwb-list.php:107
637
- #: classes/widgets/class-pwb-list.php:109
 
 
 
638
  msgid "Go to"
639
  msgstr ""
640
 
 
 
 
 
 
 
 
 
 
 
641
  #: templates/shortcodes/carousel.php:24
642
  #: templates/shortcodes/product-carousel.php:28
643
  msgid "Loading"
@@ -647,6 +685,6 @@ msgstr ""
647
  msgid "Nothing found"
648
  msgstr ""
649
 
650
- #: templates/widgets/filter-by-brand.php:24
651
  msgid "Apply filter"
652
- msgstr ""
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
  #, fuzzy
7
  msgid ""
8
  msgstr ""
9
+ "Project-Id-Version: PACKAGE VERSION\n"
10
+ "Report-Msgid-Bugs-To: \n"
11
+ "POT-Creation-Date: 2018-11-29 00:11+0100\n"
12
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
  "Language: \n"
16
  "MIME-Version: 1.0\n"
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
  "Content-Transfer-Encoding: 8bit\n"
 
 
19
 
20
+ #: main.php:106
21
  msgid ""
22
  "Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
23
  "active WooCommerce plugin."
24
  msgstr ""
25
 
26
+ #: classes/class-perfect-woocommerce-brands.php:52
27
  msgid ""
28
  "We know that you´re in love with Perfect WooCommerce Brands, you can help us "
29
  "making it a bit better. Thanks a lot!"
30
  msgstr ""
31
 
32
+ #: classes/class-perfect-woocommerce-brands.php:54
33
  msgid ""
34
  "<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
35
  "reviews/?rate=5#new-post\" target=\"_blank\">Leave a review</a>"
36
  msgstr ""
37
 
38
+ #: classes/class-perfect-woocommerce-brands.php:55
39
  msgid ""
40
  "<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
41
  "woocommerce-brands\" target=\"_blank\">Translate the plugin</a>"
42
  msgstr ""
43
 
44
+ #: classes/class-perfect-woocommerce-brands.php:56
45
  msgid ""
46
  "<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
47
  "\"_blank\">View on GitHub</a>"
48
  msgstr ""
49
 
50
+ #: classes/class-perfect-woocommerce-brands.php:79
51
  msgid "Settings"
52
  msgstr ""
53
 
54
+ #: classes/class-perfect-woocommerce-brands.php:280
55
  msgid "PWB Product carousel"
56
  msgstr ""
57
 
58
+ #: classes/class-perfect-woocommerce-brands.php:281
59
  msgid "Product carousel by brand or by category"
60
  msgstr ""
61
 
62
+ #: classes/class-perfect-woocommerce-brands.php:289
63
+ #: classes/class-perfect-woocommerce-brands.php:611
64
  #: classes/class-pwb-product-tab.php:18 classes/class-pwb-product-tab.php:35
65
  #: classes/admin/class-pwb-exporter-support.php:22
66
  #: classes/admin/class-pwb-importer-support.php:22
68
  msgid "Brand"
69
  msgstr ""
70
 
71
+ #: classes/class-perfect-woocommerce-brands.php:297
72
  msgid "Products"
73
  msgstr ""
74
 
75
+ #: classes/class-perfect-woocommerce-brands.php:300
76
  msgid "Number of products to load"
77
  msgstr ""
78
 
79
+ #: classes/class-perfect-woocommerce-brands.php:305
80
  msgid "Products to show"
81
  msgstr ""
82
 
83
+ #: classes/class-perfect-woocommerce-brands.php:308
84
  msgid "Number of products to show"
85
  msgstr ""
86
 
87
+ #: classes/class-perfect-woocommerce-brands.php:313
88
  msgid "Products to scroll"
89
  msgstr ""
90
 
91
+ #: classes/class-perfect-woocommerce-brands.php:316
92
  msgid "Number of products to scroll"
93
  msgstr ""
94
 
95
+ #: classes/class-perfect-woocommerce-brands.php:321
96
+ #: classes/class-perfect-woocommerce-brands.php:370
97
  msgid "Autoplay"
98
  msgstr ""
99
 
100
+ #: classes/class-perfect-woocommerce-brands.php:323
101
+ #: classes/class-perfect-woocommerce-brands.php:372
102
  msgid "Autoplay carousel"
103
  msgstr ""
104
 
105
+ #: classes/class-perfect-woocommerce-brands.php:328
106
+ #: classes/class-perfect-woocommerce-brands.php:377
107
  msgid "Arrows"
108
  msgstr ""
109
 
110
+ #: classes/class-perfect-woocommerce-brands.php:330
111
+ #: classes/class-perfect-woocommerce-brands.php:379
112
  msgid "Display prev and next arrows"
113
  msgstr ""
114
 
115
+ #: classes/class-perfect-woocommerce-brands.php:336
116
  msgid "PWB Brands carousel"
117
  msgstr ""
118
 
119
+ #: classes/class-perfect-woocommerce-brands.php:337
120
  msgid "Brands carousel"
121
  msgstr ""
122
 
123
+ #: classes/class-perfect-woocommerce-brands.php:346
124
  msgid "Items"
125
  msgstr ""
126
 
127
+ #: classes/class-perfect-woocommerce-brands.php:349
128
  msgid "Number of items to load (or 'featured')"
129
  msgstr ""
130
 
131
+ #: classes/class-perfect-woocommerce-brands.php:354
132
  msgid "Items to show"
133
  msgstr ""
134
 
135
+ #: classes/class-perfect-woocommerce-brands.php:357
136
  msgid "Number of items to show"
137
  msgstr ""
138
 
139
+ #: classes/class-perfect-woocommerce-brands.php:362
140
  msgid "Items to scroll"
141
  msgstr ""
142
 
143
+ #: classes/class-perfect-woocommerce-brands.php:365
144
  msgid "Number of items to scroll"
145
  msgstr ""
146
 
147
+ #: classes/class-perfect-woocommerce-brands.php:383
148
+ #: classes/class-perfect-woocommerce-brands.php:411
149
+ #: classes/class-perfect-woocommerce-brands.php:492
150
+ #: classes/admin/class-pwb-admin-tab.php:129
151
  msgid "Brand logo size"
152
  msgstr ""
153
 
154
+ #: classes/class-perfect-woocommerce-brands.php:394
155
  msgid "PWB All brands"
156
  msgstr ""
157
 
158
+ #: classes/class-perfect-woocommerce-brands.php:395
159
  msgid "Show all brands"
160
  msgstr ""
161
 
162
+ #: classes/class-perfect-woocommerce-brands.php:404
163
  msgid "Brands per page"
164
  msgstr ""
165
 
166
+ #: classes/class-perfect-woocommerce-brands.php:407
167
  msgid "Show x brands per page"
168
  msgstr ""
169
 
170
+ #: classes/class-perfect-woocommerce-brands.php:418
171
  msgid "Order by"
172
  msgstr ""
173
 
174
+ #: classes/class-perfect-woocommerce-brands.php:432
175
  msgid "Order"
176
  msgstr ""
177
 
178
+ #: classes/class-perfect-woocommerce-brands.php:442
179
  msgid "Title position"
180
  msgstr ""
181
 
182
+ #: classes/class-perfect-woocommerce-brands.php:446
183
  msgid "Before image"
184
  msgstr ""
185
 
186
+ #: classes/class-perfect-woocommerce-brands.php:447
187
  msgid "After image"
188
  msgstr ""
189
 
190
+ #: classes/class-perfect-woocommerce-brands.php:448
191
  msgid "Hide"
192
  msgstr ""
193
 
194
+ #: classes/class-perfect-woocommerce-brands.php:454
195
+ #: classes/widgets/class-pwb-dropdown.php:43
196
+ #: classes/widgets/class-pwb-list.php:67
 
197
  msgid "Hide empty"
198
  msgstr ""
199
 
200
+ #: classes/class-perfect-woocommerce-brands.php:456
201
  msgid "Hide brands that have not been assigned to any product"
202
  msgstr ""
203
 
204
+ #: classes/class-perfect-woocommerce-brands.php:464
205
+ msgid "PWB AZ Listing"
206
+ msgstr ""
207
+
208
+ #: classes/class-perfect-woocommerce-brands.php:465
209
+ msgid "AZ Listing for brands"
210
+ msgstr ""
211
+
212
+ #: classes/class-perfect-woocommerce-brands.php:474
213
  msgid "PWB brand"
214
  msgstr ""
215
 
216
+ #: classes/class-perfect-woocommerce-brands.php:475
217
  msgid "Show brand for a specific product"
218
  msgstr ""
219
 
220
+ #: classes/class-perfect-woocommerce-brands.php:485
221
  msgid "Product id"
222
  msgstr ""
223
 
224
+ #: classes/class-perfect-woocommerce-brands.php:488
225
  msgid "Product id (post id)"
226
  msgstr ""
227
 
228
+ #: classes/class-perfect-woocommerce-brands.php:533
 
 
229
  #: classes/shortcodes/class-pwb-brand.php:29
230
  #: classes/shortcodes/class-pwb-brand.php:31
 
231
  msgid "View brand"
232
  msgstr ""
233
 
234
+ #: classes/class-perfect-woocommerce-brands.php:598
235
  msgid "¿Start migration?"
236
  msgstr ""
237
 
238
+ #: classes/class-perfect-woocommerce-brands.php:599
239
  msgid ""
240
  "We are migrating the product brands. ¡Don´t close this window until the "
241
  "process is finished!"
242
  msgstr ""
243
 
244
+ #: classes/class-perfect-woocommerce-brands.php:600
245
  msgid "¿Start loading dummy data?"
246
  msgstr ""
247
 
248
+ #: classes/class-perfect-woocommerce-brands.php:601
249
  msgid ""
250
  "We are importing the dummy data. ¡Don´t close this window until the process "
251
  "is finished!"
252
  msgstr ""
253
 
254
+ #: classes/class-perfect-woocommerce-brands.php:610
255
+ #: classes/class-perfect-woocommerce-brands.php:612
256
  #: classes/admin/class-edit-brands-page.php:128
257
  #: classes/admin/class-pwb-admin-tab.php:21
258
+ #: classes/widgets/class-pwb-dropdown.php:19
259
+ #: classes/widgets/class-pwb-filter-by-brand.php:20
260
+ #: classes/widgets/class-pwb-filter-by-brand.php:75
261
+ #: classes/widgets/class-pwb-list.php:19 templates/widgets/dropdown.php:16
262
  msgid "Brands"
263
  msgstr ""
264
 
265
+ #: classes/class-perfect-woocommerce-brands.php:613
266
  msgid "All Brands"
267
  msgstr ""
268
 
269
+ #: classes/class-perfect-woocommerce-brands.php:614
270
  msgid "Edit Brand"
271
  msgstr ""
272
 
273
+ #: classes/class-perfect-woocommerce-brands.php:615
274
  msgid "View Brand"
275
  msgstr ""
276
 
277
+ #: classes/class-perfect-woocommerce-brands.php:616
278
  msgid "Update Brand"
279
  msgstr ""
280
 
281
+ #: classes/class-perfect-woocommerce-brands.php:617
282
  msgid "Add New Brand"
283
  msgstr ""
284
 
285
+ #: classes/class-perfect-woocommerce-brands.php:618
286
  msgid "New Brand Name"
287
  msgstr ""
288
 
289
+ #: classes/class-perfect-woocommerce-brands.php:619
290
  msgid "Parent Brand"
291
  msgstr ""
292
 
293
+ #: classes/class-perfect-woocommerce-brands.php:620
294
  msgid "Parent Brand:"
295
  msgstr ""
296
 
297
+ #: classes/class-perfect-woocommerce-brands.php:621
298
  msgid "Search Brands"
299
  msgstr ""
300
 
301
+ #: classes/class-perfect-woocommerce-brands.php:622
302
  msgid "Popular Brands"
303
  msgstr ""
304
 
305
+ #: classes/class-perfect-woocommerce-brands.php:623
306
  msgid "Separate brands with commas"
307
  msgstr ""
308
 
309
+ #: classes/class-perfect-woocommerce-brands.php:624
310
  msgid "Add or remove brands"
311
  msgstr ""
312
 
313
+ #: classes/class-perfect-woocommerce-brands.php:625
314
  msgid "Choose from the most used brands"
315
  msgstr ""
316
 
317
+ #: classes/class-perfect-woocommerce-brands.php:626
318
  msgid "No brands found"
319
  msgstr ""
320
 
321
+ #: classes/class-perfect-woocommerce-brands.php:697
322
  msgid "All"
323
  msgstr ""
324
 
325
+ #: classes/class-pwb-api-support.php:87
326
  msgid "Product brands"
327
  msgstr ""
328
 
329
+ #: classes/class-pwb-term.php:20
330
+ msgid "Only WP_Term objects are allowed"
331
+ msgstr ""
332
+
333
  #: classes/admin/class-brands-custom-fields.php:20
334
  #: classes/admin/class-brands-custom-fields.php:59
335
  msgid "Description"
344
 
345
  #: classes/admin/class-brands-custom-fields.php:26
346
  #: classes/admin/class-brands-custom-fields.php:68
347
+ #: classes/widgets/class-pwb-list.php:43
348
  msgid "Brand logo"
349
  msgstr ""
350
 
394
  msgid "Show featured brands first"
395
  msgstr ""
396
 
397
+ #: classes/admin/class-pwb-admin-tab.php:70
398
  msgid "Brands settings"
399
  msgstr ""
400
 
401
+ #: classes/admin/class-pwb-admin-tab.php:76
402
  msgid "Slug"
403
  msgstr ""
404
 
405
+ #: classes/admin/class-pwb-admin-tab.php:79
406
  msgid "Brands taxonomy slug"
407
  msgstr ""
408
 
409
+ #: classes/admin/class-pwb-admin-tab.php:84
410
  msgid "Show brand description"
411
  msgstr ""
412
 
413
+ #: classes/admin/class-pwb-admin-tab.php:88
414
  msgid "Show brand description (if is set) on brand archive page"
415
  msgstr ""
416
 
417
+ #: classes/admin/class-pwb-admin-tab.php:91
418
  msgid "Yes, before product loop"
419
  msgstr ""
420
 
421
+ #: classes/admin/class-pwb-admin-tab.php:92
422
  msgid "Yes, after product loop"
423
  msgstr ""
424
 
425
+ #: classes/admin/class-pwb-admin-tab.php:93
426
  msgid "No, hide description"
427
  msgstr ""
428
 
429
+ #: classes/admin/class-pwb-admin-tab.php:97
430
  msgid "Single product tab"
431
  msgstr ""
432
 
433
+ #: classes/admin/class-pwb-admin-tab.php:100
434
  msgid "Show brand tab in single product page"
435
  msgstr ""
436
 
437
+ #: classes/admin/class-pwb-admin-tab.php:104
438
  msgid "Show brands in loop"
439
  msgstr ""
440
 
441
+ #: classes/admin/class-pwb-admin-tab.php:107
442
  msgid "Show brand logo (or name) in product loop"
443
  msgstr ""
444
 
445
+ #: classes/admin/class-pwb-admin-tab.php:110
446
+ #: classes/admin/class-pwb-admin-tab.php:123
447
  msgid "No"
448
  msgstr ""
449
 
450
+ #: classes/admin/class-pwb-admin-tab.php:111
451
+ #: classes/admin/class-pwb-admin-tab.php:124
452
  msgid "Show brand link"
453
  msgstr ""
454
 
455
+ #: classes/admin/class-pwb-admin-tab.php:112
456
+ #: classes/admin/class-pwb-admin-tab.php:125
457
  msgid "Show brand image (if is set)"
458
  msgstr ""
459
 
460
+ #: classes/admin/class-pwb-admin-tab.php:116
461
  msgid "Show brands in single product"
462
  msgstr ""
463
 
464
+ #: classes/admin/class-pwb-admin-tab.php:119
465
  msgid "Show brand logo (or name) in single product"
466
  msgstr ""
467
 
468
+ #: classes/admin/class-pwb-admin-tab.php:132
469
  msgid "Brand logo size for single product view"
470
  msgstr ""
471
 
472
+ #: classes/admin/class-pwb-admin-tab.php:137
473
  msgid "Brand position"
474
  msgstr ""
475
 
476
+ #: classes/admin/class-pwb-admin-tab.php:140
477
  msgid "For single product"
478
  msgstr ""
479
 
480
+ #: classes/admin/class-pwb-admin-tab.php:143
481
  msgid "Before title"
482
  msgstr ""
483
 
484
+ #: classes/admin/class-pwb-admin-tab.php:144
485
  msgid "After title"
486
  msgstr ""
487
 
488
+ #: classes/admin/class-pwb-admin-tab.php:145
489
  msgid "After price"
490
  msgstr ""
491
 
492
+ #: classes/admin/class-pwb-admin-tab.php:146
493
  msgid "After excerpt"
494
  msgstr ""
495
 
496
+ #: classes/admin/class-pwb-admin-tab.php:147
497
  msgid "After add to cart"
498
  msgstr ""
499
 
500
+ #: classes/admin/class-pwb-admin-tab.php:148
501
  msgid "After meta"
502
  msgstr ""
503
 
504
+ #: classes/admin/class-pwb-admin-tab.php:149
505
  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
513
+ msgid "For linking breadcrumbs"
514
+ msgstr ""
515
+
516
+ #: classes/admin/class-pwb-admin-tab.php:173
517
  msgid "Tools"
518
  msgstr ""
519
 
520
+ #: classes/admin/class-pwb-admin-tab.php:179
521
+ #: templates/admin/brands-exporter.php:16
522
  msgid "Import brands"
523
  msgstr ""
524
 
525
+ #: classes/admin/class-pwb-admin-tab.php:183
526
  #, php-format
527
  msgid ""
528
  "Import brands from other brand plugin. <a href=\"%s\" target=\"_blank"
529
  "\">Click here for more details</a>"
530
  msgstr ""
531
 
532
+ #: classes/admin/class-pwb-admin-tab.php:188
533
+ #: classes/admin/class-pwb-admin-tab.php:201
534
  msgid "-"
535
  msgstr ""
536
 
537
+ #: classes/admin/class-pwb-admin-tab.php:189
538
  msgid "YITH WooCommerce Brands Add-On"
539
  msgstr ""
540
 
541
+ #: classes/admin/class-pwb-admin-tab.php:190
542
  msgid "Ultimate WooCommerce Brands"
543
  msgstr ""
544
 
545
+ #: classes/admin/class-pwb-admin-tab.php:191
546
  msgid "Offical WooCommerce Brands"
547
  msgstr ""
548
 
549
+ #: classes/admin/class-pwb-admin-tab.php:195
550
  msgid "Dummy data"
551
  msgstr ""
552
 
553
+ #: classes/admin/class-pwb-admin-tab.php:198
554
  msgid "Import generic brands and assign it to products randomly"
555
  msgstr ""
556
 
557
+ #: classes/admin/class-pwb-admin-tab.php:202
558
  msgid "Start import"
559
  msgstr ""
560
 
561
+ #: classes/admin/class-pwb-admin-tab.php:206
562
  msgid "System status"
563
  msgstr ""
564
 
565
+ #: classes/admin/class-pwb-admin-tab.php:208
566
  msgid "Show system status"
567
  msgstr ""
568
 
580
  "cart"
581
  msgstr ""
582
 
583
+ #: classes/shortcodes/class-pwb-all-brands.php:108
584
  msgid "First page"
585
  msgstr ""
586
 
587
+ #: classes/shortcodes/class-pwb-all-brands.php:111
588
  msgid "Previous page"
589
  msgstr ""
590
 
591
+ #: classes/shortcodes/class-pwb-all-brands.php:115
592
  msgid "Next page"
593
  msgstr ""
594
 
595
+ #: classes/shortcodes/class-pwb-all-brands.php:118
596
  msgid "Last page"
597
  msgstr ""
598
 
599
+ #: classes/shortcodes/class-pwb-all-brands.php:123
600
  msgid "No results"
601
  msgstr ""
602
 
608
  msgid "Brands dropdown"
609
  msgstr ""
610
 
611
+ #: classes/widgets/class-pwb-dropdown.php:26
612
  msgid "Title"
613
  msgstr ""
614
 
615
+ #: classes/widgets/class-pwb-dropdown.php:54
616
+ #: classes/widgets/class-pwb-list.php:77
617
+ msgid "Only favorite brands"
618
  msgstr ""
619
 
620
+ #: classes/widgets/class-pwb-filter-by-brand.php:11
621
  msgid "Recommended for product categories or shop page"
622
  msgstr ""
623
 
624
+ #: classes/widgets/class-pwb-filter-by-brand.php:12
625
  msgid "Filter products by brand"
626
  msgstr ""
627
 
628
+ #: classes/widgets/class-pwb-filter-by-brand.php:25
629
+ #: classes/widgets/class-pwb-list.php:28
630
  msgid "Title:"
631
  msgstr ""
632
 
633
+ #: classes/widgets/class-pwb-filter-by-brand.php:30
634
+ msgid "Max number of brands"
635
+ msgstr ""
636
+
637
+ #: classes/widgets/class-pwb-filter-by-brand.php:41
638
+ msgid "Hide filter button"
639
+ msgstr ""
640
+
641
  #: classes/widgets/class-pwb-list.php:10
642
  msgid "Adds a brands list to your site"
643
  msgstr ""
646
  msgid "Brands list"
647
  msgstr ""
648
 
649
+ #: classes/widgets/class-pwb-list.php:37
650
  msgid "Display as:"
651
  msgstr ""
652
 
653
+ #: classes/widgets/class-pwb-list.php:42
654
  msgid "Brand name"
655
  msgstr ""
656
 
657
+ #: classes/widgets/class-pwb-list.php:47
658
  msgid "Columns:"
659
  msgstr ""
660
 
661
+ #: classes/widgets/class-pwb-list.php:87
662
+ msgid "Randomize"
663
+ msgstr ""
664
+
665
+ #: classes/widgets/class-pwb-list.php:119
666
  msgid "Go to"
667
  msgstr ""
668
 
669
+ #: templates/admin/brands-exporter.php:15
670
+ msgid "Export brands"
671
+ msgstr ""
672
+
673
+ #: templates/admin/brands-exporter.php:18
674
+ msgid ""
675
+ "This tool allows you to export and import the brands between different sites "
676
+ "using PWB."
677
+ msgstr ""
678
+
679
  #: templates/shortcodes/carousel.php:24
680
  #: templates/shortcodes/product-carousel.php:28
681
  msgid "Loading"
685
  msgid "Nothing found"
686
  msgstr ""
687
 
688
+ #: templates/widgets/filter-by-brand.php:25
689
  msgid "Apply filter"
690
+ msgstr ""
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.6.5
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.6.5, 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
@@ -22,8 +22,8 @@
22
  * You should have received a copy of the GNU General Public License
23
  * along with Perfect WooCommerce Brands. If not, see <http://www.gnu.org/licenses/>.
24
  *
25
- * WC requires at least: 2.4
26
- * WC tested up to: 3.4
27
  */
28
 
29
  namespace Perfect_Woocommerce_Brands;
@@ -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.6.5' );
38
  define( 'PWB_WP_VERSION', get_bloginfo( 'version' ) );
39
  define( 'PWB_WC_VERSION', get_option( 'woocommerce_version' ) );
40
 
@@ -62,15 +62,13 @@ if( is_plugin_active( 'woocommerce/woocommerce.php' ) ){
62
  require 'classes/shortcodes/class-pwb-product-carousel.php';
63
  require 'classes/shortcodes/class-pwb-carousel.php';
64
  require 'classes/shortcodes/class-pwb-all-brands.php';
 
65
  require 'classes/shortcodes/class-pwb-brand.php';
66
  require 'classes/class-perfect-woocommerce-brands.php';
67
-
68
- if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '2.6', '>=' ) ){
69
- require 'classes/class-pwb-api-support.php';
70
- new PWB_API_Support();
71
- require 'classes/admin/class-pwb-coupon.php';
72
- new Admin\PWB_Coupon();
73
- }
74
 
75
  if( is_admin() ){
76
 
@@ -85,6 +83,8 @@ if( is_plugin_active( 'woocommerce/woocommerce.php' ) ){
85
  new Admin\Edit_Brands_Page();
86
  require 'classes/admin/class-brands-custom-fields.php';
87
  new Admin\Brands_Custom_Fields();
 
 
88
 
89
  if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '3.1.0', '>=' ) ){
90
  require 'classes/admin/class-pwb-importer-support.php';
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
22
  * You should have received a copy of the GNU General Public License
23
  * along with Perfect WooCommerce Brands. If not, see <http://www.gnu.org/licenses/>.
24
  *
25
+ * WC requires at least: 2.6
26
+ * WC tested up to: 3.5
27
  */
28
 
29
  namespace Perfect_Woocommerce_Brands;
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
 
62
  require 'classes/shortcodes/class-pwb-product-carousel.php';
63
  require 'classes/shortcodes/class-pwb-carousel.php';
64
  require 'classes/shortcodes/class-pwb-all-brands.php';
65
+ require 'classes/shortcodes/class-pwb-az-listing.php';
66
  require 'classes/shortcodes/class-pwb-brand.php';
67
  require 'classes/class-perfect-woocommerce-brands.php';
68
+ require 'classes/class-pwb-api-support.php';
69
+ new PWB_API_Support();
70
+ require 'classes/admin/class-pwb-coupon.php';
71
+ new Admin\PWB_Coupon();
 
 
 
72
 
73
  if( is_admin() ){
74
 
83
  new Admin\Edit_Brands_Page();
84
  require 'classes/admin/class-brands-custom-fields.php';
85
  new Admin\Brands_Custom_Fields();
86
+ require 'classes/admin/class-brands-exporter.php';
87
+ new Admin\Brands_Exporter();
88
 
89
  if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '3.1.0', '>=' ) ){
90
  require 'classes/admin/class-pwb-importer-support.php';
readme.txt CHANGED
@@ -4,7 +4,7 @@ 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.6.5
8
  License: GPL3
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
10
 
@@ -16,9 +16,9 @@ Is essential to work with product brands for increase sales and generate reliabi
16
  With this extension you can add product brands to your WooCommerce site.
17
 
18
  = Requirements =
19
- > * PHP 5.4 or higher (tested on PHP7 too)
20
  > * WordPress 4.4 or higher
21
- > * WooCommerce 2.4.0 or higher
22
  > * Visual Composer (recommended)
23
 
24
  = Features =
@@ -33,6 +33,7 @@ With this extension you can add product brands to your WooCommerce site.
33
  > * Shortcode: Display brands carousel
34
  > * Shortcode: Display product carousel by brand
35
  > * Shortcode: Display brands for a specific product
 
36
  > * Widget: Display brands as dropdown
37
  > * Widget: Display brands as list (brand names or brand logos)
38
  > * Widget: Filter products by brand
@@ -44,6 +45,7 @@ With this extension you can add product brands to your WooCommerce site.
44
  > * WooCommerce built-in product importer/exporter support (WooCommerce 3.1.0+)
45
  > * Brand tab for single product page
46
  > * Favorite brands
 
47
  > * And much more!
48
 
49
 
@@ -78,6 +80,18 @@ Go to `WooCommerce/Settings/` and click on `Brands` tab
78
 
79
 
80
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
81
  = 1.6.5 =
82
  * Include icon and banner brand image in api response (thanks @qbig)
83
  * Feature: New option for show only favorite brands in the dropdown widget and the list widget
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
 
16
  With this extension you can add product brands to your WooCommerce site.
17
 
18
  = Requirements =
19
+ > * PHP 5.4 or higher (PHP7 recommended)
20
  > * WordPress 4.4 or higher
21
+ > * WooCommerce 2.6.0 or higher
22
  > * Visual Composer (recommended)
23
 
24
  = Features =
33
  > * Shortcode: Display brands carousel
34
  > * Shortcode: Display product carousel by brand
35
  > * Shortcode: Display brands for a specific product
36
+ > * Shortcode: A-Z Listing
37
  > * Widget: Display brands as dropdown
38
  > * Widget: Display brands as list (brand names or brand logos)
39
  > * Widget: Filter products by brand
45
  > * WooCommerce built-in product importer/exporter support (WooCommerce 3.1.0+)
46
  > * Brand tab for single product page
47
  > * Favorite brands
48
+ > * Brands json import/export
49
  > * And much more!
50
 
51
 
80
 
81
 
82
  == Changelog ==
83
+ = 1.7.0 =
84
+ * Feature: A-Z Listing shortcode
85
+ * Feature: New brands exporter/importer introduced
86
+ * Fix: Missing some brands to filter
87
+ * Fix: Coupon doesn’t work for product variations (thanks @gekomees)
88
+ * Fix: The brand description is not shown if there are no products
89
+ * Enhancement: wpautop() for brand descriptions
90
+ * Enhancement: Other filter by brand widget enhancements
91
+ * Enhancement: Brands page link in breadcrumbs
92
+ * Enhancement: Enqueue the carousel lib conditionally
93
+ * Dev: New filter hook 'pwb_description_allowed_tags'
94
+ * Update: WC 3.5 compatibility
95
  = 1.6.5 =
96
  * Include icon and banner brand image in api response (thanks @qbig)
97
  * Feature: New option for show only favorite brands in the dropdown widget and the list widget
templates/admin/brands-exporter.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The template for displaying the edit-tags.php exporter/importer
4
+ * @version 1.0.0
5
+ */
6
+
7
+ namespace Perfect_Woocommerce_Brands\Templates;
8
+
9
+ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
10
+
11
+ extract( $data );
12
+ ?>
13
+
14
+ <div class="pwb-brands-exporter pwb-clearfix">
15
+ <button class="button pwb-brands-export"><?php _e('Export brands', 'perfect-woocommerce-brands');?></button>
16
+ <button class="button pwb-brands-import"><?php _e('Import brands', 'perfect-woocommerce-brands');?></button>
17
+ <input type="file" class="pwb-brands-import-file" accept="application/json">
18
+ <p><?php _e( 'This tool allows you to export and import the brands between different sites using PWB.', 'perfect-woocommerce-brands' );?></p>
19
+ </div>
templates/shortcodes/carousel.php CHANGED
@@ -15,7 +15,7 @@
15
 
16
  <?php foreach( $brands as $brand ): ?>
17
  <div class="pwb-slick-slide">
18
- <a href="<?php echo $brand['link'];?>" title="<?php _e( 'View brand', 'perfect-woocommerce-brands' ); ?>">
19
  <?php echo $brand['attachment_html'];?>
20
  </a>
21
  </div>
15
 
16
  <?php foreach( $brands as $brand ): ?>
17
  <div class="pwb-slick-slide">
18
+ <a href="<?php echo $brand['link'];?>" title="<?php echo $brand['name']; ?>">
19
  <?php echo $brand['attachment_html'];?>
20
  </a>
21
  </div>
uninstall.php CHANGED
@@ -12,6 +12,9 @@
12
  delete_option('wc_pwb_admin_tab_section_end');
13
  delete_option('wc_pwb_notice_plugin_review');
14
 
 
 
 
15
  //update permalinks and clean cache
16
  flush_rewrite_rules();
17
  wp_cache_flush();
12
  delete_option('wc_pwb_admin_tab_section_end');
13
  delete_option('wc_pwb_notice_plugin_review');
14
 
15
+ //elimina el archivo de marcas exportadas si existe
16
+ unlink( WP_CONTENT_DIR . '/uploads/pwb-export.json' );
17
+
18
  //update permalinks and clean cache
19
  flush_rewrite_rules();
20
  wp_cache_flush();