Version Description
- Feature: Favorite brands
- Fix: Brand logo full size option for single product
- Fix: Coupons brands restriction (thanks @josk79)
- Fix: Import products fixes
- Fix: PHP7 warning on 'class-perfect-woocommerce-brands.php'
- Fix: Brand not added when Duplicating Product
- Enhancement: Filter by brand widget enhancements
- Enhancement: Carousels enhancements
- Enhancement: JS and CSS minified
Download this release
Release Info
| Developer | titodevera |
| Plugin | |
| Version | 1.6.1 |
| Comparing to | |
| See all releases | |
Code changes from version 1.6.0 to 1.6.1
- assets/css/styles-admin.css +57 -1
- assets/css/styles-admin.min.css +1 -0
- assets/css/styles-frontend.css +91 -9
- assets/css/styles-frontend.min.css +1 -0
- assets/js/pwb_admin_functions.js +41 -0
- assets/js/pwb_admin_functions.min.js +1 -0
- assets/js/pwb_frontend_functions.js +4 -0
- assets/js/pwb_frontend_functions.min.js +1 -0
- classes/admin/class-edit-brands-page.php +146 -0
- classes/admin/class-pwb-admin-tab.php +1 -0
- classes/admin/class-pwb-coupon.php +14 -0
- classes/class-perfect-woocommerce-brands.php +729 -798
- classes/class-pwb-importer-support.php +4 -15
- classes/shortcodes/class-pwb-carousel.php +52 -44
- classes/shortcodes/class-pwb-product-carousel.php +69 -28
- classes/widgets/class-pwb-filter-by-brand.php +25 -16
- lang/perfect-woocommerce-brands-es_ES.mo +0 -0
- lang/perfect-woocommerce-brands-es_ES.po +185 -153
- main.php +29 -28
- readme.txt +12 -1
- templates/admin/edit-brands-bottom.php +19 -0
- templates/shortcodes/carousel.php +26 -0
- templates/shortcodes/product-carousel.php +36 -0
- templates/widgets/filter-by-brand.php +25 -0
assets/css/styles-admin.css
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
/* ----------------------- Taxonomy pwb-brand ----------------------- */
|
| 2 |
.taxonomy-pwb-brand .pwb_brand_image_selected_remove{
|
| 3 |
color: #FF3030;
|
|
@@ -34,14 +44,60 @@
|
|
| 34 |
.taxonomy-pwb-brand .pwb_brand_cont div{
|
| 35 |
margin-top: 10px;
|
| 36 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
@media screen and (max-width: 782px) {
|
| 38 |
.taxonomy-pwb-brand .wp-list-table thead th.column-logo, .taxonomy-pwb-brand .wp-list-table tfoot th.column-logo {
|
| 39 |
display: none;
|
| 40 |
}
|
| 41 |
-
|
| 42 |
.taxonomy-pwb-brand .wp-list-table td.column-logo:before {
|
| 43 |
content: ""!important;
|
| 44 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
}
|
| 46 |
/* ----------------------- /Taxonomy pwb-brand ----------------------- */
|
| 47 |
|
| 1 |
+
/* ----------------------- Global ----------------------- */
|
| 2 |
+
.pwb-clearfix:after{
|
| 3 |
+
content: "";
|
| 4 |
+
display: table;
|
| 5 |
+
clear: both;
|
| 6 |
+
}
|
| 7 |
+
.pwb-blocked{
|
| 8 |
+
opacity: .6;
|
| 9 |
+
}
|
| 10 |
+
/* ----------------------- /Global ----------------------- */
|
| 11 |
/* ----------------------- Taxonomy pwb-brand ----------------------- */
|
| 12 |
.taxonomy-pwb-brand .pwb_brand_image_selected_remove{
|
| 13 |
color: #FF3030;
|
| 44 |
.taxonomy-pwb-brand .pwb_brand_cont div{
|
| 45 |
margin-top: 10px;
|
| 46 |
}
|
| 47 |
+
.taxonomy-pwb-brand #col-right.pwb-force-full-width .pwb-edit-brands-bottom > span{
|
| 48 |
+
-ms-transform: rotate(180deg);
|
| 49 |
+
-webkit-transform: rotate(180deg);
|
| 50 |
+
transform: rotate(180deg);
|
| 51 |
+
}
|
| 52 |
+
.taxonomy-pwb-brand table.wp-list-table .column-featured{
|
| 53 |
+
width: 48px;
|
| 54 |
+
text-align: center;
|
| 55 |
+
}
|
| 56 |
+
.taxonomy-pwb-brand .pwb-edit-brands-bottom{
|
| 57 |
+
margin-top: 20px;
|
| 58 |
+
margin-bottom: 20px;
|
| 59 |
+
background-color: #f6f6f6;
|
| 60 |
+
border-top: 1px solid #e4e4e4;
|
| 61 |
+
padding: 10px;
|
| 62 |
+
}
|
| 63 |
+
.taxonomy-pwb-brand .pwb-edit-brands-bottom > span:hover{
|
| 64 |
+
cursor: pointer;
|
| 65 |
+
}
|
| 66 |
+
.taxonomy-pwb-brand .pwb-edit-brands-bottom > span{
|
| 67 |
+
float: left;
|
| 68 |
+
}
|
| 69 |
+
.taxonomy-pwb-brand .pwb-featured-count{
|
| 70 |
+
font-style: italic;
|
| 71 |
+
float: right;
|
| 72 |
+
margin-left: 12px;
|
| 73 |
+
margin-top: 0;
|
| 74 |
+
margin-bottom: 0;
|
| 75 |
+
}
|
| 76 |
+
.taxonomy-pwb-brand table.wp-list-table .column-featured .dashicons-star-empty:hover:before{
|
| 77 |
+
content: "\f155";
|
| 78 |
+
}
|
| 79 |
+
.taxonomy-pwb-brand table .column-featured > span:hover{
|
| 80 |
+
cursor: pointer;
|
| 81 |
+
}
|
| 82 |
@media screen and (max-width: 782px) {
|
| 83 |
.taxonomy-pwb-brand .wp-list-table thead th.column-logo, .taxonomy-pwb-brand .wp-list-table tfoot th.column-logo {
|
| 84 |
display: none;
|
| 85 |
}
|
|
|
|
| 86 |
.taxonomy-pwb-brand .wp-list-table td.column-logo:before {
|
| 87 |
content: ""!important;
|
| 88 |
}
|
| 89 |
+
.taxonomy-pwb-brand .pwb-edit-brands-bottom > span{
|
| 90 |
+
display: none;
|
| 91 |
+
}
|
| 92 |
+
}
|
| 93 |
+
@media screen and (min-width: 782px) {
|
| 94 |
+
.taxonomy-pwb-brand #col-right.pwb-force-full-width{
|
| 95 |
+
width: 100%!important;
|
| 96 |
+
}
|
| 97 |
+
.taxonomy-pwb-brand #col-left.pwb-force-full-width{
|
| 98 |
+
width: 0!important;
|
| 99 |
+
display: none!important;
|
| 100 |
+
}
|
| 101 |
}
|
| 102 |
/* ----------------------- /Taxonomy pwb-brand ----------------------- */
|
| 103 |
|
assets/css/styles-admin.min.css
ADDED
|
@@ -0,0 +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}.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}}.widgets-php .widget[id*="_pwb_"] .widget-title{border-left:2px solid #cda000}#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}.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}}
|
assets/css/styles-frontend.css
CHANGED
|
@@ -6,7 +6,7 @@
|
|
| 6 |
}
|
| 7 |
/* ----------------------- /Global ----------------------- */
|
| 8 |
|
| 9 |
-
/* -----------------------
|
| 10 |
.pwb-carousel .slick-slide a{
|
| 11 |
display: block;
|
| 12 |
}
|
|
@@ -22,24 +22,18 @@
|
|
| 22 |
.pwb-carousel .slick-prev, .pwb-carousel .slick-next,
|
| 23 |
.pwb-product-carousel .slick-prev, .pwb-product-carousel .slick-next{
|
| 24 |
font-size: 0;
|
| 25 |
-
|
| 26 |
position: absolute;
|
| 27 |
top: 0;
|
| 28 |
bottom: 0;
|
| 29 |
-
|
| 30 |
display: block;
|
| 31 |
-
|
| 32 |
cursor: pointer;
|
| 33 |
-
|
| 34 |
font-size: 22px;
|
| 35 |
width: 30px;
|
| 36 |
overflow: hidden;
|
| 37 |
text-align: center;
|
| 38 |
-
|
| 39 |
color: #aeaeae;
|
| 40 |
border: none;
|
| 41 |
outline: none;
|
| 42 |
-
|
| 43 |
z-index: 999;
|
| 44 |
background: #eee;
|
| 45 |
opacity: 0;
|
|
@@ -47,7 +41,6 @@
|
|
| 47 |
-webkit-transition: opacity 0.3s ease-in-out;
|
| 48 |
-moz-transition: opacity 0.3s ease-in-out;
|
| 49 |
-o-transition: opacity 0.3s ease-in-out;
|
| 50 |
-
|
| 51 |
}
|
| 52 |
.pwb-carousel .slick-prev > span, .pwb-carousel .slick-next > span,
|
| 53 |
.pwb-product-carousel .slick-prev > span, .pwb-product-carousel .slick-next > span{
|
|
@@ -86,7 +79,96 @@
|
|
| 86 |
width: 100%;
|
| 87 |
margin-bottom: 12px;
|
| 88 |
}
|
| 89 |
-
/*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
|
| 91 |
/* ----------------------- PWB All Brands ----------------------- */
|
| 92 |
.pwb-brands-cols-outer{
|
| 6 |
}
|
| 7 |
/* ----------------------- /Global ----------------------- */
|
| 8 |
|
| 9 |
+
/* ----------------------- Carousels ----------------------- */
|
| 10 |
.pwb-carousel .slick-slide a{
|
| 11 |
display: block;
|
| 12 |
}
|
| 22 |
.pwb-carousel .slick-prev, .pwb-carousel .slick-next,
|
| 23 |
.pwb-product-carousel .slick-prev, .pwb-product-carousel .slick-next{
|
| 24 |
font-size: 0;
|
|
|
|
| 25 |
position: absolute;
|
| 26 |
top: 0;
|
| 27 |
bottom: 0;
|
|
|
|
| 28 |
display: block;
|
|
|
|
| 29 |
cursor: pointer;
|
|
|
|
| 30 |
font-size: 22px;
|
| 31 |
width: 30px;
|
| 32 |
overflow: hidden;
|
| 33 |
text-align: center;
|
|
|
|
| 34 |
color: #aeaeae;
|
| 35 |
border: none;
|
| 36 |
outline: none;
|
|
|
|
| 37 |
z-index: 999;
|
| 38 |
background: #eee;
|
| 39 |
opacity: 0;
|
| 41 |
-webkit-transition: opacity 0.3s ease-in-out;
|
| 42 |
-moz-transition: opacity 0.3s ease-in-out;
|
| 43 |
-o-transition: opacity 0.3s ease-in-out;
|
|
|
|
| 44 |
}
|
| 45 |
.pwb-carousel .slick-prev > span, .pwb-carousel .slick-next > span,
|
| 46 |
.pwb-product-carousel .slick-prev > span, .pwb-product-carousel .slick-next > span{
|
| 79 |
width: 100%;
|
| 80 |
margin-bottom: 12px;
|
| 81 |
}
|
| 82 |
+
/* ------ Preloader ------ */
|
| 83 |
+
.pwb-carousel, .pwb-product-carousel{
|
| 84 |
+
min-height: 30px;
|
| 85 |
+
}
|
| 86 |
+
.pwb-carousel .slick-list,
|
| 87 |
+
.pwb-product-carousel .slick-list {
|
| 88 |
+
opacity: 0;
|
| 89 |
+
position: absolute;
|
| 90 |
+
}
|
| 91 |
+
.pwb-carousel.slick-initialized,
|
| 92 |
+
.pwb-product-carousel.slick-initialized {
|
| 93 |
+
min-height: none;
|
| 94 |
+
}
|
| 95 |
+
.pwb-carousel.slick-initialized .slick-list,
|
| 96 |
+
.pwb-product-carousel.slick-initialized .slick-list {
|
| 97 |
+
opacity: 1;
|
| 98 |
+
position: relative;
|
| 99 |
+
transition: opacity 0.2s ease-in;
|
| 100 |
+
}
|
| 101 |
+
.pwb-carousel.slick-initialized .pwb-carousel-loader,
|
| 102 |
+
.pwb-product-carousel.slick-initialized .pwb-carousel-loader {
|
| 103 |
+
display: none!important;
|
| 104 |
+
opacity: 0!important;
|
| 105 |
+
}
|
| 106 |
+
.pwb-carousel-loader{
|
| 107 |
+
font-size: 10px;
|
| 108 |
+
margin: 50px auto;
|
| 109 |
+
text-indent: -9999em;
|
| 110 |
+
width: 30px;
|
| 111 |
+
height: 30px;
|
| 112 |
+
border-radius: 50%;
|
| 113 |
+
background: #525252;
|
| 114 |
+
background: -moz-linear-gradient(left, #525252 10%, rgba(82,82,82, 0) 42%);
|
| 115 |
+
background: -webkit-linear-gradient(left, #525252 10%, rgba(82,82,82, 0) 42%);
|
| 116 |
+
background: -o-linear-gradient(left, #525252 10%, rgba(82,82,82, 0) 42%);
|
| 117 |
+
background: -ms-linear-gradient(left, #525252 10%, rgba(82,82,82, 0) 42%);
|
| 118 |
+
background: linear-gradient(to right, #525252 10%, rgba(82,82,82, 0) 42%);
|
| 119 |
+
position: relative;
|
| 120 |
+
-webkit-animation: PWBCarouselLoader 1.4s infinite linear;
|
| 121 |
+
animation: PWBCarouselLoader 1.4s infinite linear;
|
| 122 |
+
-webkit-transform: translateZ(0);
|
| 123 |
+
-ms-transform: translateZ(0);
|
| 124 |
+
transform: translateZ(0);
|
| 125 |
+
}
|
| 126 |
+
.pwb-carousel-loader:before {
|
| 127 |
+
width: 50%;
|
| 128 |
+
height: 50%;
|
| 129 |
+
background: #525252;
|
| 130 |
+
border-radius: 100% 0 0 0;
|
| 131 |
+
position: absolute;
|
| 132 |
+
top: 0;
|
| 133 |
+
left: 0;
|
| 134 |
+
content: '';
|
| 135 |
+
}
|
| 136 |
+
.pwb-carousel-loader:after {
|
| 137 |
+
background: #ffffff;
|
| 138 |
+
width: 75%;
|
| 139 |
+
height: 75%;
|
| 140 |
+
border-radius: 50%;
|
| 141 |
+
content: '';
|
| 142 |
+
margin: auto;
|
| 143 |
+
position: absolute;
|
| 144 |
+
top: 0;
|
| 145 |
+
left: 0;
|
| 146 |
+
bottom: 0;
|
| 147 |
+
right: 0;
|
| 148 |
+
}
|
| 149 |
+
@-webkit-keyframes PWBCarouselLoader {
|
| 150 |
+
0% {
|
| 151 |
+
-webkit-transform: rotate(0deg);
|
| 152 |
+
transform: rotate(0deg);
|
| 153 |
+
}
|
| 154 |
+
100% {
|
| 155 |
+
-webkit-transform: rotate(360deg);
|
| 156 |
+
transform: rotate(360deg);
|
| 157 |
+
}
|
| 158 |
+
}
|
| 159 |
+
@keyframes PWBCarouselLoader {
|
| 160 |
+
0% {
|
| 161 |
+
-webkit-transform: rotate(0deg);
|
| 162 |
+
transform: rotate(0deg);
|
| 163 |
+
}
|
| 164 |
+
100% {
|
| 165 |
+
-webkit-transform: rotate(360deg);
|
| 166 |
+
transform: rotate(360deg);
|
| 167 |
+
}
|
| 168 |
+
}
|
| 169 |
+
/* ------ /Preloader ------ */
|
| 170 |
+
|
| 171 |
+
/* ----------------------- /Carousels ----------------------- */
|
| 172 |
|
| 173 |
/* ----------------------- PWB All Brands ----------------------- */
|
| 174 |
.pwb-brands-cols-outer{
|
assets/css/styles-frontend.min.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
.pwb-clearfix:after{content:"";display:table;clear:both}.pwb-carousel .slick-slide a{display:block}.pwb-carousel .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 .slick-slide,.pwb-product-carousel .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 .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-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{display:inline-block;vertical-align:top}@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%}}@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{width:50%}}
|
assets/js/pwb_admin_functions.js
CHANGED
|
@@ -82,6 +82,47 @@ jQuery(document).ready(function( $ ) {
|
|
| 82 |
|
| 83 |
}
|
| 84 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
|
| 86 |
/* ····························· Settings tab ····························· */
|
| 87 |
|
| 82 |
|
| 83 |
}
|
| 84 |
|
| 85 |
+
/* ····························· Edit brands page ····························· */
|
| 86 |
+
$('.taxonomy-pwb-brand table .column-featured > span').not('pwb-blocked').on('click', function(e){
|
| 87 |
+
e.preventDefault();
|
| 88 |
+
var $currentStar = $(this);
|
| 89 |
+
$currentStar.addClass('pwb-blocked');
|
| 90 |
+
if( $currentStar.hasClass('dashicons-star-filled') ){
|
| 91 |
+
$currentStar.removeClass('dashicons-star-filled');
|
| 92 |
+
$currentStar.addClass('dashicons-star-empty');
|
| 93 |
+
}else{
|
| 94 |
+
$currentStar.removeClass('dashicons-star-empty');
|
| 95 |
+
$currentStar.addClass('dashicons-star-filled');
|
| 96 |
+
}
|
| 97 |
+
var data = { 'action': 'pwb_admin_set_featured_brand', 'brand': $currentStar.data('brand-id') };
|
| 98 |
+
$.post(ajax_object.ajax_url, data, function( response ) {
|
| 99 |
+
$currentStar.removeClass('pwb-blocked');
|
| 100 |
+
if( response.success ){
|
| 101 |
+
var $featuredCount = $('.taxonomy-pwb-brand .pwb-featured-count > span');
|
| 102 |
+
if( response.data.direction == 'up' ){
|
| 103 |
+
$featuredCount.html( parseInt( $featuredCount.text() ) + 1 );
|
| 104 |
+
}else{
|
| 105 |
+
$featuredCount.html( parseInt( $featuredCount.text() ) - 1 );
|
| 106 |
+
}
|
| 107 |
+
}else{
|
| 108 |
+
alert( response.data.error_msg );
|
| 109 |
+
}
|
| 110 |
+
});
|
| 111 |
+
});
|
| 112 |
+
|
| 113 |
+
$('.taxonomy-pwb-brand #pwb-first-featured-brands').on('change', function(e){
|
| 114 |
+
e.preventDefault();
|
| 115 |
+
$('#screen-options-apply').replaceWith('<img src="'+ajax_object.site_url+'/wp-admin/images/loading.gif">');
|
| 116 |
+
var data = { 'action': 'pwb_admin_save_screen_settings', 'new_val': $(this).is(':checked') };
|
| 117 |
+
$.post(ajax_object.ajax_url, data, function(response) { location.reload(); });
|
| 118 |
+
});
|
| 119 |
+
|
| 120 |
+
$('.pwb-edit-brands-bottom > span').on('click', function(e){
|
| 121 |
+
e.preventDefault();
|
| 122 |
+
$('.taxonomy-pwb-brand #col-left').toggleClass('pwb-force-full-width');
|
| 123 |
+
$('.taxonomy-pwb-brand #col-right').toggleClass('pwb-force-full-width');
|
| 124 |
+
});
|
| 125 |
+
/* ····························· /Edit brands page ····························· */
|
| 126 |
|
| 127 |
/* ····························· Settings tab ····························· */
|
| 128 |
|
assets/js/pwb_admin_functions.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
jQuery.noConflict();jQuery(document).ready(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")}})}});
|
assets/js/pwb_frontend_functions.js
CHANGED
|
@@ -7,11 +7,13 @@ jQuery(document).ready(function( $ ) {
|
|
| 7 |
});
|
| 8 |
|
| 9 |
$('.pwb-carousel').slick({
|
|
|
|
| 10 |
infinite: true,
|
| 11 |
draggable: false,
|
| 12 |
prevArrow: '<div class="slick-prev"><span title="Prev"><</span></div>',
|
| 13 |
nextArrow: '<div class="slick-next"><span title="Next">></span></div>',
|
| 14 |
speed: 300,
|
|
|
|
| 15 |
responsive: [
|
| 16 |
{
|
| 17 |
breakpoint: 1024,
|
|
@@ -41,11 +43,13 @@ jQuery(document).ready(function( $ ) {
|
|
| 41 |
});
|
| 42 |
|
| 43 |
$('.pwb-product-carousel').slick({
|
|
|
|
| 44 |
infinite: true,
|
| 45 |
draggable: false,
|
| 46 |
prevArrow: '<div class="slick-prev"><span title="Prev"><</span></div>',
|
| 47 |
nextArrow: '<div class="slick-next"><span title="Next">></span></div>',
|
| 48 |
speed: 300,
|
|
|
|
| 49 |
responsive: [
|
| 50 |
{
|
| 51 |
breakpoint: 1024,
|
| 7 |
});
|
| 8 |
|
| 9 |
$('.pwb-carousel').slick({
|
| 10 |
+
slide: '.slick-slide',
|
| 11 |
infinite: true,
|
| 12 |
draggable: false,
|
| 13 |
prevArrow: '<div class="slick-prev"><span title="Prev"><</span></div>',
|
| 14 |
nextArrow: '<div class="slick-next"><span title="Next">></span></div>',
|
| 15 |
speed: 300,
|
| 16 |
+
lazyLoad: 'progressive',
|
| 17 |
responsive: [
|
| 18 |
{
|
| 19 |
breakpoint: 1024,
|
| 43 |
});
|
| 44 |
|
| 45 |
$('.pwb-product-carousel').slick({
|
| 46 |
+
slide: '.slick-slide',
|
| 47 |
infinite: true,
|
| 48 |
draggable: false,
|
| 49 |
prevArrow: '<div class="slick-prev"><span title="Prev"><</span></div>',
|
| 50 |
nextArrow: '<div class="slick-next"><span title="Next">></span></div>',
|
| 51 |
speed: 300,
|
| 52 |
+
lazyLoad: 'progressive',
|
| 53 |
responsive: [
|
| 54 |
{
|
| 55 |
breakpoint: 1024,
|
assets/js/pwb_frontend_functions.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
| 1 |
+
jQuery.noConflict();jQuery(document).ready(function(e){e(".pwb-dropdown-widget").on("change",function(){var f=e(this).find(":selected").val();location.href=f});e(".pwb-carousel").slick({slide:".slick-slide",infinite:true,draggable:false,prevArrow:'<div class="slick-prev"><span title="Prev"><</span></div>',nextArrow:'<div class="slick-next"><span title="Next">></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:".slick-slide",infinite:true,draggable:false,prevArrow:'<div class="slick-prev"><span title="Prev"><</span></div>',nextArrow:'<div class="slick-next"><span title="Next">></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 d=PWBgetUrlParameter("pwb-brand-filter");e(".pwb-filter-products button").on("click",function(){var g=window.location.href;var f="";e('.pwb-filter-products input[type="checkbox"]').each(function(h){var i=e(this).prop("checked");if(i){f+=e(this).val();if(e('.pwb-filter-products input[type="checkbox"]').length-1!=h){f+=","}}});g=g.replace(/&?pwb-brand-filter=([^&]$|[^&]*)/i,"");g=g.replace(/\/page\/\d*\//i,"");if(g.indexOf("?")===-1){g=g+"?pwb-brand-filter="+f}else{g=g+"&pwb-brand-filter="+f}location.href=g});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(f){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-edit-brands-page.php
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
namespace Perfect_Woocommerce_Brands\Admin;
|
| 3 |
+
|
| 4 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
| 5 |
+
|
| 6 |
+
class Edit_Brands_Page {
|
| 7 |
+
|
| 8 |
+
private static $current_user;
|
| 9 |
+
|
| 10 |
+
function __construct(){
|
| 11 |
+
add_filter( 'get_terms', array( $this, 'brand_list_admin_filter' ), 10, 3 );
|
| 12 |
+
add_filter( 'manage_edit-pwb-brand_columns', array( $this, 'brand_taxonomy_columns_head' ) );
|
| 13 |
+
add_filter( 'manage_pwb-brand_custom_column', array( $this, 'brand_taxonomy_columns' ), 10, 3 );
|
| 14 |
+
add_action( 'wp_ajax_pwb_admin_set_featured_brand', array( $this, 'set_featured_brand' ) );
|
| 15 |
+
add_filter( 'screen_settings', array( $this, 'add_screen_options' ), 10, 2 );
|
| 16 |
+
add_action( 'wp_ajax_pwb_admin_save_screen_settings', array( $this, 'save_screen_options' ) );
|
| 17 |
+
add_action( 'plugins_loaded', function(){ self::$current_user = wp_get_current_user(); } );
|
| 18 |
+
add_action( 'after-pwb-brand-table', array( $this, 'add_brands_count' ) );
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
private static function is_edit_brands_page(){
|
| 22 |
+
global $pagenow;
|
| 23 |
+
return ( $pagenow == 'edit-tags.php' && isset( $_GET['taxonomy'] ) && $_GET['taxonomy'] == 'pwb-brand' ) ? true : false;
|
| 24 |
+
}
|
| 25 |
+
|
| 26 |
+
public function add_brands_count( $tax_name ){
|
| 27 |
+
$brands = get_terms(
|
| 28 |
+
$tax_name,
|
| 29 |
+
array( 'hide_empty' => false )
|
| 30 |
+
);
|
| 31 |
+
$brands_featured = get_terms(
|
| 32 |
+
$tax_name,
|
| 33 |
+
array( 'hide_empty' => false, 'meta_query' => array( array( 'key' => 'pwb_featured_brand', 'value' => true ) ) )
|
| 34 |
+
);
|
| 35 |
+
|
| 36 |
+
\Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::render_template(
|
| 37 |
+
'edit-brands-bottom',
|
| 38 |
+
'admin',
|
| 39 |
+
array( 'featured_count' => count( $brands_featured ), 'text_featured' => __('featured', 'perfect-woocommerce-brands') )
|
| 40 |
+
);
|
| 41 |
+
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
public function brand_list_admin_filter( $brands, $taxonomies, $args ) {
|
| 45 |
+
|
| 46 |
+
if( self::is_edit_brands_page() ){
|
| 47 |
+
|
| 48 |
+
$featured = get_user_option( 'pwb-first-featured-brands', self::$current_user->ID );
|
| 49 |
+
if( $featured ){
|
| 50 |
+
$featured_brands = array();
|
| 51 |
+
$other_brands = array();
|
| 52 |
+
foreach( $brands as $brand ) {
|
| 53 |
+
if( get_term_meta( $brand->term_id, 'pwb_featured_brand', true ) ){
|
| 54 |
+
$featured_brands[] = $brand;
|
| 55 |
+
}else{
|
| 56 |
+
$other_brands[] = $brand;
|
| 57 |
+
}
|
| 58 |
+
}
|
| 59 |
+
return array_merge( $featured_brands, $other_brands );
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
}
|
| 63 |
+
return $brands;
|
| 64 |
+
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
public function brand_taxonomy_columns_head($defaults) {
|
| 68 |
+
|
| 69 |
+
if( self::is_edit_brands_page() ){
|
| 70 |
+
$defaults['featured'] = '';
|
| 71 |
+
|
| 72 |
+
$newColumns = array(
|
| 73 |
+
'cb' => $defaults['cb'],
|
| 74 |
+
'logo' => __( 'Logo', 'perfect-woocommerce-brands' )
|
| 75 |
+
);
|
| 76 |
+
|
| 77 |
+
unset( $defaults['description'] );
|
| 78 |
+
unset( $defaults['cb'] );
|
| 79 |
+
|
| 80 |
+
return array_merge( $newColumns, $defaults );
|
| 81 |
+
}
|
| 82 |
+
return $defaults;
|
| 83 |
+
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
public function brand_taxonomy_columns($c, $column_name, $term_id){
|
| 87 |
+
switch( $column_name ){
|
| 88 |
+
case 'logo':
|
| 89 |
+
$image = wp_get_attachment_image( get_term_meta( $term_id, 'pwb_brand_image', 1 ), array('60','60') );
|
| 90 |
+
return ( $image ) ? $image : "-";
|
| 91 |
+
break;
|
| 92 |
+
case 'featured':
|
| 93 |
+
$featured_class = ( $this->is_featured_brand( $term_id ) ) ? 'dashicons-star-filled' : 'dashicons-star-empty';
|
| 94 |
+
printf(
|
| 95 |
+
'<span class="dashicons %1$s" title="%2$s" data-brand-id="%3$s"></span>',
|
| 96 |
+
$featured_class, __('Set as featured', 'perfect-woocommerce-brands'), $term_id
|
| 97 |
+
);
|
| 98 |
+
break;
|
| 99 |
+
}
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
private function is_featured_brand( $brand_id ){
|
| 103 |
+
return ( get_term_meta( $brand_id, 'pwb_featured_brand', true ) );
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
public function set_featured_brand(){
|
| 107 |
+
if( isset( $_POST['brand'] ) ){
|
| 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 );
|
| 115 |
+
}
|
| 116 |
+
wp_send_json_success( array( 'success' => true, 'direction' => $direction ) );
|
| 117 |
+
}else{
|
| 118 |
+
wp_send_json_error( array( 'success' => false, 'error_msg' => __( 'Error!','perfect-woocommerce-brands' ) ) );
|
| 119 |
+
}
|
| 120 |
+
wp_die();
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
public function add_screen_options( $status, $args ){
|
| 124 |
+
if( self::is_edit_brands_page() ){
|
| 125 |
+
$featured = get_user_option( 'pwb-first-featured-brands', self::$current_user->ID );
|
| 126 |
+
ob_start();
|
| 127 |
+
?>
|
| 128 |
+
<legend><?php _e('Brands','perfect-woocommerce-brands');?></legend>
|
| 129 |
+
<label>
|
| 130 |
+
<input id="pwb-first-featured-brands" type="checkbox" <?php checked($featured,true);?>>
|
| 131 |
+
<?php _e('Show featured brands first','perfect-woocommerce-brands');?>
|
| 132 |
+
</label>
|
| 133 |
+
<?php
|
| 134 |
+
return ob_get_clean();
|
| 135 |
+
}
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
public function save_screen_options(){
|
| 139 |
+
if( isset( $_POST['new_val'] ) ){
|
| 140 |
+
$new_val = ( $_POST['new_val'] == 'true' ) ? true : false;
|
| 141 |
+
update_user_option( self::$current_user->ID, 'pwb-first-featured-brands', $new_val );
|
| 142 |
+
}
|
| 143 |
+
wp_die();
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
}
|
classes/admin/class-pwb-admin-tab.php
CHANGED
|
@@ -66,6 +66,7 @@
|
|
| 66 |
foreach($available_image_sizes as $image_size){
|
| 67 |
$available_image_sizes_adapted[$image_size] = $image_size;
|
| 68 |
}
|
|
|
|
| 69 |
|
| 70 |
$settings = array(
|
| 71 |
'section_title' => array(
|
| 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(
|
| 72 |
'section_title' => array(
|
classes/admin/class-pwb-coupon.php
CHANGED
|
@@ -9,6 +9,7 @@
|
|
| 9 |
add_action( 'woocommerce_coupon_options_usage_restriction', array( $this, 'coupon_restriction' ) );
|
| 10 |
add_action( 'woocommerce_coupon_options_save', array( $this, 'coupon_save' ) );
|
| 11 |
add_filter( 'woocommerce_coupon_is_valid', array( $this, 'is_valid_coupon' ), 10, 2 );
|
|
|
|
| 12 |
}
|
| 13 |
|
| 14 |
public function coupon_restriction() {
|
|
@@ -56,4 +57,17 @@
|
|
| 56 |
return true;
|
| 57 |
}
|
| 58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
}
|
| 9 |
add_action( 'woocommerce_coupon_options_usage_restriction', array( $this, 'coupon_restriction' ) );
|
| 10 |
add_action( 'woocommerce_coupon_options_save', array( $this, 'coupon_save' ) );
|
| 11 |
add_filter( 'woocommerce_coupon_is_valid', array( $this, 'is_valid_coupon' ), 10, 2 );
|
| 12 |
+
add_filter( 'woocommerce_coupon_is_valid_for_product', array( $this, 'is_valid_for_product_brand' ), 10, 4 );
|
| 13 |
}
|
| 14 |
|
| 15 |
public function coupon_restriction() {
|
| 57 |
return true;
|
| 58 |
}
|
| 59 |
|
| 60 |
+
public function is_valid_for_product_brand( $valid, $product, $coupon, $values ){
|
| 61 |
+
if ( !$valid ) return false;
|
| 62 |
+
|
| 63 |
+
$coupon_id = is_callable( array( $coupon, 'get_id' ) ) ? $coupon->get_id() : $coupon->id;
|
| 64 |
+
$selected_brands = get_post_meta( $coupon_id, '_pwb_coupon_restriction', true );
|
| 65 |
+
if ( empty( $selected_brands ) ) return;
|
| 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 );
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
}
|
classes/class-perfect-woocommerce-brands.php
CHANGED
|
@@ -1,929 +1,860 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
$this
|
| 23 |
-
if( is_plugin_active('js_composer/js_composer.php') || is_plugin_active('visual_composer/js_composer.php') ){
|
| 24 |
-
add_action( 'vc_before_init', array( $this,'vc_map_shortcodes' ) );
|
| 25 |
-
}
|
| 26 |
-
add_action( 'widgets_init', array( $this, 'register_widgets' ) );
|
| 27 |
-
|
| 28 |
-
if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '3.0.0', '>=' ) ){
|
| 29 |
-
add_filter( 'woocommerce_structured_data_product', array( $this, 'product_microdata' ), 10, 2 );
|
| 30 |
-
}else{
|
| 31 |
-
add_action( 'wp_head' , array( $this, 'product_microdata_legacy' ), 40 );
|
| 32 |
-
}
|
| 33 |
-
|
| 34 |
-
add_action( 'pre_get_posts', array( $this, 'pwb_brand_filter' ) );
|
| 35 |
-
add_filter( 'plugin_action_links_' . PWB_PLUGIN_BASENAME, array( $this, 'plugin_action_links' ) );
|
| 36 |
-
add_action( 'wp_ajax_dismiss_pwb_notice', array( $this, 'dismiss_pwb_notice' ) );
|
| 37 |
-
add_action( 'admin_notices', array( $this, 'review_notice' ) );
|
| 38 |
-
|
| 39 |
-
add_action( 'pre_get_posts', function(){
|
| 40 |
-
if( is_tax('pwb-brand') )
|
| 41 |
-
remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
|
| 42 |
-
});
|
| 43 |
}
|
|
|
|
| 44 |
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
$
|
| 49 |
-
$one_month = 2592000;
|
| 50 |
-
$date_diff = $now - $activate_on;
|
| 51 |
-
|
| 52 |
-
if ( $show_notice && $date_diff > $one_month ) {
|
| 53 |
-
?>
|
| 54 |
-
<div class="notice notice-info pwb-notice-dismissible is-dismissible" data-notice="wc_pwb_notice_plugin_review">
|
| 55 |
-
<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>
|
| 56 |
-
<p>
|
| 57 |
-
<?php _e( '<a href="https://wordpress.org/support/plugin/perfect-woocommerce-brands/reviews/?rate=5#new-post" target="_blank">Leave a review</a>', 'perfect-woocommerce-brands' ); ?>
|
| 58 |
-
<?php _e( '<a href="https://translate.wordpress.org/projects/wp-plugins/perfect-woocommerce-brands" target="_blank">Translate the plugin</a>', 'perfect-woocommerce-brands' ); ?>
|
| 59 |
-
<?php _e( '<a href="https://github.com/titodevera/perfect-woocommerce-brands" target="_blank">View on GitHub</a>', 'perfect-woocommerce-brands' ); ?>
|
| 60 |
-
</p>
|
| 61 |
-
</div>
|
| 62 |
-
<?php
|
| 63 |
-
}
|
| 64 |
}
|
| 65 |
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 75 |
}
|
|
|
|
| 76 |
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
}
|
|
|
|
|
|
|
| 85 |
|
| 86 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
|
| 88 |
-
|
| 89 |
|
| 90 |
-
|
| 91 |
|
| 92 |
-
|
| 93 |
-
for($i=0; $i < count($terms_array); $i++) {
|
| 94 |
-
if( !term_exists( $terms_array[$i], 'pwb-brand' ) ) unset($terms_array[$i]);
|
| 95 |
-
}
|
| 96 |
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
|
|
|
| 100 |
|
| 101 |
-
|
|
|
|
|
|
|
| 102 |
|
| 103 |
-
|
| 104 |
-
array (
|
| 105 |
-
'taxonomy' => 'pwb-brand',
|
| 106 |
-
'field' => 'slug',
|
| 107 |
-
'terms' => $terms_array
|
| 108 |
-
)
|
| 109 |
-
));
|
| 110 |
|
| 111 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 112 |
|
| 113 |
}
|
| 114 |
|
| 115 |
}
|
| 116 |
|
| 117 |
-
|
| 118 |
-
* Adds microdata (brands) to single products (WooCommerce < 3.0.0)
|
| 119 |
-
*/
|
| 120 |
-
public function product_microdata_legacy(){
|
| 121 |
-
global $post;
|
| 122 |
-
|
| 123 |
-
if( isset( $post->post_type ) && $post->post_type==='product' ){
|
| 124 |
-
$brands = wp_get_post_terms( $post->ID, 'pwb-brand');
|
| 125 |
-
foreach ($brands as $brand) {
|
| 126 |
-
echo '<meta itemprop="brand" content="'.$brand->name.'">';
|
| 127 |
-
}
|
| 128 |
-
}
|
| 129 |
-
|
| 130 |
-
}
|
| 131 |
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
|
|
|
| 136 |
|
| 137 |
-
|
| 138 |
-
$brands = wp_get_post_terms( $
|
| 139 |
foreach ($brands as $brand) {
|
| 140 |
-
|
| 141 |
}
|
|
|
|
| 142 |
|
| 143 |
-
|
| 144 |
|
| 145 |
-
|
|
|
|
|
|
|
|
|
|
| 146 |
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
) );
|
| 152 |
-
add_shortcode( 'pwb-product-carousel', array(
|
| 153 |
-
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Product_Carousel_Shortcode',
|
| 154 |
-
'product_carousel_shortcode'
|
| 155 |
-
) );
|
| 156 |
-
add_shortcode( 'pwb-all-brands', array(
|
| 157 |
-
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_All_Brands_Shortcode',
|
| 158 |
-
'all_brands_shortcode'
|
| 159 |
-
) );
|
| 160 |
-
add_shortcode( 'pwb-brand', array(
|
| 161 |
-
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Brand_Shortcode',
|
| 162 |
-
'brand_shortcode'
|
| 163 |
-
) );
|
| 164 |
}
|
| 165 |
|
| 166 |
-
|
| 167 |
-
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_List_Widget' );
|
| 168 |
-
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_Dropdown_Widget' );
|
| 169 |
-
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_Filter_By_Brand_Widget' );
|
| 170 |
-
}
|
| 171 |
|
| 172 |
-
|
| 173 |
|
| 174 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 175 |
|
| 176 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 177 |
|
| 178 |
-
|
| 179 |
-
$product_id = $product->get_id();
|
| 180 |
-
$product_brands = wp_get_post_terms($product_id, 'pwb-brand');
|
| 181 |
-
if(!empty($product_brands)){
|
| 182 |
-
echo '<div class="pwb-brands-in-loop">';
|
| 183 |
-
foreach ($product_brands as $brand) {
|
| 184 |
|
| 185 |
-
|
| 186 |
-
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
| 187 |
-
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
| 188 |
|
| 189 |
-
|
| 190 |
-
if( !empty($attachment_html) && $brands_in_loop == 'brand_image' ){
|
| 191 |
-
echo '<a href="'.$brand_link.'">'.$attachment_html.'</a>';
|
| 192 |
-
}else{
|
| 193 |
-
echo '<a href="'.$brand_link.'">'.$brand->name.'</a>';
|
| 194 |
-
}
|
| 195 |
-
echo '</span>';
|
| 196 |
|
| 197 |
-
|
| 198 |
-
|
| 199 |
-
|
|
|
|
|
|
|
|
|
|
| 200 |
|
| 201 |
-
|
|
|
|
|
|
|
| 202 |
|
| 203 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 204 |
|
| 205 |
-
|
| 206 |
-
|
| 207 |
-
*
|
| 208 |
-
* @hooked woocommerce_template_single_title - 5
|
| 209 |
-
* @hooked woocommerce_template_single_rating - 10
|
| 210 |
-
* @hooked woocommerce_template_single_price - 10
|
| 211 |
-
* @hooked woocommerce_template_single_excerpt - 20
|
| 212 |
-
* @hooked woocommerce_template_single_add_to_cart - 30
|
| 213 |
-
* @hooked woocommerce_template_single_meta - 40
|
| 214 |
-
* @hooked woocommerce_template_single_sharing - 50
|
| 215 |
-
*/
|
| 216 |
-
private function brand_logo_position(){
|
| 217 |
-
$position = 41;
|
| 218 |
-
$position_selected = get_option('wc_pwb_admin_tab_brand_single_position');
|
| 219 |
-
if(!$position_selected){
|
| 220 |
-
update_option('wc_pwb_admin_tab_brand_single_position','after_meta');
|
| 221 |
-
}
|
| 222 |
-
switch ($position_selected) {
|
| 223 |
-
case 'before_title':
|
| 224 |
-
$position = 4;
|
| 225 |
-
break;
|
| 226 |
-
case 'after_title':
|
| 227 |
-
$position = 6;
|
| 228 |
-
break;
|
| 229 |
-
case 'after_price':
|
| 230 |
-
$position = 11;
|
| 231 |
-
break;
|
| 232 |
-
case 'after_excerpt':
|
| 233 |
-
$position = 21;
|
| 234 |
-
break;
|
| 235 |
-
case 'after_add_to_cart':
|
| 236 |
-
$position = 31;
|
| 237 |
-
break;
|
| 238 |
-
case 'after_meta':
|
| 239 |
-
$position = 41;
|
| 240 |
-
break;
|
| 241 |
-
case 'after_sharing':
|
| 242 |
-
$position = 51;
|
| 243 |
-
break;
|
| 244 |
}
|
| 245 |
-
|
| 246 |
}
|
| 247 |
|
|
|
|
| 248 |
|
| 249 |
-
|
| 250 |
-
|
| 251 |
-
|
| 252 |
-
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
|
| 258 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 259 |
|
| 260 |
-
foreach($available_image_sizes as $image_size){
|
| 261 |
-
$available_image_sizes_adapted[$image_size] = $image_size;
|
| 262 |
-
}
|
| 263 |
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
|
| 269 |
-
|
| 270 |
-
|
| 271 |
-
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
"heading" => __( "Brand", "perfect-woocommerce-brands" ),
|
| 275 |
-
"param_name" => "brand",
|
| 276 |
-
"admin_label" => true,
|
| 277 |
-
"value" => self::get_brands_array( true )
|
| 278 |
-
),
|
| 279 |
-
array(
|
| 280 |
-
"type" => "textfield",
|
| 281 |
-
"holder" => "div",
|
| 282 |
-
"heading" => __( "Products", "perfect-woocommerce-brands" ),
|
| 283 |
-
"param_name" => "products",
|
| 284 |
-
"value" => "10",
|
| 285 |
-
"description" => __( "Number of products to load", "perfect-woocommerce-brands" )
|
| 286 |
-
),
|
| 287 |
-
array(
|
| 288 |
-
"type" => "textfield",
|
| 289 |
-
"holder" => "div",
|
| 290 |
-
"heading" => __( "Products to show", "perfect-woocommerce-brands" ),
|
| 291 |
-
"param_name" => "products_to_show",
|
| 292 |
-
"value" => "5",
|
| 293 |
-
"description" => __( "Number of products to show", "perfect-woocommerce-brands" )
|
| 294 |
-
),
|
| 295 |
-
array(
|
| 296 |
-
"type" => "textfield",
|
| 297 |
-
"holder" => "div",
|
| 298 |
-
"heading" => __( "Products to scroll", "perfect-woocommerce-brands" ),
|
| 299 |
-
"param_name" => "products_to_scroll",
|
| 300 |
-
"value" => "1",
|
| 301 |
-
"description" => __( "Number of products to scroll", "perfect-woocommerce-brands" )
|
| 302 |
-
),
|
| 303 |
-
array(
|
| 304 |
-
"type" => "checkbox",
|
| 305 |
-
"holder" => "div",
|
| 306 |
-
"heading" => __( "Autoplay", "perfect-woocommerce-brands" ),
|
| 307 |
-
"param_name" => "autoplay",
|
| 308 |
-
"description" => __( "Autoplay carousel", "perfect-woocommerce-brands" )
|
| 309 |
-
),
|
| 310 |
-
array(
|
| 311 |
-
"type" => "checkbox",
|
| 312 |
-
"holder" => "div",
|
| 313 |
-
"heading" => __( "Arrows", "perfect-woocommerce-brands" ),
|
| 314 |
-
"param_name" => "arrows",
|
| 315 |
-
"description" => __( "Display prev and next arrows", "perfect-woocommerce-brands" )
|
| 316 |
-
)
|
| 317 |
-
)
|
| 318 |
-
));
|
| 319 |
|
| 320 |
-
|
| 321 |
-
|
| 322 |
-
|
| 323 |
-
"base" => "pwb-carousel",
|
| 324 |
-
"class" => "",
|
| 325 |
-
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
| 326 |
-
"category" => "Woocommerce",
|
| 327 |
-
"params" => array(
|
| 328 |
-
array(
|
| 329 |
-
"type" => "textfield",
|
| 330 |
-
"holder" => "div",
|
| 331 |
-
"heading" => __( "Items", "perfect-woocommerce-brands" ),
|
| 332 |
-
"param_name" => "items",
|
| 333 |
-
"value" => "10",
|
| 334 |
-
"description" => __( "Number of items to load", "perfect-woocommerce-brands" )
|
| 335 |
-
),
|
| 336 |
-
array(
|
| 337 |
-
"type" => "textfield",
|
| 338 |
-
"holder" => "div",
|
| 339 |
-
"heading" => __( "Items to show", "perfect-woocommerce-brands" ),
|
| 340 |
-
"param_name" => "items_to_show",
|
| 341 |
-
"value" => "5",
|
| 342 |
-
"description" => __( "Number of items to show", "perfect-woocommerce-brands" )
|
| 343 |
-
),
|
| 344 |
-
array(
|
| 345 |
-
"type" => "textfield",
|
| 346 |
-
"holder" => "div",
|
| 347 |
-
"heading" => __( "Items to scroll", "perfect-woocommerce-brands" ),
|
| 348 |
-
"param_name" => "items_to_scroll",
|
| 349 |
-
"value" => "1",
|
| 350 |
-
"description" => __( "Number of items to scroll", "perfect-woocommerce-brands" )
|
| 351 |
-
),
|
| 352 |
-
array(
|
| 353 |
-
"type" => "checkbox",
|
| 354 |
-
"holder" => "div",
|
| 355 |
-
"heading" => __( "Autoplay", "perfect-woocommerce-brands" ),
|
| 356 |
-
"param_name" => "autoplay",
|
| 357 |
-
"description" => __( "Autoplay carousel", "perfect-woocommerce-brands" )
|
| 358 |
-
),
|
| 359 |
-
array(
|
| 360 |
-
"type" => "checkbox",
|
| 361 |
-
"holder" => "div",
|
| 362 |
-
"heading" => __( "Arrows", "perfect-woocommerce-brands" ),
|
| 363 |
-
"param_name" => "arrows",
|
| 364 |
-
"description" => __( "Display prev and next arrows", "perfect-woocommerce-brands" )
|
| 365 |
-
),
|
| 366 |
-
array(
|
| 367 |
-
"type" => "dropdown",
|
| 368 |
-
"heading" => __( "Brand logo size", "perfect-woocommerce-brands" ),
|
| 369 |
-
"param_name" => "image_size",
|
| 370 |
-
"admin_label" => true,
|
| 371 |
-
"value" => $available_image_sizes_adapted
|
| 372 |
-
)
|
| 373 |
-
)
|
| 374 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 375 |
|
| 376 |
-
));
|
| 377 |
|
| 378 |
-
|
| 379 |
-
"name" => __( "PWB All brands", "perfect-woocommerce-brands" ),
|
| 380 |
-
"description" => __( "Show all brands", "perfect-woocommerce-brands" ),
|
| 381 |
-
"base" => "pwb-all-brands",
|
| 382 |
-
"class" => "",
|
| 383 |
-
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
| 384 |
-
"category" => "Woocommerce",
|
| 385 |
-
"params" => array(
|
| 386 |
-
array(
|
| 387 |
-
"type" => "textfield",
|
| 388 |
-
"holder" => "div",
|
| 389 |
-
"heading" => __( "Brands per page", "perfect-woocommerce-brands" ),
|
| 390 |
-
"param_name" => "per_page",
|
| 391 |
-
"value" => "10",
|
| 392 |
-
"description" => __( "Show x brands per page", "perfect-woocommerce-brands" )
|
| 393 |
-
),
|
| 394 |
-
array(
|
| 395 |
-
"type" => "dropdown",
|
| 396 |
-
"heading" => __( "Brand logo size", "perfect-woocommerce-brands" ),
|
| 397 |
-
"param_name" => "image_size",
|
| 398 |
-
"admin_label" => true,
|
| 399 |
-
"value" => $available_image_sizes_adapted
|
| 400 |
-
),
|
| 401 |
-
array(
|
| 402 |
-
"type" => "dropdown",
|
| 403 |
-
"heading" => __( "Order by", "perfect-woocommerce-brands" ),
|
| 404 |
-
"param_name" => "order_by",
|
| 405 |
-
"admin_label" => true,
|
| 406 |
-
"value" => array(
|
| 407 |
-
'name' => 'name',
|
| 408 |
-
'slug' => 'slug',
|
| 409 |
-
'term_id' => 'term_id',
|
| 410 |
-
'id' => 'id',
|
| 411 |
-
'description' => 'description',
|
| 412 |
-
'rand' => 'rand'
|
| 413 |
-
)
|
| 414 |
-
),
|
| 415 |
-
array(
|
| 416 |
-
"type" => "dropdown",
|
| 417 |
-
"heading" => __( "Order", "perfect-woocommerce-brands" ),
|
| 418 |
-
"param_name" => "order",
|
| 419 |
-
"admin_label" => true,
|
| 420 |
-
"value" => array(
|
| 421 |
-
'ASC' => 'ASC',
|
| 422 |
-
'DSC' => 'DSC'
|
| 423 |
-
)
|
| 424 |
-
),
|
| 425 |
-
array(
|
| 426 |
-
"type" => "dropdown",
|
| 427 |
-
"heading" => __( "Title position", "perfect-woocommerce-brands" ),
|
| 428 |
-
"param_name" => "title_position",
|
| 429 |
-
"admin_label" => true,
|
| 430 |
-
"value" => array(
|
| 431 |
-
__( "Before image", "perfect-woocommerce-brands" ) => 'before',
|
| 432 |
-
__( "After image", "perfect-woocommerce-brands" ) => 'after',
|
| 433 |
-
__( "Hide", "perfect-woocommerce-brands" ) => 'none'
|
| 434 |
-
)
|
| 435 |
-
),
|
| 436 |
-
array(
|
| 437 |
-
"type" => "checkbox",
|
| 438 |
-
"holder" => "div",
|
| 439 |
-
"heading" => __( "Hide empty", "perfect-woocommerce-brands" ),
|
| 440 |
-
"param_name" => "hide_empty",
|
| 441 |
-
"description" => __( "Hide brands that have not been assigned to any product", "perfect-woocommerce-brands" )
|
| 442 |
-
)
|
| 443 |
-
)
|
| 444 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 445 |
|
| 446 |
-
));
|
| 447 |
|
| 448 |
-
|
| 449 |
-
"name" => __( "PWB brand", "perfect-woocommerce-brands" ),
|
| 450 |
-
"description" => __( "Show brand for a specific product", "perfect-woocommerce-brands" ),
|
| 451 |
-
"base" => "pwb-brand",
|
| 452 |
-
"class" => "",
|
| 453 |
-
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
| 454 |
-
"category" => "Woocommerce",
|
| 455 |
-
|
| 456 |
-
"params" => array(
|
| 457 |
-
array(
|
| 458 |
-
"type" => "textfield",
|
| 459 |
-
"holder" => "div",
|
| 460 |
-
"heading" => __( "Product id", "perfect-woocommerce-brands" ),
|
| 461 |
-
"param_name" => "product_id",
|
| 462 |
-
"value" => null,
|
| 463 |
-
"description" => __( "Product id (post id)", "perfect-woocommerce-brands" )
|
| 464 |
-
),
|
| 465 |
-
array(
|
| 466 |
-
"type" => "dropdown",
|
| 467 |
-
"heading" => __( "Brand logo size", "perfect-woocommerce-brands" ),
|
| 468 |
-
"param_name" => "image_size",
|
| 469 |
-
"admin_label" => true,
|
| 470 |
-
"value" => $available_image_sizes_adapted
|
| 471 |
-
)
|
| 472 |
-
|
| 473 |
-
)
|
| 474 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 475 |
|
| 476 |
-
|
| 477 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 478 |
|
| 479 |
-
public function action_woocommerce_single_product_summary() {
|
| 480 |
-
$brands = wp_get_post_terms( get_the_ID(), 'pwb-brand');
|
| 481 |
|
| 482 |
-
|
|
|
|
| 483 |
|
| 484 |
-
|
|
|
|
| 485 |
|
| 486 |
-
|
| 487 |
|
| 488 |
-
|
| 489 |
|
| 490 |
-
|
| 491 |
|
| 492 |
-
|
| 493 |
-
foreach( $brands as $brand ){
|
| 494 |
-
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
| 495 |
-
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
| 496 |
|
| 497 |
-
|
| 498 |
-
$image_size_selected = get_option('wc_pwb_admin_tab_brand_logo_size');
|
| 499 |
-
if($image_size_selected!=false){
|
| 500 |
-
$image_size = $image_size_selected;
|
| 501 |
-
}
|
| 502 |
|
| 503 |
-
|
|
|
|
|
|
|
|
|
|
| 504 |
|
| 505 |
-
|
| 506 |
-
|
| 507 |
-
|
| 508 |
-
|
| 509 |
-
|
| 510 |
-
}
|
| 511 |
-
echo '</div>';
|
| 512 |
|
| 513 |
-
|
| 514 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 515 |
}
|
|
|
|
|
|
|
|
|
|
| 516 |
|
| 517 |
}
|
| 518 |
|
| 519 |
-
|
| 520 |
|
| 521 |
-
|
| 522 |
|
| 523 |
-
|
| 524 |
-
|
| 525 |
-
wp_register_script(
|
| 526 |
-
'pwb_slick_lib',
|
| 527 |
-
PWB_PLUGIN . '/assets/js/slick/slick.min.js',
|
| 528 |
-
array('jquery'),
|
| 529 |
-
'1.8.0',
|
| 530 |
-
true
|
| 531 |
-
);
|
| 532 |
-
wp_enqueue_script('pwb_frontend_functions');
|
| 533 |
-
|
| 534 |
-
wp_enqueue_style(
|
| 535 |
-
'pwb_slick_lib',
|
| 536 |
-
PWB_PLUGIN . '/assets/js/slick/slick.css',
|
| 537 |
-
array(),
|
| 538 |
-
'1.8.0',
|
| 539 |
-
'all'
|
| 540 |
-
);
|
| 541 |
-
|
| 542 |
-
wp_enqueue_style(
|
| 543 |
-
'pwb_frontend_styles',
|
| 544 |
-
PWB_PLUGIN . '/assets/css/styles-frontend.css',
|
| 545 |
-
array('pwb_slick_lib'),
|
| 546 |
-
PWB_PLUGIN_VERSION,
|
| 547 |
-
'all'
|
| 548 |
-
);
|
| 549 |
-
|
| 550 |
-
wp_register_script(
|
| 551 |
-
'pwb_frontend_functions',
|
| 552 |
-
PWB_PLUGIN . '/assets/js/pwb_frontend_functions.js',
|
| 553 |
-
array('jquery','pwb_slick_lib'),
|
| 554 |
-
PWB_PLUGIN_VERSION,
|
| 555 |
-
true
|
| 556 |
-
);
|
| 557 |
-
wp_enqueue_script('pwb_frontend_functions');
|
| 558 |
|
| 559 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 560 |
|
| 561 |
-
|
| 562 |
-
$screen = get_current_screen();
|
| 563 |
|
| 564 |
-
|
| 565 |
-
|
| 566 |
|
| 567 |
-
|
| 568 |
-
|
| 569 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 570 |
|
| 571 |
-
|
| 572 |
-
|
| 573 |
-
|
| 574 |
-
'
|
| 575 |
-
'
|
| 576 |
-
'
|
| 577 |
-
'
|
| 578 |
-
|
| 579 |
-
|
| 580 |
-
|
| 581 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 582 |
)
|
| 583 |
-
|
| 584 |
|
| 585 |
-
|
| 586 |
|
| 587 |
-
|
| 588 |
-
|
| 589 |
-
|
| 590 |
-
|
| 591 |
-
'menu_name' => __( 'Brands', 'perfect-woocommerce-brands' ),
|
| 592 |
-
'all_items' => __( 'All Brands', 'perfect-woocommerce-brands' ),
|
| 593 |
-
'edit_item' => __( 'Edit Brand', 'perfect-woocommerce-brands' ),
|
| 594 |
-
'view_item' => __( 'View Brand', 'perfect-woocommerce-brands' ),
|
| 595 |
-
'update_item' => __( 'Update Brand', 'perfect-woocommerce-brands' ),
|
| 596 |
-
'add_new_item' => __( 'Add New Brand', 'perfect-woocommerce-brands' ),
|
| 597 |
-
'new_item_name' => __( 'New Brand Name', 'perfect-woocommerce-brands' ),
|
| 598 |
-
'parent_item' => __( 'Parent Brand', 'perfect-woocommerce-brands' ),
|
| 599 |
-
'parent_item_colon' => __( 'Parent Brand:', 'perfect-woocommerce-brands' ),
|
| 600 |
-
'search_items' => __( 'Search Brands', 'perfect-woocommerce-brands' ),
|
| 601 |
-
'popular_items' => __( 'Popular Brands', 'perfect-woocommerce-brands' ),
|
| 602 |
-
'separate_items_with_commas' => __( 'Separate brands with commas', 'perfect-woocommerce-brands' ),
|
| 603 |
-
'add_or_remove_items' => __( 'Add or remove brands', 'perfect-woocommerce-brands' ),
|
| 604 |
-
'choose_from_most_used' => __( 'Choose from the most used brands', 'perfect-woocommerce-brands' ),
|
| 605 |
-
'not_found' => __( 'No brands found', 'perfect-woocommerce-brands' )
|
| 606 |
-
);
|
| 607 |
-
|
| 608 |
-
$new_slug = get_option('wc_pwb_admin_tab_slug');
|
| 609 |
-
$old_slug = get_option('old_wc_pwb_admin_tab_slug');
|
| 610 |
-
|
| 611 |
-
$new_slug = ($new_slug!=false) ? $new_slug : 'brand';
|
| 612 |
-
$old_slug = ($old_slug!=false) ? $old_slug : 'null';
|
| 613 |
-
|
| 614 |
-
$args = array(
|
| 615 |
-
'hierarchical' => true,
|
| 616 |
-
'labels' => $labels,
|
| 617 |
-
'show_ui' => true,
|
| 618 |
-
'query_var' => true,
|
| 619 |
-
'public' => true,
|
| 620 |
-
'show_admin_column' => true,
|
| 621 |
-
'rewrite' => array(
|
| 622 |
-
'slug' => $new_slug,
|
| 623 |
-
'hierarchical' => true,
|
| 624 |
-
'ep_mask' => EP_PERMALINK
|
| 625 |
-
)
|
| 626 |
-
);
|
| 627 |
-
|
| 628 |
-
register_taxonomy( 'pwb-brand', array( 'product' ), $args );
|
| 629 |
-
|
| 630 |
-
if($new_slug != false && $old_slug!= false && $new_slug != $old_slug){
|
| 631 |
-
flush_rewrite_rules();
|
| 632 |
-
update_option( 'old_wc_pwb_admin_tab_slug', $new_slug );
|
| 633 |
-
}
|
| 634 |
|
| 635 |
-
|
| 636 |
|
| 637 |
-
|
| 638 |
-
|
| 639 |
-
|
| 640 |
|
| 641 |
-
|
| 642 |
-
|
| 643 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 644 |
|
| 645 |
-
|
| 646 |
-
|
| 647 |
-
|
| 648 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 649 |
<label for="pwb_brand_image"><?php _e( 'Brand logo', 'perfect-woocommerce-brands' ); ?></label>
|
| 650 |
-
|
|
|
|
|
|
|
| 651 |
<a href="#" id="pwb_brand_image_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
| 652 |
-
</div>
|
| 653 |
|
| 654 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 655 |
<label for="pwb_brand_banner"><?php _e( 'Brand banner', 'perfect-woocommerce-brands' ); ?></label>
|
| 656 |
-
|
|
|
|
|
|
|
| 657 |
<a href="#" id="pwb_brand_banner_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
| 658 |
-
<p><?php _e( 'This image will be shown on brand page', 'perfect-woocommerce-brands' ); ?></p>
|
| 659 |
-
</div>
|
| 660 |
|
| 661 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 662 |
<label for="pwb_brand_banner_link"><?php _e( 'Brand banner link', 'perfect-woocommerce-brands' ); ?></label>
|
| 663 |
-
|
| 664 |
-
|
| 665 |
-
|
| 666 |
-
|
| 667 |
-
|
| 668 |
-
|
| 669 |
-
|
| 670 |
-
|
| 671 |
-
|
| 672 |
-
|
| 673 |
-
|
| 674 |
-
|
| 675 |
-
|
| 676 |
-
|
| 677 |
-
ob_start();
|
| 678 |
-
?>
|
| 679 |
-
<table class="form-table pwb_brand_cont">
|
| 680 |
-
<tr class="form-field">
|
| 681 |
-
<th>
|
| 682 |
-
<label for="pwb_brand_image"><?php _e( 'Brand logo', 'perfect-woocommerce-brands' ); ?></label>
|
| 683 |
-
</th>
|
| 684 |
-
<td>
|
| 685 |
-
<input type="text" name="pwb_brand_image" id="pwb_brand_image" value="<?php echo $term_value_image;?>" >
|
| 686 |
-
<a href="#" id="pwb_brand_image_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
| 687 |
-
|
| 688 |
-
<?php $current_image = wp_get_attachment_image ( $term_value_image, array('90','90'), false ); ?>
|
| 689 |
-
<?php if( !empty($current_image) ): ?>
|
| 690 |
-
<div class="pwb_brand_image_selected">
|
| 691 |
-
<span>
|
| 692 |
-
<?php echo $current_image;?>
|
| 693 |
-
<a href="#" class="pwb_brand_image_selected_remove">X</a>
|
| 694 |
-
</span>
|
| 695 |
-
</div>
|
| 696 |
-
<?php endif; ?>
|
| 697 |
-
|
| 698 |
-
</td>
|
| 699 |
-
</tr>
|
| 700 |
-
<tr class="form-field">
|
| 701 |
-
<th>
|
| 702 |
-
<label for="pwb_brand_banner"><?php _e( 'Brand banner', 'perfect-woocommerce-brands' ); ?></label>
|
| 703 |
-
</th>
|
| 704 |
-
<td>
|
| 705 |
-
<input type="text" name="pwb_brand_banner" id="pwb_brand_banner" value="<?php echo $term_value_banner;?>" >
|
| 706 |
-
<a href="#" id="pwb_brand_banner_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
| 707 |
-
|
| 708 |
-
<?php $current_image = wp_get_attachment_image ( $term_value_banner, array('90','90'), false ); ?>
|
| 709 |
-
<?php if( !empty($current_image) ): ?>
|
| 710 |
-
<div class="pwb_brand_image_selected">
|
| 711 |
-
<span>
|
| 712 |
-
<?php echo $current_image;?>
|
| 713 |
-
<a href="#" class="pwb_brand_image_selected_remove">X</a>
|
| 714 |
-
</span>
|
| 715 |
-
</div>
|
| 716 |
-
<?php endif; ?>
|
| 717 |
-
|
| 718 |
-
</td>
|
| 719 |
-
</tr>
|
| 720 |
-
<tr class="form-field">
|
| 721 |
-
<th>
|
| 722 |
-
<label for="pwb_brand_banner_link"><?php _e( 'Brand banner link', 'perfect-woocommerce-brands' ); ?></label>
|
| 723 |
-
</th>
|
| 724 |
-
<td>
|
| 725 |
-
<input type="text" name="pwb_brand_banner_link" id="pwb_brand_banner_link" value="<?php echo $term_value_banner_link;?>" >
|
| 726 |
-
<p class="description"><?php _e( 'This link should be relative to site url. Example: product/product-name', 'perfect-woocommerce-brands' ); ?></p>
|
| 727 |
-
<div id="pwb_brand_banner_link_result"><?php echo wp_get_attachment_image ( $term_value_banner_link, array('90','90'), false );?></div>
|
| 728 |
-
</td>
|
| 729 |
-
</tr>
|
| 730 |
-
</table>
|
| 731 |
-
|
| 732 |
-
<?php echo wp_nonce_field( basename( __FILE__ ), 'pwb_nonce' );?>
|
| 733 |
-
|
| 734 |
-
<?php
|
| 735 |
-
echo ob_get_clean();
|
| 736 |
-
}
|
| 737 |
-
|
| 738 |
-
public function add_brands_metafields_save( $term_id ){
|
| 739 |
-
|
| 740 |
-
if ( ! isset( $_POST['pwb_nonce'] ) || ! wp_verify_nonce( $_POST['pwb_nonce'], basename( __FILE__ ) ) )
|
| 741 |
-
return;
|
| 742 |
-
|
| 743 |
-
/* ·············· Brand image ·············· */
|
| 744 |
-
$old_img = get_term_meta( $term_id, 'pwb_brand_image', true );
|
| 745 |
-
$new_img = isset( $_POST['pwb_brand_image'] ) ? $_POST['pwb_brand_image'] : '';
|
| 746 |
-
|
| 747 |
-
if ( $old_img && '' === $new_img )
|
| 748 |
-
delete_term_meta( $term_id, 'pwb_brand_image' );
|
| 749 |
|
| 750 |
-
|
| 751 |
-
update_term_meta( $term_id, 'pwb_brand_image', $new_img );
|
| 752 |
-
/* ·············· /Brand image ·············· */
|
| 753 |
|
| 754 |
-
|
| 755 |
-
|
| 756 |
-
$new_img = isset( $_POST['pwb_brand_banner'] ) ? $_POST['pwb_brand_banner'] : '';
|
| 757 |
|
| 758 |
-
|
| 759 |
-
|
|
|
|
| 760 |
|
| 761 |
-
|
| 762 |
-
|
| 763 |
-
/* ·············· /Brand banner ·············· */
|
| 764 |
|
| 765 |
-
|
| 766 |
-
|
| 767 |
-
|
| 768 |
|
| 769 |
-
|
| 770 |
-
|
|
|
|
| 771 |
|
| 772 |
-
|
| 773 |
-
|
| 774 |
-
/* ·············· /Brand banner link ·············· */
|
| 775 |
-
}
|
| 776 |
|
| 777 |
-
|
|
|
|
|
|
|
| 778 |
|
| 779 |
-
|
|
|
|
|
|
|
| 780 |
|
| 781 |
-
|
| 782 |
-
|
| 783 |
-
'cb' => $defaults['cb'],
|
| 784 |
-
'logo' => __( 'Logo', 'perfect-woocommerce-brands' )
|
| 785 |
-
);
|
| 786 |
|
| 787 |
-
|
| 788 |
-
|
|
|
|
|
|
|
| 789 |
|
| 790 |
-
|
| 791 |
-
|
| 792 |
-
return $defaults;
|
| 793 |
|
| 794 |
-
|
|
|
|
| 795 |
|
| 796 |
-
|
| 797 |
-
$image = wp_get_attachment_image( get_term_meta( $term_id, 'pwb_brand_image', 1 ), array('60','60') );
|
| 798 |
-
if($image){
|
| 799 |
-
return $image;
|
| 800 |
-
}else{
|
| 801 |
-
return "-";
|
| 802 |
-
}
|
| 803 |
-
}
|
| 804 |
|
| 805 |
-
|
| 806 |
-
$result = array();
|
| 807 |
|
| 808 |
-
|
| 809 |
-
|
| 810 |
-
'order_by' => $order_by,
|
| 811 |
-
'order' => $order
|
| 812 |
-
));
|
| 813 |
|
| 814 |
-
|
| 815 |
-
|
| 816 |
-
}
|
| 817 |
|
| 818 |
-
|
|
|
|
|
|
|
| 819 |
|
| 820 |
-
|
|
|
|
|
|
|
| 821 |
|
| 822 |
-
|
| 823 |
-
$result =
|
|
|
|
| 824 |
|
| 825 |
-
|
| 826 |
-
if( $is_select )
|
| 827 |
-
$result[0] = __( 'All', 'perfect-woocommerce-brands' );
|
| 828 |
|
| 829 |
-
|
| 830 |
-
'hide_empty' => false
|
| 831 |
-
));
|
| 832 |
|
| 833 |
-
|
| 834 |
-
|
| 835 |
-
}
|
| 836 |
|
| 837 |
-
|
| 838 |
|
| 839 |
-
|
|
|
|
|
|
|
| 840 |
|
| 841 |
-
|
| 842 |
-
|
| 843 |
-
if($brand_id === 'all'){
|
| 844 |
-
$args = array(
|
| 845 |
-
'post_type' => 'product',
|
| 846 |
-
'posts_per_page' => $count,
|
| 847 |
-
'paged' => false
|
| 848 |
-
);
|
| 849 |
-
}else{
|
| 850 |
-
$args = array(
|
| 851 |
-
'post_type' => 'product',
|
| 852 |
-
'tax_query' => array(
|
| 853 |
-
array(
|
| 854 |
-
'taxonomy' => 'pwb-brand',
|
| 855 |
-
'field' => 'slug',
|
| 856 |
-
'terms' => $brand_id,
|
| 857 |
-
)
|
| 858 |
-
),
|
| 859 |
-
'posts_per_page' => $count,
|
| 860 |
-
'paged' => false
|
| 861 |
-
);
|
| 862 |
}
|
| 863 |
|
| 864 |
-
|
| 865 |
-
|
| 866 |
-
|
| 867 |
-
|
| 868 |
-
|
| 869 |
-
|
| 870 |
-
|
| 871 |
-
|
| 872 |
-
echo '<a href="'.get_the_permalink().'">';
|
| 873 |
-
echo woocommerce_get_product_thumbnail();
|
| 874 |
-
echo '<h3>'.$product->get_title().'</h3>';
|
| 875 |
-
echo '<span class="pwb-amount">'.$product->get_price_html().'</span>';
|
| 876 |
-
woocommerce_template_loop_add_to_cart();
|
| 877 |
-
echo '</a>';
|
| 878 |
echo '</div>';
|
| 879 |
-
|
| 880 |
-
endwhile;
|
| 881 |
-
} else {
|
| 882 |
-
echo __( 'No products found', 'perfect-woocommerce-brands' );
|
| 883 |
-
}
|
| 884 |
-
wp_reset_postdata();
|
| 885 |
-
|
| 886 |
-
return ob_get_clean();
|
| 887 |
-
|
| 888 |
-
}
|
| 889 |
-
|
| 890 |
-
public function archive_page_banner(){
|
| 891 |
-
$queried_object = get_queried_object();
|
| 892 |
-
|
| 893 |
-
if( is_tax('pwb-brand') ){
|
| 894 |
-
|
| 895 |
-
$brand_banner = get_term_meta( $queried_object->term_id, 'pwb_brand_banner', true );
|
| 896 |
-
$brand_banner_link = get_term_meta( $queried_object->term_id, 'pwb_brand_banner_link', true );
|
| 897 |
-
$show_desc = get_option('wc_pwb_admin_tab_brand_desc');
|
| 898 |
-
|
| 899 |
-
if( $brand_banner!='' || $queried_object->description != '' && $show_desc !== 'no' ){
|
| 900 |
-
echo '<div class="pwb-brand-banner-cont">';
|
| 901 |
}
|
| 902 |
|
| 903 |
-
|
| 904 |
-
|
| 905 |
-
|
| 906 |
-
|
| 907 |
-
echo '<a href="'.site_url($brand_banner_link).'">'.wp_get_attachment_image ( $brand_banner, 'full', false ).'</a>';
|
| 908 |
-
}else{
|
| 909 |
-
echo wp_get_attachment_image ( $brand_banner, 'full', false );
|
| 910 |
-
}
|
| 911 |
-
echo '</div>';
|
| 912 |
-
}
|
| 913 |
-
|
| 914 |
-
//show brand description
|
| 915 |
-
if( $queried_object->description != '' && $show_desc !== 'no' ){
|
| 916 |
-
echo '<div class="pwb-brand-description">';
|
| 917 |
-
echo $queried_object->description;
|
| 918 |
-
echo '</div>';
|
| 919 |
-
}
|
| 920 |
-
|
| 921 |
-
if( $brand_banner!='' || $queried_object->description != '' && $show_desc !== 'no' ){
|
| 922 |
echo '</div>';
|
| 923 |
}
|
| 924 |
|
|
|
|
|
|
|
| 925 |
}
|
| 926 |
|
| 927 |
}
|
| 928 |
|
| 929 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
<?php
|
| 2 |
+
namespace Perfect_Woocommerce_Brands;
|
| 3 |
+
|
| 4 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
| 5 |
+
|
| 6 |
+
class Perfect_Woocommerce_Brands{
|
| 7 |
+
|
| 8 |
+
function __construct(){
|
| 9 |
+
add_action( 'woocommerce_init', array( $this, 'register_brands_taxonomy' ), 10, 0 );
|
| 10 |
+
add_action( 'init', array( $this, 'add_brands_metafields' ) );
|
| 11 |
+
add_action( 'pwb-brand_add_form_fields', array( $this, 'add_brands_metafields_form' ) );
|
| 12 |
+
add_action( 'pwb-brand_edit_form_fields', array( $this, 'add_brands_metafields_form_edit' ) );
|
| 13 |
+
add_action( 'edit_pwb-brand', array( $this, 'add_brands_metafields_save' ) );
|
| 14 |
+
add_action( 'create_pwb-brand', array( $this, 'add_brands_metafields_save' ) );
|
| 15 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_scripts' ) );
|
| 16 |
+
$this->brand_logo_position();
|
| 17 |
+
add_action( 'woocommerce_before_shop_loop', array( $this, 'archive_page_banner' ), 9);
|
| 18 |
+
add_action( 'woocommerce_after_shop_loop_item_title', array( $this, 'show_brands_in_loop' ) );
|
| 19 |
+
if( !is_admin() ) add_action( 'init', array( $this, 'register_frontend_scripts' ) );
|
| 20 |
+
$this->add_shortcodes();
|
| 21 |
+
if( is_plugin_active('js_composer/js_composer.php') || is_plugin_active('visual_composer/js_composer.php') ){
|
| 22 |
+
add_action( 'vc_before_init', array( $this,'vc_map_shortcodes' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
}
|
| 24 |
+
add_action( 'widgets_init', array( $this, 'register_widgets' ) );
|
| 25 |
|
| 26 |
+
if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '3.0.0', '>=' ) ){
|
| 27 |
+
add_filter( 'woocommerce_structured_data_product', array( $this, 'product_microdata' ), 10, 2 );
|
| 28 |
+
}else{
|
| 29 |
+
add_action( 'wp_head' , array( $this, 'product_microdata_legacy' ), 40 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
}
|
| 31 |
|
| 32 |
+
add_action( 'pre_get_posts', array( $this, 'pwb_brand_filter' ) );
|
| 33 |
+
add_filter( 'plugin_action_links_' . PWB_PLUGIN_BASENAME, array( $this, 'plugin_action_links' ) );
|
| 34 |
+
add_action( 'wp_ajax_dismiss_pwb_notice', array( $this, 'dismiss_pwb_notice' ) );
|
| 35 |
+
add_action( 'admin_notices', array( $this, 'review_notice' ) );
|
| 36 |
+
|
| 37 |
+
add_action( 'pre_get_posts', function(){
|
| 38 |
+
if( is_tax('pwb-brand') )
|
| 39 |
+
remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
|
| 40 |
+
});
|
| 41 |
+
add_action( 'woocommerce_product_duplicate', array( $this, 'product_duplicate_save' ), 10, 2 );
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
public function review_notice(){
|
| 45 |
+
$show_notice = get_option('wc_pwb_notice_plugin_review', true);
|
| 46 |
+
$activate_on = get_option('pwb_activate_on', time());
|
| 47 |
+
$now = time();
|
| 48 |
+
$one_month = 2592000;
|
| 49 |
+
$date_diff = $now - $activate_on;
|
| 50 |
+
|
| 51 |
+
if ( $show_notice && $date_diff > $one_month ) {
|
| 52 |
+
?>
|
| 53 |
+
<div class="notice notice-info pwb-notice-dismissible is-dismissible" data-notice="wc_pwb_notice_plugin_review">
|
| 54 |
+
<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>
|
| 55 |
+
<p>
|
| 56 |
+
<?php _e( '<a href="https://wordpress.org/support/plugin/perfect-woocommerce-brands/reviews/?rate=5#new-post" target="_blank">Leave a review</a>', 'perfect-woocommerce-brands' ); ?>
|
| 57 |
+
<?php _e( '<a href="https://translate.wordpress.org/projects/wp-plugins/perfect-woocommerce-brands" target="_blank">Translate the plugin</a>', 'perfect-woocommerce-brands' ); ?>
|
| 58 |
+
<?php _e( '<a href="https://github.com/titodevera/perfect-woocommerce-brands" target="_blank">View on GitHub</a>', 'perfect-woocommerce-brands' ); ?>
|
| 59 |
+
</p>
|
| 60 |
+
</div>
|
| 61 |
+
<?php
|
| 62 |
}
|
| 63 |
+
}
|
| 64 |
|
| 65 |
+
public function dismiss_pwb_notice(){
|
| 66 |
+
$notice_name_whitelist = array( 'wc_pwb_notice_plugin_review' );
|
| 67 |
+
if( isset( $_POST['notice_name'] ) && in_array( $_POST['notice_name'], $notice_name_whitelist ) ){
|
| 68 |
+
update_option( $_POST['notice_name'], 0 );
|
| 69 |
+
echo 'ok';
|
| 70 |
+
}else{
|
| 71 |
+
echo 'error';
|
| 72 |
}
|
| 73 |
+
wp_die();
|
| 74 |
+
}
|
| 75 |
|
| 76 |
+
/**
|
| 77 |
+
* Adds a settings shortcut to plugin´s actions on plugins list
|
| 78 |
+
*/
|
| 79 |
+
public function plugin_action_links( $links ) {
|
| 80 |
+
$settings_url = esc_url( admin_url( 'admin.php?page=wc-settings&tab=pwb_admin_tab' ) );
|
| 81 |
+
$links[] = '<a href="'. $settings_url .'">'.__('Settings','perfect-woocommerce-brands').'</a>';
|
| 82 |
+
return $links;
|
| 83 |
+
}
|
| 84 |
|
| 85 |
+
public function pwb_brand_filter( $query ){
|
| 86 |
|
| 87 |
+
if( !empty($_GET['pwb-brand-filter']) ){
|
| 88 |
|
| 89 |
+
$terms_array = explode(',',$_GET['pwb-brand-filter']);
|
|
|
|
|
|
|
|
|
|
| 90 |
|
| 91 |
+
//remove invalid terms (security)
|
| 92 |
+
for($i=0; $i < count($terms_array); $i++) {
|
| 93 |
+
if( !term_exists( $terms_array[$i], 'pwb-brand' ) ) unset($terms_array[$i]);
|
| 94 |
+
}
|
| 95 |
|
| 96 |
+
$filterable_product = false;
|
| 97 |
+
if( is_product_category() || is_post_type_archive( 'product' ) )
|
| 98 |
+
$filterable_product = true;
|
| 99 |
|
| 100 |
+
if( $filterable_product && $query->is_main_query() ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
|
| 102 |
+
$query->set('tax_query', array(
|
| 103 |
+
array (
|
| 104 |
+
'taxonomy' => 'pwb-brand',
|
| 105 |
+
'field' => 'slug',
|
| 106 |
+
'terms' => $terms_array
|
| 107 |
+
)
|
| 108 |
+
));
|
| 109 |
|
| 110 |
}
|
| 111 |
|
| 112 |
}
|
| 113 |
|
| 114 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
|
| 116 |
+
/*
|
| 117 |
+
* Adds microdata (brands) to single products (WooCommerce < 3.0.0)
|
| 118 |
+
*/
|
| 119 |
+
public function product_microdata_legacy(){
|
| 120 |
+
global $post;
|
| 121 |
|
| 122 |
+
if( isset( $post->post_type ) && $post->post_type==='product' ){
|
| 123 |
+
$brands = wp_get_post_terms( $post->ID, 'pwb-brand');
|
| 124 |
foreach ($brands as $brand) {
|
| 125 |
+
echo '<meta itemprop="brand" content="'.$brand->name.'">';
|
| 126 |
}
|
| 127 |
+
}
|
| 128 |
|
| 129 |
+
}
|
| 130 |
|
| 131 |
+
/*
|
| 132 |
+
* Adds microdata (brands) to single products (WooCommerce > 3.0.0)
|
| 133 |
+
*/
|
| 134 |
+
public function product_microdata( $markup, $product ){
|
| 135 |
|
| 136 |
+
$new_markup = array();
|
| 137 |
+
$brands = wp_get_post_terms( $product->get_id(), 'pwb-brand');
|
| 138 |
+
foreach ($brands as $brand) {
|
| 139 |
+
$new_markup['brand'][] = $brand->name;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
}
|
| 141 |
|
| 142 |
+
return array_merge( $markup, $new_markup );
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
|
| 144 |
+
}
|
| 145 |
|
| 146 |
+
public function add_shortcodes(){
|
| 147 |
+
add_shortcode( 'pwb-carousel', array(
|
| 148 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Carousel_Shortcode',
|
| 149 |
+
'carousel_shortcode'
|
| 150 |
+
) );
|
| 151 |
+
add_shortcode( 'pwb-product-carousel', array(
|
| 152 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Product_Carousel_Shortcode',
|
| 153 |
+
'product_carousel_shortcode'
|
| 154 |
+
) );
|
| 155 |
+
add_shortcode( 'pwb-all-brands', array(
|
| 156 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_All_Brands_Shortcode',
|
| 157 |
+
'all_brands_shortcode'
|
| 158 |
+
) );
|
| 159 |
+
add_shortcode( 'pwb-brand', array(
|
| 160 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Brand_Shortcode',
|
| 161 |
+
'brand_shortcode'
|
| 162 |
+
) );
|
| 163 |
+
}
|
| 164 |
|
| 165 |
+
public function register_widgets(){
|
| 166 |
+
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_List_Widget' );
|
| 167 |
+
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_Dropdown_Widget' );
|
| 168 |
+
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_Filter_By_Brand_Widget' );
|
| 169 |
+
}
|
| 170 |
|
| 171 |
+
public function show_brands_in_loop(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 172 |
|
| 173 |
+
$brands_in_loop = get_option('wc_pwb_admin_tab_brands_in_loop');
|
|
|
|
|
|
|
| 174 |
|
| 175 |
+
if( $brands_in_loop == 'brand_link' || $brands_in_loop == 'brand_image' ){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
|
| 177 |
+
global $product;
|
| 178 |
+
$product_id = $product->get_id();
|
| 179 |
+
$product_brands = wp_get_post_terms($product_id, 'pwb-brand');
|
| 180 |
+
if(!empty($product_brands)){
|
| 181 |
+
echo '<div class="pwb-brands-in-loop">';
|
| 182 |
+
foreach ($product_brands as $brand) {
|
| 183 |
|
| 184 |
+
echo '<span>';
|
| 185 |
+
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
| 186 |
+
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
| 187 |
|
| 188 |
+
$attachment_html = wp_get_attachment_image( $attachment_id, 'thumbnail' );
|
| 189 |
+
if( !empty($attachment_html) && $brands_in_loop == 'brand_image' ){
|
| 190 |
+
echo '<a href="'.$brand_link.'">'.$attachment_html.'</a>';
|
| 191 |
+
}else{
|
| 192 |
+
echo '<a href="'.$brand_link.'">'.$brand->name.'</a>';
|
| 193 |
+
}
|
| 194 |
+
echo '</span>';
|
| 195 |
|
| 196 |
+
}
|
| 197 |
+
echo '</div>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 198 |
}
|
| 199 |
+
|
| 200 |
}
|
| 201 |
|
| 202 |
+
}
|
| 203 |
|
| 204 |
+
/**
|
| 205 |
+
* woocommerce_single_product_summary hook.
|
| 206 |
+
*
|
| 207 |
+
* @hooked woocommerce_template_single_title - 5
|
| 208 |
+
* @hooked woocommerce_template_single_rating - 10
|
| 209 |
+
* @hooked woocommerce_template_single_price - 10
|
| 210 |
+
* @hooked woocommerce_template_single_excerpt - 20
|
| 211 |
+
* @hooked woocommerce_template_single_add_to_cart - 30
|
| 212 |
+
* @hooked woocommerce_template_single_meta - 40
|
| 213 |
+
* @hooked woocommerce_template_single_sharing - 50
|
| 214 |
+
*/
|
| 215 |
+
private function brand_logo_position(){
|
| 216 |
+
$position = 41;
|
| 217 |
+
$position_selected = get_option('wc_pwb_admin_tab_brand_single_position');
|
| 218 |
+
if(!$position_selected){
|
| 219 |
+
update_option('wc_pwb_admin_tab_brand_single_position','after_meta');
|
| 220 |
+
}
|
| 221 |
+
switch ($position_selected) {
|
| 222 |
+
case 'before_title':
|
| 223 |
+
$position = 4;
|
| 224 |
+
break;
|
| 225 |
+
case 'after_title':
|
| 226 |
+
$position = 6;
|
| 227 |
+
break;
|
| 228 |
+
case 'after_price':
|
| 229 |
+
$position = 11;
|
| 230 |
+
break;
|
| 231 |
+
case 'after_excerpt':
|
| 232 |
+
$position = 21;
|
| 233 |
+
break;
|
| 234 |
+
case 'after_add_to_cart':
|
| 235 |
+
$position = 31;
|
| 236 |
+
break;
|
| 237 |
+
case 'after_meta':
|
| 238 |
+
$position = 41;
|
| 239 |
+
break;
|
| 240 |
+
case 'after_sharing':
|
| 241 |
+
$position = 51;
|
| 242 |
+
break;
|
| 243 |
+
}
|
| 244 |
+
add_action('woocommerce_single_product_summary', array($this,'action_woocommerce_single_product_summary'), $position);
|
| 245 |
+
}
|
| 246 |
|
|
|
|
|
|
|
|
|
|
| 247 |
|
| 248 |
+
/*
|
| 249 |
+
* Maps shortcode (for visual composer plugin)
|
| 250 |
+
*
|
| 251 |
+
* @since 1.0
|
| 252 |
+
* @link https://vc.wpbakery.com/
|
| 253 |
+
* @return mixed
|
| 254 |
+
*/
|
| 255 |
+
public function vc_map_shortcodes(){
|
| 256 |
+
$available_image_sizes_adapted = array();
|
| 257 |
+
$available_image_sizes = get_intermediate_image_sizes();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 258 |
|
| 259 |
+
foreach($available_image_sizes as $image_size){
|
| 260 |
+
$available_image_sizes_adapted[$image_size] = $image_size;
|
| 261 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 262 |
|
| 263 |
+
vc_map(array(
|
| 264 |
+
"name" => __( "PWB Product carousel", "perfect-woocommerce-brands" ),
|
| 265 |
+
"description" => __( "Product carousel by brand or by category", "perfect-woocommerce-brands" ),
|
| 266 |
+
"base" => "pwb-product-carousel",
|
| 267 |
+
"class" => "",
|
| 268 |
+
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
| 269 |
+
"category" => "Woocommerce",
|
| 270 |
+
"params" => array(
|
| 271 |
+
array(
|
| 272 |
+
"type" => "dropdown",
|
| 273 |
+
"heading" => __( "Brand", "perfect-woocommerce-brands" ),
|
| 274 |
+
"param_name" => "brand",
|
| 275 |
+
"admin_label" => true,
|
| 276 |
+
"value" => self::get_brands_array( true )
|
| 277 |
+
),
|
| 278 |
+
array(
|
| 279 |
+
"type" => "textfield",
|
| 280 |
+
"holder" => "div",
|
| 281 |
+
"heading" => __( "Products", "perfect-woocommerce-brands" ),
|
| 282 |
+
"param_name" => "products",
|
| 283 |
+
"value" => "10",
|
| 284 |
+
"description" => __( "Number of products to load", "perfect-woocommerce-brands" )
|
| 285 |
+
),
|
| 286 |
+
array(
|
| 287 |
+
"type" => "textfield",
|
| 288 |
+
"holder" => "div",
|
| 289 |
+
"heading" => __( "Products to show", "perfect-woocommerce-brands" ),
|
| 290 |
+
"param_name" => "products_to_show",
|
| 291 |
+
"value" => "5",
|
| 292 |
+
"description" => __( "Number of products to show", "perfect-woocommerce-brands" )
|
| 293 |
+
),
|
| 294 |
+
array(
|
| 295 |
+
"type" => "textfield",
|
| 296 |
+
"holder" => "div",
|
| 297 |
+
"heading" => __( "Products to scroll", "perfect-woocommerce-brands" ),
|
| 298 |
+
"param_name" => "products_to_scroll",
|
| 299 |
+
"value" => "1",
|
| 300 |
+
"description" => __( "Number of products to scroll", "perfect-woocommerce-brands" )
|
| 301 |
+
),
|
| 302 |
+
array(
|
| 303 |
+
"type" => "checkbox",
|
| 304 |
+
"holder" => "div",
|
| 305 |
+
"heading" => __( "Autoplay", "perfect-woocommerce-brands" ),
|
| 306 |
+
"param_name" => "autoplay",
|
| 307 |
+
"description" => __( "Autoplay carousel", "perfect-woocommerce-brands" )
|
| 308 |
+
),
|
| 309 |
+
array(
|
| 310 |
+
"type" => "checkbox",
|
| 311 |
+
"holder" => "div",
|
| 312 |
+
"heading" => __( "Arrows", "perfect-woocommerce-brands" ),
|
| 313 |
+
"param_name" => "arrows",
|
| 314 |
+
"description" => __( "Display prev and next arrows", "perfect-woocommerce-brands" )
|
| 315 |
+
)
|
| 316 |
+
)
|
| 317 |
+
));
|
| 318 |
+
|
| 319 |
+
vc_map(array(
|
| 320 |
+
"name" => __( "PWB Brands carousel", "perfect-woocommerce-brands" ),
|
| 321 |
+
"description" => __( "Brands carousel", "perfect-woocommerce-brands" ),
|
| 322 |
+
"base" => "pwb-carousel",
|
| 323 |
+
"class" => "",
|
| 324 |
+
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
| 325 |
+
"category" => "Woocommerce",
|
| 326 |
+
"params" => array(
|
| 327 |
+
array(
|
| 328 |
+
"type" => "textfield",
|
| 329 |
+
"holder" => "div",
|
| 330 |
+
"heading" => __( "Items", "perfect-woocommerce-brands" ),
|
| 331 |
+
"param_name" => "items",
|
| 332 |
+
"value" => "10",
|
| 333 |
+
"description" => __( "Number of items to load (or 'featured')", "perfect-woocommerce-brands" )
|
| 334 |
+
),
|
| 335 |
+
array(
|
| 336 |
+
"type" => "textfield",
|
| 337 |
+
"holder" => "div",
|
| 338 |
+
"heading" => __( "Items to show", "perfect-woocommerce-brands" ),
|
| 339 |
+
"param_name" => "items_to_show",
|
| 340 |
+
"value" => "5",
|
| 341 |
+
"description" => __( "Number of items to show", "perfect-woocommerce-brands" )
|
| 342 |
+
),
|
| 343 |
+
array(
|
| 344 |
+
"type" => "textfield",
|
| 345 |
+
"holder" => "div",
|
| 346 |
+
"heading" => __( "Items to scroll", "perfect-woocommerce-brands" ),
|
| 347 |
+
"param_name" => "items_to_scroll",
|
| 348 |
+
"value" => "1",
|
| 349 |
+
"description" => __( "Number of items to scroll", "perfect-woocommerce-brands" )
|
| 350 |
+
),
|
| 351 |
+
array(
|
| 352 |
+
"type" => "checkbox",
|
| 353 |
+
"holder" => "div",
|
| 354 |
+
"heading" => __( "Autoplay", "perfect-woocommerce-brands" ),
|
| 355 |
+
"param_name" => "autoplay",
|
| 356 |
+
"description" => __( "Autoplay carousel", "perfect-woocommerce-brands" )
|
| 357 |
+
),
|
| 358 |
+
array(
|
| 359 |
+
"type" => "checkbox",
|
| 360 |
+
"holder" => "div",
|
| 361 |
+
"heading" => __( "Arrows", "perfect-woocommerce-brands" ),
|
| 362 |
+
"param_name" => "arrows",
|
| 363 |
+
"description" => __( "Display prev and next arrows", "perfect-woocommerce-brands" )
|
| 364 |
+
),
|
| 365 |
+
array(
|
| 366 |
+
"type" => "dropdown",
|
| 367 |
+
"heading" => __( "Brand logo size", "perfect-woocommerce-brands" ),
|
| 368 |
+
"param_name" => "image_size",
|
| 369 |
+
"admin_label" => true,
|
| 370 |
+
"value" => $available_image_sizes_adapted
|
| 371 |
+
)
|
| 372 |
+
)
|
| 373 |
|
|
|
|
| 374 |
|
| 375 |
+
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 376 |
|
| 377 |
+
vc_map(array(
|
| 378 |
+
"name" => __( "PWB All brands", "perfect-woocommerce-brands" ),
|
| 379 |
+
"description" => __( "Show all brands", "perfect-woocommerce-brands" ),
|
| 380 |
+
"base" => "pwb-all-brands",
|
| 381 |
+
"class" => "",
|
| 382 |
+
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
| 383 |
+
"category" => "Woocommerce",
|
| 384 |
+
"params" => array(
|
| 385 |
+
array(
|
| 386 |
+
"type" => "textfield",
|
| 387 |
+
"holder" => "div",
|
| 388 |
+
"heading" => __( "Brands per page", "perfect-woocommerce-brands" ),
|
| 389 |
+
"param_name" => "per_page",
|
| 390 |
+
"value" => "10",
|
| 391 |
+
"description" => __( "Show x brands per page", "perfect-woocommerce-brands" )
|
| 392 |
+
),
|
| 393 |
+
array(
|
| 394 |
+
"type" => "dropdown",
|
| 395 |
+
"heading" => __( "Brand logo size", "perfect-woocommerce-brands" ),
|
| 396 |
+
"param_name" => "image_size",
|
| 397 |
+
"admin_label" => true,
|
| 398 |
+
"value" => $available_image_sizes_adapted
|
| 399 |
+
),
|
| 400 |
+
array(
|
| 401 |
+
"type" => "dropdown",
|
| 402 |
+
"heading" => __( "Order by", "perfect-woocommerce-brands" ),
|
| 403 |
+
"param_name" => "order_by",
|
| 404 |
+
"admin_label" => true,
|
| 405 |
+
"value" => array(
|
| 406 |
+
'name' => 'name',
|
| 407 |
+
'slug' => 'slug',
|
| 408 |
+
'term_id' => 'term_id',
|
| 409 |
+
'id' => 'id',
|
| 410 |
+
'description' => 'description',
|
| 411 |
+
'rand' => 'rand'
|
| 412 |
+
)
|
| 413 |
+
),
|
| 414 |
+
array(
|
| 415 |
+
"type" => "dropdown",
|
| 416 |
+
"heading" => __( "Order", "perfect-woocommerce-brands" ),
|
| 417 |
+
"param_name" => "order",
|
| 418 |
+
"admin_label" => true,
|
| 419 |
+
"value" => array(
|
| 420 |
+
'ASC' => 'ASC',
|
| 421 |
+
'DSC' => 'DSC'
|
| 422 |
+
)
|
| 423 |
+
),
|
| 424 |
+
array(
|
| 425 |
+
"type" => "dropdown",
|
| 426 |
+
"heading" => __( "Title position", "perfect-woocommerce-brands" ),
|
| 427 |
+
"param_name" => "title_position",
|
| 428 |
+
"admin_label" => true,
|
| 429 |
+
"value" => array(
|
| 430 |
+
__( "Before image", "perfect-woocommerce-brands" ) => 'before',
|
| 431 |
+
__( "After image", "perfect-woocommerce-brands" ) => 'after',
|
| 432 |
+
__( "Hide", "perfect-woocommerce-brands" ) => 'none'
|
| 433 |
+
)
|
| 434 |
+
),
|
| 435 |
+
array(
|
| 436 |
+
"type" => "checkbox",
|
| 437 |
+
"holder" => "div",
|
| 438 |
+
"heading" => __( "Hide empty", "perfect-woocommerce-brands" ),
|
| 439 |
+
"param_name" => "hide_empty",
|
| 440 |
+
"description" => __( "Hide brands that have not been assigned to any product", "perfect-woocommerce-brands" )
|
| 441 |
+
)
|
| 442 |
+
)
|
| 443 |
|
|
|
|
| 444 |
|
| 445 |
+
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 446 |
|
| 447 |
+
vc_map(array(
|
| 448 |
+
"name" => __( "PWB brand", "perfect-woocommerce-brands" ),
|
| 449 |
+
"description" => __( "Show brand for a specific product", "perfect-woocommerce-brands" ),
|
| 450 |
+
"base" => "pwb-brand",
|
| 451 |
+
"class" => "",
|
| 452 |
+
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
| 453 |
+
"category" => "Woocommerce",
|
| 454 |
|
| 455 |
+
"params" => array(
|
| 456 |
+
array(
|
| 457 |
+
"type" => "textfield",
|
| 458 |
+
"holder" => "div",
|
| 459 |
+
"heading" => __( "Product id", "perfect-woocommerce-brands" ),
|
| 460 |
+
"param_name" => "product_id",
|
| 461 |
+
"value" => null,
|
| 462 |
+
"description" => __( "Product id (post id)", "perfect-woocommerce-brands" )
|
| 463 |
+
),
|
| 464 |
+
array(
|
| 465 |
+
"type" => "dropdown",
|
| 466 |
+
"heading" => __( "Brand logo size", "perfect-woocommerce-brands" ),
|
| 467 |
+
"param_name" => "image_size",
|
| 468 |
+
"admin_label" => true,
|
| 469 |
+
"value" => $available_image_sizes_adapted
|
| 470 |
+
)
|
| 471 |
+
|
| 472 |
+
)
|
| 473 |
|
|
|
|
|
|
|
| 474 |
|
| 475 |
+
));
|
| 476 |
+
}
|
| 477 |
|
| 478 |
+
public function action_woocommerce_single_product_summary() {
|
| 479 |
+
$brands = wp_get_post_terms( get_the_ID(), 'pwb-brand');
|
| 480 |
|
| 481 |
+
if( !is_wp_error( $brands ) ){
|
| 482 |
|
| 483 |
+
if( sizeof( $brands ) > 0 ){
|
| 484 |
|
| 485 |
+
$show_as = get_option( 'wc_pwb_admin_tab_brands_in_single' );
|
| 486 |
|
| 487 |
+
if( $show_as!='no' ){
|
|
|
|
|
|
|
|
|
|
| 488 |
|
| 489 |
+
do_action( 'pwb_before_single_product_brands', $brands );
|
|
|
|
|
|
|
|
|
|
|
|
|
| 490 |
|
| 491 |
+
echo '<div class="pwb-single-product-brands pwb-clearfix">';
|
| 492 |
+
foreach( $brands as $brand ){
|
| 493 |
+
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
| 494 |
+
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
| 495 |
|
| 496 |
+
$image_size = 'thumbnail';
|
| 497 |
+
$image_size_selected = get_option('wc_pwb_admin_tab_brand_logo_size');
|
| 498 |
+
if($image_size_selected!=false){
|
| 499 |
+
$image_size = $image_size_selected;
|
| 500 |
+
}
|
|
|
|
|
|
|
| 501 |
|
| 502 |
+
$attachment_html = wp_get_attachment_image($attachment_id,$image_size);
|
| 503 |
|
| 504 |
+
if( !empty($attachment_html) && $show_as=='brand_image' || !empty($attachment_html) && !$show_as ){
|
| 505 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$attachment_html.'</a>';
|
| 506 |
+
}else{
|
| 507 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$brand->name.'</a>';
|
| 508 |
+
}
|
| 509 |
}
|
| 510 |
+
echo '</div>';
|
| 511 |
+
|
| 512 |
+
do_action( 'pwb_after_single_product_brands', $brands );
|
| 513 |
|
| 514 |
}
|
| 515 |
|
| 516 |
+
}
|
| 517 |
|
| 518 |
+
}
|
| 519 |
|
| 520 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 521 |
|
| 522 |
+
public function register_frontend_scripts(){
|
| 523 |
+
|
| 524 |
+
wp_register_script(
|
| 525 |
+
'pwb_slick_lib',
|
| 526 |
+
PWB_PLUGIN . '/assets/js/slick/slick.min.js',
|
| 527 |
+
array('jquery'),
|
| 528 |
+
'1.8.0',
|
| 529 |
+
true
|
| 530 |
+
);
|
| 531 |
+
wp_enqueue_script('pwb_frontend_functions');
|
| 532 |
+
|
| 533 |
+
wp_enqueue_style(
|
| 534 |
+
'pwb_slick_lib',
|
| 535 |
+
PWB_PLUGIN . '/assets/js/slick/slick.css',
|
| 536 |
+
array(),
|
| 537 |
+
'1.8.0',
|
| 538 |
+
'all'
|
| 539 |
+
);
|
| 540 |
+
|
| 541 |
+
wp_enqueue_style(
|
| 542 |
+
'pwb_frontend_styles',
|
| 543 |
+
PWB_PLUGIN . '/assets/css/styles-frontend.min.css',
|
| 544 |
+
array('pwb_slick_lib'),
|
| 545 |
+
PWB_PLUGIN_VERSION,
|
| 546 |
+
'all'
|
| 547 |
+
);
|
| 548 |
+
|
| 549 |
+
wp_register_script(
|
| 550 |
+
'pwb_frontend_functions',
|
| 551 |
+
PWB_PLUGIN . '/assets/js/pwb_frontend_functions.min.js',
|
| 552 |
+
array('jquery','pwb_slick_lib'),
|
| 553 |
+
PWB_PLUGIN_VERSION,
|
| 554 |
+
true
|
| 555 |
+
);
|
| 556 |
+
wp_enqueue_script('pwb_frontend_functions');
|
| 557 |
|
| 558 |
+
}
|
|
|
|
| 559 |
|
| 560 |
+
public function register_admin_scripts($hook){
|
| 561 |
+
$screen = get_current_screen();
|
| 562 |
|
| 563 |
+
wp_register_style('pwb_styles_brands', PWB_PLUGIN . '/assets/css/styles-admin.min.css', array(), PWB_PLUGIN_VERSION);
|
| 564 |
+
wp_register_script('pwb_brands_js', PWB_PLUGIN . '/assets/js/pwb_admin_functions.min.js', array('jquery'), PWB_PLUGIN_VERSION, true);
|
| 565 |
+
|
| 566 |
+
if ($hook == 'edit-tags.php' && $screen->taxonomy == 'pwb-brand' || $hook == 'term.php' && $screen->taxonomy == 'pwb-brand') {
|
| 567 |
+
wp_enqueue_media();
|
| 568 |
+
}
|
| 569 |
+
|
| 570 |
+
wp_enqueue_style( 'pwb_styles_brands' );
|
| 571 |
+
wp_enqueue_script( 'pwb_brands_js' );
|
| 572 |
+
wp_localize_script( 'pwb_brands_js', 'ajax_object', array(
|
| 573 |
+
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
| 574 |
+
'site_url' => site_url(),
|
| 575 |
+
'brands_url' => admin_url( 'edit-tags.php?taxonomy=pwb-brand&post_type=product' ),
|
| 576 |
+
'translations' => array(
|
| 577 |
+
'migrate_notice' => __('¿Start migration?','perfect-woocommerce-brands'),
|
| 578 |
+
'migrating' => __('We are migrating the product brands. ¡Don´t close this window until the process is finished!','perfect-woocommerce-brands'),
|
| 579 |
+
'dummy_data_notice' => __('¿Start loading dummy data?','perfect-woocommerce-brands'),
|
| 580 |
+
'dummy_data' => __('We are importing the dummy data. ¡Don´t close this window until the process is finished!','perfect-woocommerce-brands')
|
| 581 |
+
)
|
| 582 |
+
) );
|
| 583 |
+
|
| 584 |
+
}
|
| 585 |
|
| 586 |
+
public function register_brands_taxonomy(){
|
| 587 |
+
$labels = array(
|
| 588 |
+
'name' => __( 'Brands', 'perfect-woocommerce-brands' ),
|
| 589 |
+
'singular_name' => __( 'Brand', 'perfect-woocommerce-brands' ),
|
| 590 |
+
'menu_name' => __( 'Brands', 'perfect-woocommerce-brands' ),
|
| 591 |
+
'all_items' => __( 'All Brands', 'perfect-woocommerce-brands' ),
|
| 592 |
+
'edit_item' => __( 'Edit Brand', 'perfect-woocommerce-brands' ),
|
| 593 |
+
'view_item' => __( 'View Brand', 'perfect-woocommerce-brands' ),
|
| 594 |
+
'update_item' => __( 'Update Brand', 'perfect-woocommerce-brands' ),
|
| 595 |
+
'add_new_item' => __( 'Add New Brand', 'perfect-woocommerce-brands' ),
|
| 596 |
+
'new_item_name' => __( 'New Brand Name', 'perfect-woocommerce-brands' ),
|
| 597 |
+
'parent_item' => __( 'Parent Brand', 'perfect-woocommerce-brands' ),
|
| 598 |
+
'parent_item_colon' => __( 'Parent Brand:', 'perfect-woocommerce-brands' ),
|
| 599 |
+
'search_items' => __( 'Search Brands', 'perfect-woocommerce-brands' ),
|
| 600 |
+
'popular_items' => __( 'Popular Brands', 'perfect-woocommerce-brands' ),
|
| 601 |
+
'separate_items_with_commas' => __( 'Separate brands with commas', 'perfect-woocommerce-brands' ),
|
| 602 |
+
'add_or_remove_items' => __( 'Add or remove brands', 'perfect-woocommerce-brands' ),
|
| 603 |
+
'choose_from_most_used' => __( 'Choose from the most used brands', 'perfect-woocommerce-brands' ),
|
| 604 |
+
'not_found' => __( 'No brands found', 'perfect-woocommerce-brands' )
|
| 605 |
+
);
|
| 606 |
+
|
| 607 |
+
$new_slug = get_option('wc_pwb_admin_tab_slug');
|
| 608 |
+
$old_slug = get_option('old_wc_pwb_admin_tab_slug');
|
| 609 |
+
|
| 610 |
+
$new_slug = ($new_slug!=false) ? $new_slug : 'brand';
|
| 611 |
+
$old_slug = ($old_slug!=false) ? $old_slug : 'null';
|
| 612 |
+
|
| 613 |
+
$args = array(
|
| 614 |
+
'hierarchical' => true,
|
| 615 |
+
'labels' => $labels,
|
| 616 |
+
'show_ui' => true,
|
| 617 |
+
'query_var' => true,
|
| 618 |
+
'public' => true,
|
| 619 |
+
'show_admin_column' => true,
|
| 620 |
+
'rewrite' => array(
|
| 621 |
+
'slug' => $new_slug,
|
| 622 |
+
'hierarchical' => true,
|
| 623 |
+
'ep_mask' => EP_PERMALINK
|
| 624 |
)
|
| 625 |
+
);
|
| 626 |
|
| 627 |
+
register_taxonomy( 'pwb-brand', array( 'product' ), $args );
|
| 628 |
|
| 629 |
+
if($new_slug != false && $old_slug!= false && $new_slug != $old_slug){
|
| 630 |
+
flush_rewrite_rules();
|
| 631 |
+
update_option( 'old_wc_pwb_admin_tab_slug', $new_slug );
|
| 632 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 633 |
|
| 634 |
+
}
|
| 635 |
|
| 636 |
+
public function add_brands_metafields(){
|
| 637 |
+
register_meta( 'term', 'pwb_brand_image', array($this,'add_brands_metafields_sanitize') );
|
| 638 |
+
}
|
| 639 |
|
| 640 |
+
public function add_brands_metafields_sanitize($brand_img){
|
| 641 |
+
return $brand_img;
|
| 642 |
+
}
|
| 643 |
+
|
| 644 |
+
public function add_brands_metafields_form(){
|
| 645 |
+
ob_start();
|
| 646 |
+
?>
|
| 647 |
+
<div class="form-field pwb_brand_cont">
|
| 648 |
+
<label for="pwb_brand_image"><?php _e( 'Brand logo', 'perfect-woocommerce-brands' ); ?></label>
|
| 649 |
+
<input type="text" name="pwb_brand_image" id="pwb_brand_image" value="" >
|
| 650 |
+
<a href="#" id="pwb_brand_image_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
| 651 |
+
</div>
|
| 652 |
+
|
| 653 |
+
<div class="form-field pwb_brand_cont">
|
| 654 |
+
<label for="pwb_brand_banner"><?php _e( 'Brand banner', 'perfect-woocommerce-brands' ); ?></label>
|
| 655 |
+
<input type="text" name="pwb_brand_banner" id="pwb_brand_banner" value="" >
|
| 656 |
+
<a href="#" id="pwb_brand_banner_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
| 657 |
+
<p><?php _e( 'This image will be shown on brand page', 'perfect-woocommerce-brands' ); ?></p>
|
| 658 |
+
</div>
|
| 659 |
+
|
| 660 |
+
<div class="form-field pwb_brand_cont">
|
| 661 |
+
<label for="pwb_brand_banner_link"><?php _e( 'Brand banner link', 'perfect-woocommerce-brands' ); ?></label>
|
| 662 |
+
<input type="text" name="pwb_brand_banner_link" id="pwb_brand_banner_link" value="" >
|
| 663 |
+
<p><?php _e( 'This link should be relative to site url. Example: product/product-name', 'perfect-woocommerce-brands' ); ?></p>
|
| 664 |
+
</div>
|
| 665 |
+
|
| 666 |
+
<?php echo wp_nonce_field( basename( __FILE__ ), 'pwb_nonce' ); ?>
|
| 667 |
+
|
| 668 |
+
<?php
|
| 669 |
+
echo ob_get_clean();
|
| 670 |
+
}
|
| 671 |
|
| 672 |
+
public function add_brands_metafields_form_edit($term){
|
| 673 |
+
$term_value_image = get_term_meta( $term->term_id, 'pwb_brand_image', true );
|
| 674 |
+
$term_value_banner = get_term_meta( $term->term_id, 'pwb_brand_banner', true );
|
| 675 |
+
$term_value_banner_link = get_term_meta( $term->term_id, 'pwb_brand_banner_link', true );
|
| 676 |
+
ob_start();
|
| 677 |
+
?>
|
| 678 |
+
<table class="form-table pwb_brand_cont">
|
| 679 |
+
<tr class="form-field">
|
| 680 |
+
<th>
|
| 681 |
<label for="pwb_brand_image"><?php _e( 'Brand logo', 'perfect-woocommerce-brands' ); ?></label>
|
| 682 |
+
</th>
|
| 683 |
+
<td>
|
| 684 |
+
<input type="text" name="pwb_brand_image" id="pwb_brand_image" value="<?php echo $term_value_image;?>" >
|
| 685 |
<a href="#" id="pwb_brand_image_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
|
|
|
| 686 |
|
| 687 |
+
<?php $current_image = wp_get_attachment_image ( $term_value_image, array('90','90'), false ); ?>
|
| 688 |
+
<?php if( !empty($current_image) ): ?>
|
| 689 |
+
<div class="pwb_brand_image_selected">
|
| 690 |
+
<span>
|
| 691 |
+
<?php echo $current_image;?>
|
| 692 |
+
<a href="#" class="pwb_brand_image_selected_remove">X</a>
|
| 693 |
+
</span>
|
| 694 |
+
</div>
|
| 695 |
+
<?php endif; ?>
|
| 696 |
+
|
| 697 |
+
</td>
|
| 698 |
+
</tr>
|
| 699 |
+
<tr class="form-field">
|
| 700 |
+
<th>
|
| 701 |
<label for="pwb_brand_banner"><?php _e( 'Brand banner', 'perfect-woocommerce-brands' ); ?></label>
|
| 702 |
+
</th>
|
| 703 |
+
<td>
|
| 704 |
+
<input type="text" name="pwb_brand_banner" id="pwb_brand_banner" value="<?php echo $term_value_banner;?>" >
|
| 705 |
<a href="#" id="pwb_brand_banner_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
|
|
|
|
|
|
| 706 |
|
| 707 |
+
<?php $current_image = wp_get_attachment_image ( $term_value_banner, array('90','90'), false ); ?>
|
| 708 |
+
<?php if( !empty($current_image) ): ?>
|
| 709 |
+
<div class="pwb_brand_image_selected">
|
| 710 |
+
<span>
|
| 711 |
+
<?php echo $current_image;?>
|
| 712 |
+
<a href="#" class="pwb_brand_image_selected_remove">X</a>
|
| 713 |
+
</span>
|
| 714 |
+
</div>
|
| 715 |
+
<?php endif; ?>
|
| 716 |
+
|
| 717 |
+
</td>
|
| 718 |
+
</tr>
|
| 719 |
+
<tr class="form-field">
|
| 720 |
+
<th>
|
| 721 |
<label for="pwb_brand_banner_link"><?php _e( 'Brand banner link', 'perfect-woocommerce-brands' ); ?></label>
|
| 722 |
+
</th>
|
| 723 |
+
<td>
|
| 724 |
+
<input type="text" name="pwb_brand_banner_link" id="pwb_brand_banner_link" value="<?php echo $term_value_banner_link;?>" >
|
| 725 |
+
<p class="description"><?php _e( 'This link should be relative to site url. Example: product/product-name', 'perfect-woocommerce-brands' ); ?></p>
|
| 726 |
+
<div id="pwb_brand_banner_link_result"><?php echo wp_get_attachment_image ( $term_value_banner_link, array('90','90'), false );?></div>
|
| 727 |
+
</td>
|
| 728 |
+
</tr>
|
| 729 |
+
</table>
|
| 730 |
+
|
| 731 |
+
<?php echo wp_nonce_field( basename( __FILE__ ), 'pwb_nonce' );?>
|
| 732 |
+
|
| 733 |
+
<?php
|
| 734 |
+
echo ob_get_clean();
|
| 735 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 736 |
|
| 737 |
+
public function add_brands_metafields_save( $term_id ){
|
|
|
|
|
|
|
| 738 |
|
| 739 |
+
if ( ! isset( $_POST['pwb_nonce'] ) || ! wp_verify_nonce( $_POST['pwb_nonce'], basename( __FILE__ ) ) )
|
| 740 |
+
return;
|
|
|
|
| 741 |
|
| 742 |
+
/* ·············· Brand image ·············· */
|
| 743 |
+
$old_img = get_term_meta( $term_id, 'pwb_brand_image', true );
|
| 744 |
+
$new_img = isset( $_POST['pwb_brand_image'] ) ? $_POST['pwb_brand_image'] : '';
|
| 745 |
|
| 746 |
+
if ( $old_img && '' === $new_img )
|
| 747 |
+
delete_term_meta( $term_id, 'pwb_brand_image' );
|
|
|
|
| 748 |
|
| 749 |
+
else if ( $old_img !== $new_img )
|
| 750 |
+
update_term_meta( $term_id, 'pwb_brand_image', $new_img );
|
| 751 |
+
/* ·············· /Brand image ·············· */
|
| 752 |
|
| 753 |
+
/* ·············· Brand banner ·············· */
|
| 754 |
+
$old_img = get_term_meta( $term_id, 'pwb_brand_banner', true );
|
| 755 |
+
$new_img = isset( $_POST['pwb_brand_banner'] ) ? $_POST['pwb_brand_banner'] : '';
|
| 756 |
|
| 757 |
+
if ( $old_img && '' === $new_img )
|
| 758 |
+
delete_term_meta( $term_id, 'pwb_brand_banner' );
|
|
|
|
|
|
|
| 759 |
|
| 760 |
+
else if ( $old_img !== $new_img )
|
| 761 |
+
update_term_meta( $term_id, 'pwb_brand_banner', $new_img );
|
| 762 |
+
/* ·············· /Brand banner ·············· */
|
| 763 |
|
| 764 |
+
/* ·············· Brand banner link ·············· */
|
| 765 |
+
$old_img = get_term_meta( $term_id, 'pwb_brand_banner_link', true );
|
| 766 |
+
$new_img = isset( $_POST['pwb_brand_banner_link'] ) ? $_POST['pwb_brand_banner_link'] : '';
|
| 767 |
|
| 768 |
+
if ( $old_img && '' === $new_img )
|
| 769 |
+
delete_term_meta( $term_id, 'pwb_brand_banner_link' );
|
|
|
|
|
|
|
|
|
|
| 770 |
|
| 771 |
+
else if ( $old_img !== $new_img )
|
| 772 |
+
update_term_meta( $term_id, 'pwb_brand_banner_link', $new_img );
|
| 773 |
+
/* ·············· /Brand banner link ·············· */
|
| 774 |
+
}
|
| 775 |
|
| 776 |
+
public static function get_brands( $hide_empty = false, $order_by = 'name', $order = 'ASC', $only_featured = false ){
|
| 777 |
+
$result = array();
|
|
|
|
| 778 |
|
| 779 |
+
$brands_args = array( 'hide_empty' => $hide_empty, 'order_by' => $order_by, 'order' => $order );
|
| 780 |
+
if( $only_featured ) $brands_args['meta_query'] = array( array( 'key' => 'pwb_featured_brand', 'value' => true ) );
|
| 781 |
|
| 782 |
+
$brands = get_terms('pwb-brand', $brands_args);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 783 |
|
| 784 |
+
if( is_array($brands) && count($brands)>0 ) $result = $brands;
|
|
|
|
| 785 |
|
| 786 |
+
return $result;
|
| 787 |
+
}
|
|
|
|
|
|
|
|
|
|
| 788 |
|
| 789 |
+
public static function get_brands_array( $is_select = false ){
|
| 790 |
+
$result = array();
|
|
|
|
| 791 |
|
| 792 |
+
//if is for select input adds default value
|
| 793 |
+
if( $is_select )
|
| 794 |
+
$result[0] = __( 'All', 'perfect-woocommerce-brands' );
|
| 795 |
|
| 796 |
+
$brands = get_terms('pwb-brand',array(
|
| 797 |
+
'hide_empty' => false
|
| 798 |
+
));
|
| 799 |
|
| 800 |
+
foreach ($brands as $brand) {
|
| 801 |
+
$result[$brand->term_id] = $brand->slug;
|
| 802 |
+
}
|
| 803 |
|
| 804 |
+
return $result;
|
|
|
|
|
|
|
| 805 |
|
| 806 |
+
}
|
|
|
|
|
|
|
| 807 |
|
| 808 |
+
public function archive_page_banner(){
|
| 809 |
+
$queried_object = get_queried_object();
|
|
|
|
| 810 |
|
| 811 |
+
if( is_tax('pwb-brand') ){
|
| 812 |
|
| 813 |
+
$brand_banner = get_term_meta( $queried_object->term_id, 'pwb_brand_banner', true );
|
| 814 |
+
$brand_banner_link = get_term_meta( $queried_object->term_id, 'pwb_brand_banner_link', true );
|
| 815 |
+
$show_desc = get_option('wc_pwb_admin_tab_brand_desc');
|
| 816 |
|
| 817 |
+
if( $brand_banner!='' || $queried_object->description != '' && $show_desc !== 'no' ){
|
| 818 |
+
echo '<div class="pwb-brand-banner-cont">';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 819 |
}
|
| 820 |
|
| 821 |
+
//pwb-brand archive
|
| 822 |
+
if( $brand_banner!='' ){
|
| 823 |
+
echo '<div class="pwb-brand-banner pwb-clearfix">';
|
| 824 |
+
if($brand_banner_link!=''){
|
| 825 |
+
echo '<a href="'.site_url($brand_banner_link).'">'.wp_get_attachment_image ( $brand_banner, 'full', false ).'</a>';
|
| 826 |
+
}else{
|
| 827 |
+
echo wp_get_attachment_image ( $brand_banner, 'full', false );
|
| 828 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 829 |
echo '</div>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 830 |
}
|
| 831 |
|
| 832 |
+
//show brand description
|
| 833 |
+
if( $queried_object->description != '' && $show_desc !== 'no' ){
|
| 834 |
+
echo '<div class="pwb-brand-description">';
|
| 835 |
+
echo $queried_object->description;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 836 |
echo '</div>';
|
| 837 |
}
|
| 838 |
|
| 839 |
+
if( $brand_banner!='' || $queried_object->description != '' && $show_desc !== 'no' ){
|
| 840 |
+
echo '</div>';
|
| 841 |
}
|
| 842 |
|
| 843 |
}
|
| 844 |
|
| 845 |
}
|
| 846 |
+
|
| 847 |
+
public static function render_template( $name, $folder = '', $data ){
|
| 848 |
+
ob_start();
|
| 849 |
+
if( $folder ) $folder = $folder . '/';
|
| 850 |
+
$template_file = dirname( __DIR__ ) . '/templates/' . $folder . $name . '.php';
|
| 851 |
+
include $template_file;
|
| 852 |
+
echo ob_get_clean();
|
| 853 |
+
}
|
| 854 |
+
|
| 855 |
+
public function product_duplicate_save( $duplicate, $product ){
|
| 856 |
+
$product_brands = wp_get_object_terms( $product->get_id(), 'pwb-brand', array( 'fields' => 'ids' ) );
|
| 857 |
+
wp_set_object_terms( $duplicate->get_id(), $product_brands, 'pwb-brand' );
|
| 858 |
+
}
|
| 859 |
+
|
| 860 |
+
}
|
classes/class-pwb-importer-support.php
CHANGED
|
@@ -25,38 +25,27 @@ class PWB_Importer_Support{
|
|
| 25 |
|
| 26 |
/**
|
| 27 |
* Add automatic mapping support for 'Custom Column'.
|
| 28 |
-
* This will automatically select the correct mapping for columns named 'Custom Column' or 'custom column'.
|
| 29 |
*
|
| 30 |
* @param array $columns
|
| 31 |
* @return array $columns
|
| 32 |
*/
|
| 33 |
public function add_column_to_mapping_screen( $columns ) {
|
| 34 |
-
$columns[
|
| 35 |
return $columns;
|
| 36 |
}
|
| 37 |
|
| 38 |
/**
|
| 39 |
* Process the data read from the CSV file.
|
| 40 |
-
* This just saves the value in meta data, but you can do anything you want here with the data.
|
| 41 |
*
|
| 42 |
* @param WC_Product $object - Product being imported or updated.
|
| 43 |
* @param array $data - CSV data read for the product.
|
| 44 |
* @return WC_Product $object
|
| 45 |
*/
|
| 46 |
public function process_import( $object, $data ) {
|
|
|
|
| 47 |
$brands = explode( ',', $data['pwb-brand'] );
|
| 48 |
-
foreach( $brands as $brand )
|
| 49 |
-
$brand_id = term_exists( $brand, 'pwb-brand' );
|
| 50 |
-
if( $brand_id !== 0 && $brand_id !== null ) {
|
| 51 |
-
//brand exists
|
| 52 |
-
wp_set_object_terms( $object->get_id(), $brand, 'pwb-brand' );
|
| 53 |
-
}else{
|
| 54 |
-
//insert new brand and assign it to the product
|
| 55 |
-
$new_brand = wp_insert_term( $brand, 'pwb-brand' );
|
| 56 |
-
if( !is_wp_error( $new_brand ) ) wp_set_object_terms( $object->get_id(), $new_brand->term_id, 'pwb-brand' );
|
| 57 |
-
}
|
| 58 |
-
}
|
| 59 |
return $object;
|
| 60 |
}
|
| 61 |
-
|
| 62 |
}
|
| 25 |
|
| 26 |
/**
|
| 27 |
* Add automatic mapping support for 'Custom Column'.
|
|
|
|
| 28 |
*
|
| 29 |
* @param array $columns
|
| 30 |
* @return array $columns
|
| 31 |
*/
|
| 32 |
public function add_column_to_mapping_screen( $columns ) {
|
| 33 |
+
$columns[__('Brand', 'perfect-woocommerce-brands')] = 'pwb-brand';
|
| 34 |
return $columns;
|
| 35 |
}
|
| 36 |
|
| 37 |
/**
|
| 38 |
* Process the data read from the CSV file.
|
|
|
|
| 39 |
*
|
| 40 |
* @param WC_Product $object - Product being imported or updated.
|
| 41 |
* @param array $data - CSV data read for the product.
|
| 42 |
* @return WC_Product $object
|
| 43 |
*/
|
| 44 |
public function process_import( $object, $data ) {
|
| 45 |
+
wp_delete_object_term_relationships( $object->get_id(), 'pwb-brand' );
|
| 46 |
$brands = explode( ',', $data['pwb-brand'] );
|
| 47 |
+
foreach( $brands as $brand ) wp_set_object_terms( $object->get_id(), $brand, 'pwb-brand', true );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
return $object;
|
| 49 |
}
|
| 50 |
+
|
| 51 |
}
|
classes/shortcodes/class-pwb-carousel.php
CHANGED
|
@@ -1,60 +1,68 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
|
| 4 |
-
|
| 5 |
|
| 6 |
-
|
| 7 |
|
| 8 |
-
|
| 9 |
-
$atts = shortcode_atts( array(
|
| 10 |
-
'items' => "10",
|
| 11 |
-
'items_to_show' => "5",
|
| 12 |
-
'items_to_scroll' => "1",
|
| 13 |
-
'image_size' => "thumbnail",
|
| 14 |
-
'autoplay' => "false",
|
| 15 |
-
'arrows' => "false"
|
| 16 |
-
), $atts, 'pwb-carousel' );
|
| 17 |
|
| 18 |
-
|
| 19 |
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
);
|
| 29 |
|
| 30 |
-
|
| 31 |
-
?>
|
| 32 |
|
| 33 |
-
|
| 34 |
-
<?php
|
| 35 |
-
foreach(\Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_brands() as $brand){
|
| 36 |
-
if($foreach_iterator>=(int)$atts['items']){
|
| 37 |
-
break;
|
| 38 |
-
}
|
| 39 |
|
| 40 |
-
|
| 41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
|
| 43 |
-
|
| 44 |
-
$attachment_html = $brand->name;
|
| 45 |
-
if($attachment_id!=''){
|
| 46 |
-
$attachment_html = wp_get_attachment_image($attachment_id,$atts['image_size']);
|
| 47 |
-
}
|
| 48 |
|
| 49 |
-
|
| 50 |
-
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$attachment_html.'</a>';
|
| 51 |
-
echo '</div>';
|
| 52 |
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
|
| 57 |
-
|
| 58 |
-
}
|
| 59 |
|
|
|
|
| 60 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
<?php
|
| 2 |
+
namespace Perfect_Woocommerce_Brands\Shortcodes;
|
| 3 |
|
| 4 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
| 5 |
|
| 6 |
+
class PWB_Carousel_Shortcode{
|
| 7 |
|
| 8 |
+
private static $atts;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
+
public static function carousel_shortcode( $atts ) {
|
| 11 |
|
| 12 |
+
self::$atts = shortcode_atts( array(
|
| 13 |
+
'items' => "10",
|
| 14 |
+
'items_to_show' => "5",
|
| 15 |
+
'items_to_scroll' => "1",
|
| 16 |
+
'image_size' => "thumbnail",
|
| 17 |
+
'autoplay' => "false",
|
| 18 |
+
'arrows' => "false"
|
| 19 |
+
), $atts, 'pwb-carousel' );
|
| 20 |
|
| 21 |
+
\Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::render_template(
|
| 22 |
+
'carousel',
|
| 23 |
+
'shortcodes',
|
| 24 |
+
array( 'slick_settings' => self::slick_settings(), 'brands' => self::brands_data() )
|
| 25 |
+
);
|
|
|
|
| 26 |
|
| 27 |
+
}
|
|
|
|
| 28 |
|
| 29 |
+
private static function slick_settings(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
+
$slick_settings = array(
|
| 32 |
+
'slidesToShow' => (int)self::$atts['items_to_show'],
|
| 33 |
+
'slidesToScroll' => (int)self::$atts['items_to_scroll'],
|
| 34 |
+
'autoplay' => ( self::$atts['autoplay'] === 'true' ) ? true: false,
|
| 35 |
+
'arrows' => ( self::$atts['arrows'] === 'true' ) ? true: false
|
| 36 |
+
);
|
| 37 |
+
return htmlspecialchars( json_encode( $slick_settings ), ENT_QUOTES, 'UTF-8' );
|
| 38 |
|
| 39 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
|
| 41 |
+
private static function brands_data(){
|
|
|
|
|
|
|
| 42 |
|
| 43 |
+
$brands = array();
|
| 44 |
+
$foreach_i = 0;
|
| 45 |
+
if( self::$atts['items'] == 'featured' ){
|
| 46 |
+
$brands_array = \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_brands( false, 'name', 'ASC', true );
|
| 47 |
+
}else{
|
| 48 |
+
$brands_array = \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_brands();
|
| 49 |
+
}
|
| 50 |
+
foreach( $brands_array as $brand ){
|
| 51 |
+
if( self::$atts['items'] != 'featured' && $foreach_i >= (int)self::$atts['items'] ) break;
|
| 52 |
+
|
| 53 |
+
$brand_id = $brand->term_id;
|
| 54 |
+
$brand_link = get_term_link($brand_id);
|
| 55 |
+
$attachment_id = get_term_meta( $brand_id, 'pwb_brand_image', 1 );
|
| 56 |
+
$attachment_html = $brand->name;
|
| 57 |
+
if($attachment_id!='') $attachment_html = wp_get_attachment_image( $attachment_id, self::$atts['image_size'] );
|
| 58 |
|
| 59 |
+
$brands[] = array( 'link' => $brand_link, 'attachment_html' => $attachment_html );
|
|
|
|
| 60 |
|
| 61 |
+
$foreach_i++;
|
| 62 |
}
|
| 63 |
+
|
| 64 |
+
return $brands;
|
| 65 |
+
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
}
|
classes/shortcodes/class-pwb-product-carousel.php
CHANGED
|
@@ -1,39 +1,80 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
|
| 4 |
-
|
| 5 |
|
| 6 |
-
|
| 7 |
|
| 8 |
-
|
| 9 |
-
$atts = shortcode_atts( array(
|
| 10 |
-
'brand' => "all",
|
| 11 |
-
'products' => "10",
|
| 12 |
-
'products_to_show' => "5",
|
| 13 |
-
'products_to_scroll' => "1",
|
| 14 |
-
'autoplay' => "false",
|
| 15 |
-
'arrows' => "false"
|
| 16 |
-
), $atts, 'pwb-product-carousel' );
|
| 17 |
|
| 18 |
-
|
| 19 |
-
$atts['arrows'] = ( $atts['arrows'] === 'true' ) ? true: false;
|
| 20 |
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
|
|
|
|
|
|
| 27 |
|
| 28 |
-
|
| 29 |
-
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
-
|
| 32 |
-
<?php echo \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_products_by_brand($atts['brand'], (int)$atts['products']); ?>
|
| 33 |
-
</div>
|
| 34 |
|
| 35 |
-
|
| 36 |
-
return ob_get_clean();
|
| 37 |
-
}
|
| 38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
<?php
|
| 2 |
+
namespace Perfect_Woocommerce_Brands\Shortcodes;
|
| 3 |
|
| 4 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
| 5 |
|
| 6 |
+
class PWB_Product_Carousel_Shortcode{
|
| 7 |
|
| 8 |
+
private static $atts;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
+
public static function product_carousel_shortcode( $atts ) {
|
|
|
|
| 11 |
|
| 12 |
+
self::$atts = shortcode_atts( array(
|
| 13 |
+
'brand' => "all",
|
| 14 |
+
'products' => "10",
|
| 15 |
+
'products_to_show' => "5",
|
| 16 |
+
'products_to_scroll' => "1",
|
| 17 |
+
'autoplay' => "false",
|
| 18 |
+
'arrows' => "false"
|
| 19 |
+
), $atts, 'pwb-product-carousel' );
|
| 20 |
|
| 21 |
+
\Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::render_template(
|
| 22 |
+
'product-carousel',
|
| 23 |
+
'shortcodes',
|
| 24 |
+
array( 'slick_settings' => self::slick_settings(), 'products' => self::products_data() )
|
| 25 |
+
);
|
| 26 |
|
| 27 |
+
}
|
|
|
|
|
|
|
| 28 |
|
| 29 |
+
private static function slick_settings(){
|
|
|
|
|
|
|
| 30 |
|
| 31 |
+
$slick_settings = array(
|
| 32 |
+
'slidesToShow' => (int)self::$atts['products_to_show'],
|
| 33 |
+
'slidesToScroll' => (int)self::$atts['products_to_scroll'],
|
| 34 |
+
'autoplay' => ( self::$atts['autoplay'] === 'true' ) ? true: false,
|
| 35 |
+
'arrows' => ( self::$atts['arrows'] === 'true' ) ? true: false
|
| 36 |
+
);
|
| 37 |
+
return htmlspecialchars( json_encode( $slick_settings ), ENT_QUOTES, 'UTF-8' );
|
| 38 |
+
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
private static function products_data(){
|
| 42 |
+
|
| 43 |
+
$products = array();
|
| 44 |
+
|
| 45 |
+
$args = array(
|
| 46 |
+
'post_type' => 'product',
|
| 47 |
+
'posts_per_page' => (int)self::$atts['products'],
|
| 48 |
+
'paged' => false
|
| 49 |
+
);
|
| 50 |
+
|
| 51 |
+
if( self::$atts['brand'] != 'all' ){
|
| 52 |
+
$args['tax_query'] = array(
|
| 53 |
+
array(
|
| 54 |
+
'taxonomy' => 'pwb-brand',
|
| 55 |
+
'field' => 'slug',
|
| 56 |
+
'terms' => self::$atts['brand']
|
| 57 |
+
)
|
| 58 |
+
);
|
| 59 |
}
|
| 60 |
+
|
| 61 |
+
$loop = new \WP_Query( $args );
|
| 62 |
+
if( $loop->have_posts() ) {
|
| 63 |
+
while ( $loop->have_posts() ) : $loop->the_post();
|
| 64 |
+
$product = wc_get_product( get_the_ID() );
|
| 65 |
+
|
| 66 |
+
$products[] = array(
|
| 67 |
+
'id' => get_the_ID(),
|
| 68 |
+
'permalink' => get_the_permalink(),
|
| 69 |
+
'thumbnail' => woocommerce_get_product_thumbnail(),
|
| 70 |
+
'title' => $product->get_title()
|
| 71 |
+
);
|
| 72 |
+
endwhile;
|
| 73 |
+
}
|
| 74 |
+
wp_reset_postdata();
|
| 75 |
+
|
| 76 |
+
return $products;
|
| 77 |
+
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
}
|
classes/widgets/class-pwb-filter-by-brand.php
CHANGED
|
@@ -25,14 +25,15 @@
|
|
| 25 |
|
| 26 |
public function widget( $args, $instance ) {
|
| 27 |
|
| 28 |
-
|
| 29 |
-
|
|
|
|
| 30 |
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
|
| 37 |
}
|
| 38 |
|
|
@@ -105,15 +106,23 @@
|
|
| 105 |
$current_url = home_url(add_query_arg(array(),$wp->request));
|
| 106 |
|
| 107 |
if( !empty( $result_brands ) ){
|
| 108 |
-
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 117 |
}
|
| 118 |
|
| 119 |
}
|
| 25 |
|
| 26 |
public function widget( $args, $instance ) {
|
| 27 |
|
| 28 |
+
if( !is_tax('pwb-brand') && !is_product() ){
|
| 29 |
+
$title = ( isset( $instance[ 'title' ] ) ) ? $instance[ 'title' ] : __('Brands', 'perfect-woocommerce-brands');
|
| 30 |
+
$title = apply_filters( 'widget_title', $title );
|
| 31 |
|
| 32 |
+
echo $args['before_widget'];
|
| 33 |
+
if ( ! empty( $title ) ) echo $args['before_title'] . $title . $args['after_title'];
|
| 34 |
+
$this->render_widget();
|
| 35 |
+
echo $args['after_widget'];
|
| 36 |
+
}
|
| 37 |
|
| 38 |
}
|
| 39 |
|
| 106 |
$current_url = home_url(add_query_arg(array(),$wp->request));
|
| 107 |
|
| 108 |
if( !empty( $result_brands ) ){
|
| 109 |
+
|
| 110 |
+
$result_brands = array_unique($result_brands);
|
| 111 |
+
$result_brands_ordered = array();
|
| 112 |
+
foreach( $result_brands as $brand ){
|
| 113 |
+
$brand = get_term($brand);
|
| 114 |
+
$result_brands_ordered[$brand->name] = $brand;
|
| 115 |
+
}
|
| 116 |
+
ksort($result_brands_ordered);
|
| 117 |
+
|
| 118 |
+
$result_brands_ordered = apply_filters( 'pwb_widget_brand_filter', $result_brands_ordered );
|
| 119 |
+
|
| 120 |
+
\Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::render_template(
|
| 121 |
+
'filter-by-brand',
|
| 122 |
+
'widgets',
|
| 123 |
+
array( 'cate_url' => $cate_url, 'brands' => $result_brands_ordered )
|
| 124 |
+
);
|
| 125 |
+
|
| 126 |
}
|
| 127 |
|
| 128 |
}
|
lang/perfect-woocommerce-brands-es_ES.mo
CHANGED
|
Binary file
|
lang/perfect-woocommerce-brands-es_ES.po
CHANGED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
msgid ""
|
| 2 |
msgstr ""
|
| 3 |
"Project-Id-Version: Perfect WooCommerce Brands\n"
|
| 4 |
-
"POT-Creation-Date:
|
| 5 |
-
"PO-Revision-Date:
|
| 6 |
"Last-Translator: \n"
|
| 7 |
"Language-Team: \n"
|
| 8 |
"Language: es_ES\n"
|
|
@@ -10,7 +10,7 @@ msgstr ""
|
|
| 10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 13 |
-
"X-Generator: Poedit 2.0.
|
| 14 |
"X-Poedit-Basepath: ..\n"
|
| 15 |
"X-Poedit-WPHeader: main.php\n"
|
| 16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
|
@@ -20,130 +20,151 @@ msgstr ""
|
|
| 20 |
"X-Poedit-SearchPath-0: .\n"
|
| 21 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
| 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
#: classes/admin/class-pwb-admin-tab.php:21
|
| 24 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 25 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 26 |
-
#: classes/widgets/class-pwb-dropdown.php:
|
| 27 |
#: classes/widgets/class-pwb-filter-by-brand.php:17
|
| 28 |
-
#: classes/widgets/class-pwb-filter-by-brand.php:
|
| 29 |
msgid "Brands"
|
| 30 |
msgstr "Marcas"
|
| 31 |
|
| 32 |
-
#: classes/admin/class-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
msgid "Brands settings"
|
| 34 |
msgstr "Ajustes de las marcas"
|
| 35 |
|
| 36 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 37 |
msgid "Slug"
|
| 38 |
msgstr "Slug"
|
| 39 |
|
| 40 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 41 |
msgid "Brands taxonomy slug"
|
| 42 |
msgstr "Slug de la taxonomía marcas"
|
| 43 |
|
| 44 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 45 |
msgid "Show brand description"
|
| 46 |
msgstr "Mostrar descripción de la marca"
|
| 47 |
|
| 48 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 49 |
msgid "Show brand description (if is set) on brand archive page"
|
| 50 |
msgstr "Mostrar descripción de la marca en la página de archivo"
|
| 51 |
|
| 52 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 53 |
msgid "Single product tab"
|
| 54 |
msgstr "Tab en la página del producto"
|
| 55 |
|
| 56 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 57 |
msgid "Show brand tab in single product page"
|
| 58 |
msgstr "Mostrar pestaña con información de la marca en la página del producto"
|
| 59 |
|
| 60 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 61 |
msgid "Show brands in loop"
|
| 62 |
msgstr "Mostrar marcas en el loop"
|
| 63 |
|
| 64 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 65 |
msgid "Show brand logo (or name) in product loop"
|
| 66 |
msgstr "Mostrar el logo de la marca (o el nombre) en el loop"
|
| 67 |
|
| 68 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 69 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 70 |
msgid "No"
|
| 71 |
msgstr "No"
|
| 72 |
|
| 73 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 74 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 75 |
msgid "Show brand link"
|
| 76 |
msgstr "Mostrar el link de la marca"
|
| 77 |
|
| 78 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 79 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 80 |
msgid "Show brand image (if is set)"
|
| 81 |
msgstr "Mostrar el logo de la marca (si tiene uno asignado)"
|
| 82 |
|
| 83 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 84 |
msgid "Show brands in single product"
|
| 85 |
msgstr "Mostrar marcas en la página del producto"
|
| 86 |
|
| 87 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 88 |
msgid "Show brand logo (or name) in single product"
|
| 89 |
msgstr "Mostrar el logo de la marca (o el nombre) en la página del producto"
|
| 90 |
|
| 91 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 92 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 93 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 94 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 95 |
msgid "Brand logo size"
|
| 96 |
msgstr "Tamaño del logo de la marca"
|
| 97 |
|
| 98 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 99 |
msgid "Brand logo size for single product view"
|
| 100 |
msgstr "Tamaño del logo para la vista individual de producto"
|
| 101 |
|
| 102 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 103 |
msgid "Brand position"
|
| 104 |
msgstr "Posición de la marca"
|
| 105 |
|
| 106 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 107 |
msgid "For single product"
|
| 108 |
msgstr "En la página individual de cada producto"
|
| 109 |
|
| 110 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 111 |
msgid "Before title"
|
| 112 |
msgstr "Antes del título"
|
| 113 |
|
| 114 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 115 |
msgid "After title"
|
| 116 |
msgstr "Después del título"
|
| 117 |
|
| 118 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 119 |
msgid "After price"
|
| 120 |
msgstr "Después del precio"
|
| 121 |
|
| 122 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 123 |
msgid "After excerpt"
|
| 124 |
msgstr "Después de la descripción corta"
|
| 125 |
|
| 126 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 127 |
msgid "After add to cart"
|
| 128 |
msgstr "Después del botón de comprar"
|
| 129 |
|
| 130 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 131 |
msgid "After meta"
|
| 132 |
msgstr "Después del meta"
|
| 133 |
|
| 134 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 135 |
msgid "After sharing"
|
| 136 |
msgstr "Después de compartir"
|
| 137 |
|
| 138 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 139 |
msgid "Tools"
|
| 140 |
msgstr "Herramientas"
|
| 141 |
|
| 142 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 143 |
msgid "Import brands"
|
| 144 |
msgstr "Importar marcas"
|
| 145 |
|
| 146 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 147 |
#, php-format
|
| 148 |
msgid ""
|
| 149 |
"Import brands from other brand plugin. <a href=\"%s\" target=\"_blank"
|
|
@@ -152,54 +173,54 @@ msgstr ""
|
|
| 152 |
"Importar marcas de producto de otro plugin de marcas. <a href=\"%s\" target="
|
| 153 |
"\"_blank\">Pulsa aquí para ver la documentación</a>"
|
| 154 |
|
| 155 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 156 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 157 |
msgid "-"
|
| 158 |
msgstr "-"
|
| 159 |
|
| 160 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 161 |
msgid "YITH WooCommerce Brands Add-On"
|
| 162 |
msgstr "YITH WooCommerce Brands Add-On"
|
| 163 |
|
| 164 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 165 |
msgid "Ultimate WooCommerce Brands"
|
| 166 |
msgstr "Ultimate WooCommerce Brands"
|
| 167 |
|
| 168 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 169 |
msgid "Offical WooCommerce Brands"
|
| 170 |
msgstr "Offical WooCommerce Brands"
|
| 171 |
|
| 172 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 173 |
msgid "Dummy data"
|
| 174 |
msgstr "Datos ficticios"
|
| 175 |
|
| 176 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 177 |
msgid "Import generic brands and assign it to products randomly"
|
| 178 |
msgstr ""
|
| 179 |
"Importar marcas genéricas y asignarlas a los productos existentes de forma "
|
| 180 |
"aleatoria"
|
| 181 |
|
| 182 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 183 |
msgid "Start import"
|
| 184 |
msgstr "Comenzar importación"
|
| 185 |
|
| 186 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 187 |
msgid "System status"
|
| 188 |
msgstr "Estado del sistema"
|
| 189 |
|
| 190 |
-
#: classes/admin/class-pwb-admin-tab.php:
|
| 191 |
msgid "Show system status"
|
| 192 |
msgstr "Ver estado del sistema"
|
| 193 |
|
| 194 |
-
#: classes/admin/class-pwb-coupon.php:
|
| 195 |
msgid "Brands restriction"
|
| 196 |
msgstr "Restricciones de marca"
|
| 197 |
|
| 198 |
-
#: classes/admin/class-pwb-coupon.php:
|
| 199 |
msgid "Any brand"
|
| 200 |
msgstr "Cualquier marca"
|
| 201 |
|
| 202 |
-
#: classes/admin/class-pwb-coupon.php:
|
| 203 |
msgid ""
|
| 204 |
"Coupon will be valid if there are at least one product of this brands in the "
|
| 205 |
"cart"
|
|
@@ -207,7 +228,7 @@ msgstr ""
|
|
| 207 |
"El cupón será válido si existe al menos un producto de la marca señalada en "
|
| 208 |
"el carrito"
|
| 209 |
|
| 210 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 211 |
msgid ""
|
| 212 |
"We know that you´re in love with Perfect WooCommerce Brands, you can help us "
|
| 213 |
"making it a bit better. Thanks a lot!"
|
|
@@ -215,7 +236,7 @@ msgstr ""
|
|
| 215 |
"Sabemos que Perfect WooCommerce Brands te encanta, puedes ayudarnos a "
|
| 216 |
"hacerlo un poco mejor. ¡Muchas gracias!"
|
| 217 |
|
| 218 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 219 |
msgid ""
|
| 220 |
"<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
|
| 221 |
"reviews/?rate=5#new-post\" target=\"_blank\">Leave a review</a>"
|
|
@@ -223,7 +244,7 @@ msgstr ""
|
|
| 223 |
"<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
|
| 224 |
"reviews/?rate=5#new-post\" target=\"_blank\">Dejar una review</a>"
|
| 225 |
|
| 226 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 227 |
msgid ""
|
| 228 |
"<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
|
| 229 |
"woocommerce-brands\" target=\"_blank\">Translate the plugin</a>"
|
|
@@ -231,7 +252,7 @@ msgstr ""
|
|
| 231 |
"<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
|
| 232 |
"woocommerce-brands\" target=\"_blank\">Traducir el plugin</a>"
|
| 233 |
|
| 234 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 235 |
msgid ""
|
| 236 |
"<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
|
| 237 |
"\"_blank\">View on GitHub</a>"
|
|
@@ -239,177 +260,181 @@ msgstr ""
|
|
| 239 |
"<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
|
| 240 |
"\"_blank\">Ver en GitHub</a>"
|
| 241 |
|
| 242 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 243 |
msgid "Settings"
|
| 244 |
msgstr "Ajustes"
|
| 245 |
|
| 246 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 247 |
msgid "PWB Product carousel"
|
| 248 |
msgstr "PWB Carrusel de productos"
|
| 249 |
|
| 250 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 251 |
msgid "Product carousel by brand or by category"
|
| 252 |
msgstr "Carrusel de productos por marca o categoría"
|
| 253 |
|
| 254 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 255 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 256 |
#: classes/class-pwb-exporter-support.php:22
|
| 257 |
#: classes/class-pwb-importer-support.php:22
|
| 258 |
-
#: classes/class-pwb-importer-support.php:
|
| 259 |
#: classes/class-pwb-product-tab.php:18 classes/class-pwb-product-tab.php:35
|
| 260 |
msgid "Brand"
|
| 261 |
msgstr "Marca"
|
| 262 |
|
| 263 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 264 |
msgid "Products"
|
| 265 |
msgstr "Productos"
|
| 266 |
|
| 267 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 268 |
msgid "Number of products to load"
|
| 269 |
msgstr "Número de productos que cargar"
|
| 270 |
|
| 271 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 272 |
msgid "Products to show"
|
| 273 |
msgstr "Productos a mostrar"
|
| 274 |
|
| 275 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 276 |
msgid "Number of products to show"
|
| 277 |
msgstr "Número de productos que mostrar"
|
| 278 |
|
| 279 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 280 |
msgid "Products to scroll"
|
| 281 |
msgstr "Número de productos por scroll"
|
| 282 |
|
| 283 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 284 |
msgid "Number of products to scroll"
|
| 285 |
msgstr "Número de productos por cada scroll"
|
| 286 |
|
| 287 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 288 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 289 |
msgid "Autoplay"
|
| 290 |
msgstr "Modo automático"
|
| 291 |
|
| 292 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 293 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 294 |
msgid "Autoplay carousel"
|
| 295 |
msgstr "Modo automático para el carrusel"
|
| 296 |
|
| 297 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 298 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 299 |
msgid "Arrows"
|
| 300 |
msgstr "Flechas de navegación"
|
| 301 |
|
| 302 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 303 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 304 |
msgid "Display prev and next arrows"
|
| 305 |
msgstr "Mostrar flechas de navegación"
|
| 306 |
|
| 307 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 308 |
msgid "PWB Brands carousel"
|
| 309 |
msgstr "PWB Carrusel de marcas"
|
| 310 |
|
| 311 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 312 |
msgid "Brands carousel"
|
| 313 |
msgstr "Carrusel de marcas"
|
| 314 |
|
| 315 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 316 |
msgid "Items"
|
| 317 |
msgstr "Elementos"
|
| 318 |
|
| 319 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 320 |
-
msgid "Number of items to load"
|
| 321 |
-
msgstr "Número de elementos
|
| 322 |
|
| 323 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 324 |
msgid "Items to show"
|
| 325 |
msgstr "Elementos a mostrar"
|
| 326 |
|
| 327 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 328 |
msgid "Number of items to show"
|
| 329 |
msgstr "Número de elementos a mostrar"
|
| 330 |
|
| 331 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 332 |
msgid "Items to scroll"
|
| 333 |
msgstr "Número de elementos por scroll"
|
| 334 |
|
| 335 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 336 |
msgid "Number of items to scroll"
|
| 337 |
msgstr "Número de elementos por cada scroll"
|
| 338 |
|
| 339 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 340 |
msgid "PWB All brands"
|
| 341 |
msgstr "PWB Todas las marcas"
|
| 342 |
|
| 343 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 344 |
msgid "Show all brands"
|
| 345 |
msgstr "Mostrar todas las marcas"
|
| 346 |
|
| 347 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 348 |
msgid "Brands per page"
|
| 349 |
msgstr "Marcas por página"
|
| 350 |
|
| 351 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 352 |
msgid "Show x brands per page"
|
| 353 |
msgstr "Mostrar x marcas por página"
|
| 354 |
|
| 355 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 356 |
msgid "Order by"
|
| 357 |
msgstr "Ordenar por"
|
| 358 |
|
| 359 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 360 |
msgid "Order"
|
| 361 |
msgstr "Orden"
|
| 362 |
|
| 363 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 364 |
msgid "Title position"
|
| 365 |
msgstr "Posición del título"
|
| 366 |
|
| 367 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 368 |
msgid "Before image"
|
| 369 |
msgstr "Antes de la imagen"
|
| 370 |
|
| 371 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 372 |
msgid "After image"
|
| 373 |
msgstr "Después de la imagen"
|
| 374 |
|
| 375 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 376 |
msgid "Hide empty"
|
| 377 |
msgstr "Ocultar vacías"
|
| 378 |
|
| 379 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 380 |
msgid "Hide brands that have not been assigned to any product"
|
| 381 |
msgstr "Ocultar marcas que no han sido asignadas a ningún producto"
|
| 382 |
|
| 383 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 384 |
msgid "PWB brand"
|
| 385 |
msgstr "PWB Marca"
|
| 386 |
|
| 387 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 388 |
msgid "Show brand for a specific product"
|
| 389 |
msgstr "Ver marcas de un producto específico"
|
| 390 |
|
| 391 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 392 |
msgid "Product id"
|
| 393 |
msgstr "Id del producto"
|
| 394 |
|
| 395 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 396 |
msgid "Product id (post id)"
|
| 397 |
msgstr "Id del producto (id del post)"
|
| 398 |
|
| 399 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 400 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 401 |
#: classes/shortcodes/class-pwb-all-brands.php:90
|
| 402 |
#: classes/shortcodes/class-pwb-brand.php:29
|
| 403 |
#: classes/shortcodes/class-pwb-brand.php:31
|
| 404 |
-
#:
|
| 405 |
msgid "View brand"
|
| 406 |
msgstr "Ver marca"
|
| 407 |
|
| 408 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 409 |
msgid "¿Start migration?"
|
| 410 |
msgstr "¿Comenzar la migración?"
|
| 411 |
|
| 412 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 413 |
msgid ""
|
| 414 |
"We are migrating the product brands. ¡Don´t close this window until the "
|
| 415 |
"process is finished!"
|
|
@@ -417,11 +442,11 @@ msgstr ""
|
|
| 417 |
"Estamos migrando las marcas de producto. ¡No cierres esta ventana hasta que "
|
| 418 |
"el proceso finalice!"
|
| 419 |
|
| 420 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 421 |
msgid "¿Start loading dummy data?"
|
| 422 |
msgstr "¿Comenzar con la importación?"
|
| 423 |
|
| 424 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 425 |
msgid ""
|
| 426 |
"We are importing the dummy data. ¡Don´t close this window until the process "
|
| 427 |
"is finished!"
|
|
@@ -429,109 +454,101 @@ msgstr ""
|
|
| 429 |
"En este momento estamos importando las marcas ficticias. ¡No cierre esta "
|
| 430 |
"ventana hasta que termine el proceso!"
|
| 431 |
|
| 432 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 433 |
msgid "All Brands"
|
| 434 |
msgstr "Todas las marcas"
|
| 435 |
|
| 436 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 437 |
msgid "Edit Brand"
|
| 438 |
msgstr "Editar marca"
|
| 439 |
|
| 440 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 441 |
msgid "View Brand"
|
| 442 |
msgstr "Ver marca"
|
| 443 |
|
| 444 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 445 |
msgid "Update Brand"
|
| 446 |
msgstr "Actualizar marca"
|
| 447 |
|
| 448 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 449 |
msgid "Add New Brand"
|
| 450 |
msgstr "Añadir nueva marca"
|
| 451 |
|
| 452 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 453 |
msgid "New Brand Name"
|
| 454 |
msgstr "Nuevo nombre de marca"
|
| 455 |
|
| 456 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 457 |
msgid "Parent Brand"
|
| 458 |
msgstr "Marca Padre"
|
| 459 |
|
| 460 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 461 |
msgid "Parent Brand:"
|
| 462 |
msgstr "Marca Padre:"
|
| 463 |
|
| 464 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 465 |
msgid "Search Brands"
|
| 466 |
msgstr "Buscar Marcas"
|
| 467 |
|
| 468 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 469 |
msgid "Popular Brands"
|
| 470 |
msgstr "Marcas Populares"
|
| 471 |
|
| 472 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 473 |
msgid "Separate brands with commas"
|
| 474 |
msgstr "Separar marcas con comas"
|
| 475 |
|
| 476 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 477 |
msgid "Add or remove brands"
|
| 478 |
msgstr "Añadir o eliminar marcas"
|
| 479 |
|
| 480 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 481 |
msgid "Choose from the most used brands"
|
| 482 |
msgstr "Seleccionar de las marcas más utilizadas"
|
| 483 |
|
| 484 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 485 |
msgid "No brands found"
|
| 486 |
msgstr "No se han encontrado marcas"
|
| 487 |
|
| 488 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 489 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 490 |
#: classes/widgets/class-pwb-list.php:39
|
| 491 |
msgid "Brand logo"
|
| 492 |
msgstr "Logo de la marca"
|
| 493 |
|
| 494 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 495 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 496 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 497 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 498 |
msgid "Select image"
|
| 499 |
msgstr "Seleccionar imagen"
|
| 500 |
|
| 501 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 502 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 503 |
msgid "Brand banner"
|
| 504 |
msgstr "Banner de la marca"
|
| 505 |
|
| 506 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 507 |
msgid "This image will be shown on brand page"
|
| 508 |
msgstr "Esta imagen se mostrará en la página de la marca"
|
| 509 |
|
| 510 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 511 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 512 |
msgid "Brand banner link"
|
| 513 |
msgstr "Enlace para el banner de la marca"
|
| 514 |
|
| 515 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 516 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 517 |
msgid "This link should be relative to site url. Example: product/product-name"
|
| 518 |
msgstr ""
|
| 519 |
"Este enlace ha de ser relativo a la url del sitio web. Ejemplo: producto/"
|
| 520 |
"nombre-del-producto"
|
| 521 |
|
| 522 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
| 523 |
-
msgid "Logo"
|
| 524 |
-
msgstr "Logo"
|
| 525 |
-
|
| 526 |
-
#: classes/class-perfect-woocommerce-brands.php:815
|
| 527 |
msgid "All"
|
| 528 |
msgstr "Todas"
|
| 529 |
|
| 530 |
-
#: classes/class-
|
| 531 |
-
msgid "No products found"
|
| 532 |
-
msgstr "No se han encontrado productos"
|
| 533 |
-
|
| 534 |
-
#: classes/class-pwb-api-support.php:62
|
| 535 |
msgid "Product brands"
|
| 536 |
msgstr "Marcas del producto"
|
| 537 |
|
|
@@ -567,7 +584,7 @@ msgstr "Desplegable de marcas"
|
|
| 567 |
msgid "Title"
|
| 568 |
msgstr "Título"
|
| 569 |
|
| 570 |
-
#: classes/widgets/class-pwb-dropdown.php:
|
| 571 |
#: classes/widgets/class-pwb-list.php:105
|
| 572 |
msgid "There is not available brands"
|
| 573 |
msgstr "No se encuentran marcas disponibles"
|
|
@@ -585,10 +602,6 @@ msgstr "Filtrar productos por marca"
|
|
| 585 |
msgid "Title:"
|
| 586 |
msgstr "Título:"
|
| 587 |
|
| 588 |
-
#: classes/widgets/class-pwb-filter-by-brand.php:115
|
| 589 |
-
msgid "Apply filter"
|
| 590 |
-
msgstr "Filtrar"
|
| 591 |
-
|
| 592 |
#: classes/widgets/class-pwb-list.php:10
|
| 593 |
msgid "Adds a brands list to your site"
|
| 594 |
msgstr "Añade una lista de marcas a tu sitio"
|
|
@@ -613,7 +626,7 @@ msgstr "Columnas:"
|
|
| 613 |
msgid "Go to"
|
| 614 |
msgstr "Ir a"
|
| 615 |
|
| 616 |
-
#: main.php:
|
| 617 |
msgid ""
|
| 618 |
"Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
|
| 619 |
"active WooCommerce plugin."
|
|
@@ -621,6 +634,19 @@ msgstr ""
|
|
| 621 |
"Perfect WooCommerce Brands necesita WooCommerce para funcionar. Por favor, "
|
| 622 |
"instala y activa WooCommerce."
|
| 623 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 624 |
#. Plugin Name of the plugin/theme
|
| 625 |
msgid "Perfect WooCommerce Brands"
|
| 626 |
msgstr "Perfect WooCommerce Brands"
|
|
@@ -645,6 +671,12 @@ msgstr "Alberto de Vera Sevilla"
|
|
| 645 |
msgid "https://profiles.wordpress.org/titodevera/"
|
| 646 |
msgstr "https://profiles.wordpress.org/titodevera/"
|
| 647 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 648 |
#~ msgid ""
|
| 649 |
#~ "We are offering you maybe the best WooCommerce brands plugin completely "
|
| 650 |
#~ "free. You can help us making Perfect WooCommerce Brands a bit better. "
|
| 1 |
msgid ""
|
| 2 |
msgstr ""
|
| 3 |
"Project-Id-Version: Perfect WooCommerce Brands\n"
|
| 4 |
+
"POT-Creation-Date: 2018-02-04 14:46+0100\n"
|
| 5 |
+
"PO-Revision-Date: 2018-02-04 14:49+0100\n"
|
| 6 |
"Last-Translator: \n"
|
| 7 |
"Language-Team: \n"
|
| 8 |
"Language: es_ES\n"
|
| 10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 13 |
+
"X-Generator: Poedit 2.0.6\n"
|
| 14 |
"X-Poedit-Basepath: ..\n"
|
| 15 |
"X-Poedit-WPHeader: main.php\n"
|
| 16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
| 20 |
"X-Poedit-SearchPath-0: .\n"
|
| 21 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
| 22 |
|
| 23 |
+
#: classes/admin/class-edit-brands-page.php:39
|
| 24 |
+
msgid "featured"
|
| 25 |
+
msgstr "favorita"
|
| 26 |
+
|
| 27 |
+
#: classes/admin/class-edit-brands-page.php:74
|
| 28 |
+
msgid "Logo"
|
| 29 |
+
msgstr "Logo"
|
| 30 |
+
|
| 31 |
+
#: classes/admin/class-edit-brands-page.php:96
|
| 32 |
+
msgid "Set as featured"
|
| 33 |
+
msgstr "Marcar como favorita"
|
| 34 |
+
|
| 35 |
+
#: classes/admin/class-edit-brands-page.php:118
|
| 36 |
+
msgid "Error!"
|
| 37 |
+
msgstr "Error!"
|
| 38 |
+
|
| 39 |
+
#: classes/admin/class-edit-brands-page.php:128
|
| 40 |
#: classes/admin/class-pwb-admin-tab.php:21
|
| 41 |
+
#: classes/class-perfect-woocommerce-brands.php:588
|
| 42 |
+
#: classes/class-perfect-woocommerce-brands.php:590
|
| 43 |
+
#: classes/widgets/class-pwb-dropdown.php:59
|
| 44 |
#: classes/widgets/class-pwb-filter-by-brand.php:17
|
| 45 |
+
#: classes/widgets/class-pwb-filter-by-brand.php:29
|
| 46 |
msgid "Brands"
|
| 47 |
msgstr "Marcas"
|
| 48 |
|
| 49 |
+
#: classes/admin/class-edit-brands-page.php:131
|
| 50 |
+
msgid "Show featured brands first"
|
| 51 |
+
msgstr "Mostrar marcas favoritas primero"
|
| 52 |
+
|
| 53 |
+
#: classes/admin/class-pwb-admin-tab.php:73
|
| 54 |
msgid "Brands settings"
|
| 55 |
msgstr "Ajustes de las marcas"
|
| 56 |
|
| 57 |
+
#: classes/admin/class-pwb-admin-tab.php:79
|
| 58 |
msgid "Slug"
|
| 59 |
msgstr "Slug"
|
| 60 |
|
| 61 |
+
#: classes/admin/class-pwb-admin-tab.php:82
|
| 62 |
msgid "Brands taxonomy slug"
|
| 63 |
msgstr "Slug de la taxonomía marcas"
|
| 64 |
|
| 65 |
+
#: classes/admin/class-pwb-admin-tab.php:87
|
| 66 |
msgid "Show brand description"
|
| 67 |
msgstr "Mostrar descripción de la marca"
|
| 68 |
|
| 69 |
+
#: classes/admin/class-pwb-admin-tab.php:90
|
| 70 |
msgid "Show brand description (if is set) on brand archive page"
|
| 71 |
msgstr "Mostrar descripción de la marca en la página de archivo"
|
| 72 |
|
| 73 |
+
#: classes/admin/class-pwb-admin-tab.php:94
|
| 74 |
msgid "Single product tab"
|
| 75 |
msgstr "Tab en la página del producto"
|
| 76 |
|
| 77 |
+
#: classes/admin/class-pwb-admin-tab.php:97
|
| 78 |
msgid "Show brand tab in single product page"
|
| 79 |
msgstr "Mostrar pestaña con información de la marca en la página del producto"
|
| 80 |
|
| 81 |
+
#: classes/admin/class-pwb-admin-tab.php:101
|
| 82 |
msgid "Show brands in loop"
|
| 83 |
msgstr "Mostrar marcas en el loop"
|
| 84 |
|
| 85 |
+
#: classes/admin/class-pwb-admin-tab.php:104
|
| 86 |
msgid "Show brand logo (or name) in product loop"
|
| 87 |
msgstr "Mostrar el logo de la marca (o el nombre) en el loop"
|
| 88 |
|
| 89 |
+
#: classes/admin/class-pwb-admin-tab.php:107
|
| 90 |
+
#: classes/admin/class-pwb-admin-tab.php:120
|
| 91 |
msgid "No"
|
| 92 |
msgstr "No"
|
| 93 |
|
| 94 |
+
#: classes/admin/class-pwb-admin-tab.php:108
|
| 95 |
+
#: classes/admin/class-pwb-admin-tab.php:121
|
| 96 |
msgid "Show brand link"
|
| 97 |
msgstr "Mostrar el link de la marca"
|
| 98 |
|
| 99 |
+
#: classes/admin/class-pwb-admin-tab.php:109
|
| 100 |
+
#: classes/admin/class-pwb-admin-tab.php:122
|
| 101 |
msgid "Show brand image (if is set)"
|
| 102 |
msgstr "Mostrar el logo de la marca (si tiene uno asignado)"
|
| 103 |
|
| 104 |
+
#: classes/admin/class-pwb-admin-tab.php:113
|
| 105 |
msgid "Show brands in single product"
|
| 106 |
msgstr "Mostrar marcas en la página del producto"
|
| 107 |
|
| 108 |
+
#: classes/admin/class-pwb-admin-tab.php:116
|
| 109 |
msgid "Show brand logo (or name) in single product"
|
| 110 |
msgstr "Mostrar el logo de la marca (o el nombre) en la página del producto"
|
| 111 |
|
| 112 |
+
#: classes/admin/class-pwb-admin-tab.php:126
|
| 113 |
+
#: classes/class-perfect-woocommerce-brands.php:367
|
| 114 |
+
#: classes/class-perfect-woocommerce-brands.php:395
|
| 115 |
+
#: classes/class-perfect-woocommerce-brands.php:466
|
| 116 |
msgid "Brand logo size"
|
| 117 |
msgstr "Tamaño del logo de la marca"
|
| 118 |
|
| 119 |
+
#: classes/admin/class-pwb-admin-tab.php:129
|
| 120 |
msgid "Brand logo size for single product view"
|
| 121 |
msgstr "Tamaño del logo para la vista individual de producto"
|
| 122 |
|
| 123 |
+
#: classes/admin/class-pwb-admin-tab.php:134
|
| 124 |
msgid "Brand position"
|
| 125 |
msgstr "Posición de la marca"
|
| 126 |
|
| 127 |
+
#: classes/admin/class-pwb-admin-tab.php:137
|
| 128 |
msgid "For single product"
|
| 129 |
msgstr "En la página individual de cada producto"
|
| 130 |
|
| 131 |
+
#: classes/admin/class-pwb-admin-tab.php:140
|
| 132 |
msgid "Before title"
|
| 133 |
msgstr "Antes del título"
|
| 134 |
|
| 135 |
+
#: classes/admin/class-pwb-admin-tab.php:141
|
| 136 |
msgid "After title"
|
| 137 |
msgstr "Después del título"
|
| 138 |
|
| 139 |
+
#: classes/admin/class-pwb-admin-tab.php:142
|
| 140 |
msgid "After price"
|
| 141 |
msgstr "Después del precio"
|
| 142 |
|
| 143 |
+
#: classes/admin/class-pwb-admin-tab.php:143
|
| 144 |
msgid "After excerpt"
|
| 145 |
msgstr "Después de la descripción corta"
|
| 146 |
|
| 147 |
+
#: classes/admin/class-pwb-admin-tab.php:144
|
| 148 |
msgid "After add to cart"
|
| 149 |
msgstr "Después del botón de comprar"
|
| 150 |
|
| 151 |
+
#: classes/admin/class-pwb-admin-tab.php:145
|
| 152 |
msgid "After meta"
|
| 153 |
msgstr "Después del meta"
|
| 154 |
|
| 155 |
+
#: classes/admin/class-pwb-admin-tab.php:146
|
| 156 |
msgid "After sharing"
|
| 157 |
msgstr "Después de compartir"
|
| 158 |
|
| 159 |
+
#: classes/admin/class-pwb-admin-tab.php:163
|
| 160 |
msgid "Tools"
|
| 161 |
msgstr "Herramientas"
|
| 162 |
|
| 163 |
+
#: classes/admin/class-pwb-admin-tab.php:169
|
| 164 |
msgid "Import brands"
|
| 165 |
msgstr "Importar marcas"
|
| 166 |
|
| 167 |
+
#: classes/admin/class-pwb-admin-tab.php:173
|
| 168 |
#, php-format
|
| 169 |
msgid ""
|
| 170 |
"Import brands from other brand plugin. <a href=\"%s\" target=\"_blank"
|
| 173 |
"Importar marcas de producto de otro plugin de marcas. <a href=\"%s\" target="
|
| 174 |
"\"_blank\">Pulsa aquí para ver la documentación</a>"
|
| 175 |
|
| 176 |
+
#: classes/admin/class-pwb-admin-tab.php:178
|
| 177 |
+
#: classes/admin/class-pwb-admin-tab.php:191
|
| 178 |
msgid "-"
|
| 179 |
msgstr "-"
|
| 180 |
|
| 181 |
+
#: classes/admin/class-pwb-admin-tab.php:179
|
| 182 |
msgid "YITH WooCommerce Brands Add-On"
|
| 183 |
msgstr "YITH WooCommerce Brands Add-On"
|
| 184 |
|
| 185 |
+
#: classes/admin/class-pwb-admin-tab.php:180
|
| 186 |
msgid "Ultimate WooCommerce Brands"
|
| 187 |
msgstr "Ultimate WooCommerce Brands"
|
| 188 |
|
| 189 |
+
#: classes/admin/class-pwb-admin-tab.php:181
|
| 190 |
msgid "Offical WooCommerce Brands"
|
| 191 |
msgstr "Offical WooCommerce Brands"
|
| 192 |
|
| 193 |
+
#: classes/admin/class-pwb-admin-tab.php:185
|
| 194 |
msgid "Dummy data"
|
| 195 |
msgstr "Datos ficticios"
|
| 196 |
|
| 197 |
+
#: classes/admin/class-pwb-admin-tab.php:188
|
| 198 |
msgid "Import generic brands and assign it to products randomly"
|
| 199 |
msgstr ""
|
| 200 |
"Importar marcas genéricas y asignarlas a los productos existentes de forma "
|
| 201 |
"aleatoria"
|
| 202 |
|
| 203 |
+
#: classes/admin/class-pwb-admin-tab.php:192
|
| 204 |
msgid "Start import"
|
| 205 |
msgstr "Comenzar importación"
|
| 206 |
|
| 207 |
+
#: classes/admin/class-pwb-admin-tab.php:196
|
| 208 |
msgid "System status"
|
| 209 |
msgstr "Estado del sistema"
|
| 210 |
|
| 211 |
+
#: classes/admin/class-pwb-admin-tab.php:198
|
| 212 |
msgid "Show system status"
|
| 213 |
msgstr "Ver estado del sistema"
|
| 214 |
|
| 215 |
+
#: classes/admin/class-pwb-coupon.php:24
|
| 216 |
msgid "Brands restriction"
|
| 217 |
msgstr "Restricciones de marca"
|
| 218 |
|
| 219 |
+
#: classes/admin/class-pwb-coupon.php:25
|
| 220 |
msgid "Any brand"
|
| 221 |
msgstr "Cualquier marca"
|
| 222 |
|
| 223 |
+
#: classes/admin/class-pwb-coupon.php:34
|
| 224 |
msgid ""
|
| 225 |
"Coupon will be valid if there are at least one product of this brands in the "
|
| 226 |
"cart"
|
| 228 |
"El cupón será válido si existe al menos un producto de la marca señalada en "
|
| 229 |
"el carrito"
|
| 230 |
|
| 231 |
+
#: classes/class-perfect-woocommerce-brands.php:54
|
| 232 |
msgid ""
|
| 233 |
"We know that you´re in love with Perfect WooCommerce Brands, you can help us "
|
| 234 |
"making it a bit better. Thanks a lot!"
|
| 236 |
"Sabemos que Perfect WooCommerce Brands te encanta, puedes ayudarnos a "
|
| 237 |
"hacerlo un poco mejor. ¡Muchas gracias!"
|
| 238 |
|
| 239 |
+
#: classes/class-perfect-woocommerce-brands.php:56
|
| 240 |
msgid ""
|
| 241 |
"<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
|
| 242 |
"reviews/?rate=5#new-post\" target=\"_blank\">Leave a review</a>"
|
| 244 |
"<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
|
| 245 |
"reviews/?rate=5#new-post\" target=\"_blank\">Dejar una review</a>"
|
| 246 |
|
| 247 |
+
#: classes/class-perfect-woocommerce-brands.php:57
|
| 248 |
msgid ""
|
| 249 |
"<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
|
| 250 |
"woocommerce-brands\" target=\"_blank\">Translate the plugin</a>"
|
| 252 |
"<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
|
| 253 |
"woocommerce-brands\" target=\"_blank\">Traducir el plugin</a>"
|
| 254 |
|
| 255 |
+
#: classes/class-perfect-woocommerce-brands.php:58
|
| 256 |
msgid ""
|
| 257 |
"<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
|
| 258 |
"\"_blank\">View on GitHub</a>"
|
| 260 |
"<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
|
| 261 |
"\"_blank\">Ver en GitHub</a>"
|
| 262 |
|
| 263 |
+
#: classes/class-perfect-woocommerce-brands.php:81
|
| 264 |
msgid "Settings"
|
| 265 |
msgstr "Ajustes"
|
| 266 |
|
| 267 |
+
#: classes/class-perfect-woocommerce-brands.php:264
|
| 268 |
msgid "PWB Product carousel"
|
| 269 |
msgstr "PWB Carrusel de productos"
|
| 270 |
|
| 271 |
+
#: classes/class-perfect-woocommerce-brands.php:265
|
| 272 |
msgid "Product carousel by brand or by category"
|
| 273 |
msgstr "Carrusel de productos por marca o categoría"
|
| 274 |
|
| 275 |
+
#: classes/class-perfect-woocommerce-brands.php:273
|
| 276 |
+
#: classes/class-perfect-woocommerce-brands.php:589
|
| 277 |
#: classes/class-pwb-exporter-support.php:22
|
| 278 |
#: classes/class-pwb-importer-support.php:22
|
| 279 |
+
#: classes/class-pwb-importer-support.php:33
|
| 280 |
#: classes/class-pwb-product-tab.php:18 classes/class-pwb-product-tab.php:35
|
| 281 |
msgid "Brand"
|
| 282 |
msgstr "Marca"
|
| 283 |
|
| 284 |
+
#: classes/class-perfect-woocommerce-brands.php:281
|
| 285 |
msgid "Products"
|
| 286 |
msgstr "Productos"
|
| 287 |
|
| 288 |
+
#: classes/class-perfect-woocommerce-brands.php:284
|
| 289 |
msgid "Number of products to load"
|
| 290 |
msgstr "Número de productos que cargar"
|
| 291 |
|
| 292 |
+
#: classes/class-perfect-woocommerce-brands.php:289
|
| 293 |
msgid "Products to show"
|
| 294 |
msgstr "Productos a mostrar"
|
| 295 |
|
| 296 |
+
#: classes/class-perfect-woocommerce-brands.php:292
|
| 297 |
msgid "Number of products to show"
|
| 298 |
msgstr "Número de productos que mostrar"
|
| 299 |
|
| 300 |
+
#: classes/class-perfect-woocommerce-brands.php:297
|
| 301 |
msgid "Products to scroll"
|
| 302 |
msgstr "Número de productos por scroll"
|
| 303 |
|
| 304 |
+
#: classes/class-perfect-woocommerce-brands.php:300
|
| 305 |
msgid "Number of products to scroll"
|
| 306 |
msgstr "Número de productos por cada scroll"
|
| 307 |
|
| 308 |
+
#: classes/class-perfect-woocommerce-brands.php:305
|
| 309 |
+
#: classes/class-perfect-woocommerce-brands.php:354
|
| 310 |
msgid "Autoplay"
|
| 311 |
msgstr "Modo automático"
|
| 312 |
|
| 313 |
+
#: classes/class-perfect-woocommerce-brands.php:307
|
| 314 |
+
#: classes/class-perfect-woocommerce-brands.php:356
|
| 315 |
msgid "Autoplay carousel"
|
| 316 |
msgstr "Modo automático para el carrusel"
|
| 317 |
|
| 318 |
+
#: classes/class-perfect-woocommerce-brands.php:312
|
| 319 |
+
#: classes/class-perfect-woocommerce-brands.php:361
|
| 320 |
msgid "Arrows"
|
| 321 |
msgstr "Flechas de navegación"
|
| 322 |
|
| 323 |
+
#: classes/class-perfect-woocommerce-brands.php:314
|
| 324 |
+
#: classes/class-perfect-woocommerce-brands.php:363
|
| 325 |
msgid "Display prev and next arrows"
|
| 326 |
msgstr "Mostrar flechas de navegación"
|
| 327 |
|
| 328 |
+
#: classes/class-perfect-woocommerce-brands.php:320
|
| 329 |
msgid "PWB Brands carousel"
|
| 330 |
msgstr "PWB Carrusel de marcas"
|
| 331 |
|
| 332 |
+
#: classes/class-perfect-woocommerce-brands.php:321
|
| 333 |
msgid "Brands carousel"
|
| 334 |
msgstr "Carrusel de marcas"
|
| 335 |
|
| 336 |
+
#: classes/class-perfect-woocommerce-brands.php:330
|
| 337 |
msgid "Items"
|
| 338 |
msgstr "Elementos"
|
| 339 |
|
| 340 |
+
#: classes/class-perfect-woocommerce-brands.php:333
|
| 341 |
+
msgid "Number of items to load (or 'featured')"
|
| 342 |
+
msgstr "Número de elementos a cargar (o 'featured')"
|
| 343 |
|
| 344 |
+
#: classes/class-perfect-woocommerce-brands.php:338
|
| 345 |
msgid "Items to show"
|
| 346 |
msgstr "Elementos a mostrar"
|
| 347 |
|
| 348 |
+
#: classes/class-perfect-woocommerce-brands.php:341
|
| 349 |
msgid "Number of items to show"
|
| 350 |
msgstr "Número de elementos a mostrar"
|
| 351 |
|
| 352 |
+
#: classes/class-perfect-woocommerce-brands.php:346
|
| 353 |
msgid "Items to scroll"
|
| 354 |
msgstr "Número de elementos por scroll"
|
| 355 |
|
| 356 |
+
#: classes/class-perfect-woocommerce-brands.php:349
|
| 357 |
msgid "Number of items to scroll"
|
| 358 |
msgstr "Número de elementos por cada scroll"
|
| 359 |
|
| 360 |
+
#: classes/class-perfect-woocommerce-brands.php:378
|
| 361 |
msgid "PWB All brands"
|
| 362 |
msgstr "PWB Todas las marcas"
|
| 363 |
|
| 364 |
+
#: classes/class-perfect-woocommerce-brands.php:379
|
| 365 |
msgid "Show all brands"
|
| 366 |
msgstr "Mostrar todas las marcas"
|
| 367 |
|
| 368 |
+
#: classes/class-perfect-woocommerce-brands.php:388
|
| 369 |
msgid "Brands per page"
|
| 370 |
msgstr "Marcas por página"
|
| 371 |
|
| 372 |
+
#: classes/class-perfect-woocommerce-brands.php:391
|
| 373 |
msgid "Show x brands per page"
|
| 374 |
msgstr "Mostrar x marcas por página"
|
| 375 |
|
| 376 |
+
#: classes/class-perfect-woocommerce-brands.php:402
|
| 377 |
msgid "Order by"
|
| 378 |
msgstr "Ordenar por"
|
| 379 |
|
| 380 |
+
#: classes/class-perfect-woocommerce-brands.php:416
|
| 381 |
msgid "Order"
|
| 382 |
msgstr "Orden"
|
| 383 |
|
| 384 |
+
#: classes/class-perfect-woocommerce-brands.php:426
|
| 385 |
msgid "Title position"
|
| 386 |
msgstr "Posición del título"
|
| 387 |
|
| 388 |
+
#: classes/class-perfect-woocommerce-brands.php:430
|
| 389 |
msgid "Before image"
|
| 390 |
msgstr "Antes de la imagen"
|
| 391 |
|
| 392 |
+
#: classes/class-perfect-woocommerce-brands.php:431
|
| 393 |
msgid "After image"
|
| 394 |
msgstr "Después de la imagen"
|
| 395 |
|
| 396 |
+
#: classes/class-perfect-woocommerce-brands.php:432
|
| 397 |
+
msgid "Hide"
|
| 398 |
+
msgstr "Ocultar"
|
| 399 |
+
|
| 400 |
+
#: classes/class-perfect-woocommerce-brands.php:438
|
| 401 |
msgid "Hide empty"
|
| 402 |
msgstr "Ocultar vacías"
|
| 403 |
|
| 404 |
+
#: classes/class-perfect-woocommerce-brands.php:440
|
| 405 |
msgid "Hide brands that have not been assigned to any product"
|
| 406 |
msgstr "Ocultar marcas que no han sido asignadas a ningún producto"
|
| 407 |
|
| 408 |
+
#: classes/class-perfect-woocommerce-brands.php:448
|
| 409 |
msgid "PWB brand"
|
| 410 |
msgstr "PWB Marca"
|
| 411 |
|
| 412 |
+
#: classes/class-perfect-woocommerce-brands.php:449
|
| 413 |
msgid "Show brand for a specific product"
|
| 414 |
msgstr "Ver marcas de un producto específico"
|
| 415 |
|
| 416 |
+
#: classes/class-perfect-woocommerce-brands.php:459
|
| 417 |
msgid "Product id"
|
| 418 |
msgstr "Id del producto"
|
| 419 |
|
| 420 |
+
#: classes/class-perfect-woocommerce-brands.php:462
|
| 421 |
msgid "Product id (post id)"
|
| 422 |
msgstr "Id del producto (id del post)"
|
| 423 |
|
| 424 |
+
#: classes/class-perfect-woocommerce-brands.php:505
|
| 425 |
+
#: classes/class-perfect-woocommerce-brands.php:507
|
| 426 |
#: classes/shortcodes/class-pwb-all-brands.php:90
|
| 427 |
#: classes/shortcodes/class-pwb-brand.php:29
|
| 428 |
#: classes/shortcodes/class-pwb-brand.php:31
|
| 429 |
+
#: templates/shortcodes/carousel.php:18
|
| 430 |
msgid "View brand"
|
| 431 |
msgstr "Ver marca"
|
| 432 |
|
| 433 |
+
#: classes/class-perfect-woocommerce-brands.php:577
|
| 434 |
msgid "¿Start migration?"
|
| 435 |
msgstr "¿Comenzar la migración?"
|
| 436 |
|
| 437 |
+
#: classes/class-perfect-woocommerce-brands.php:578
|
| 438 |
msgid ""
|
| 439 |
"We are migrating the product brands. ¡Don´t close this window until the "
|
| 440 |
"process is finished!"
|
| 442 |
"Estamos migrando las marcas de producto. ¡No cierres esta ventana hasta que "
|
| 443 |
"el proceso finalice!"
|
| 444 |
|
| 445 |
+
#: classes/class-perfect-woocommerce-brands.php:579
|
| 446 |
msgid "¿Start loading dummy data?"
|
| 447 |
msgstr "¿Comenzar con la importación?"
|
| 448 |
|
| 449 |
+
#: classes/class-perfect-woocommerce-brands.php:580
|
| 450 |
msgid ""
|
| 451 |
"We are importing the dummy data. ¡Don´t close this window until the process "
|
| 452 |
"is finished!"
|
| 454 |
"En este momento estamos importando las marcas ficticias. ¡No cierre esta "
|
| 455 |
"ventana hasta que termine el proceso!"
|
| 456 |
|
| 457 |
+
#: classes/class-perfect-woocommerce-brands.php:591
|
| 458 |
msgid "All Brands"
|
| 459 |
msgstr "Todas las marcas"
|
| 460 |
|
| 461 |
+
#: classes/class-perfect-woocommerce-brands.php:592
|
| 462 |
msgid "Edit Brand"
|
| 463 |
msgstr "Editar marca"
|
| 464 |
|
| 465 |
+
#: classes/class-perfect-woocommerce-brands.php:593
|
| 466 |
msgid "View Brand"
|
| 467 |
msgstr "Ver marca"
|
| 468 |
|
| 469 |
+
#: classes/class-perfect-woocommerce-brands.php:594
|
| 470 |
msgid "Update Brand"
|
| 471 |
msgstr "Actualizar marca"
|
| 472 |
|
| 473 |
+
#: classes/class-perfect-woocommerce-brands.php:595
|
| 474 |
msgid "Add New Brand"
|
| 475 |
msgstr "Añadir nueva marca"
|
| 476 |
|
| 477 |
+
#: classes/class-perfect-woocommerce-brands.php:596
|
| 478 |
msgid "New Brand Name"
|
| 479 |
msgstr "Nuevo nombre de marca"
|
| 480 |
|
| 481 |
+
#: classes/class-perfect-woocommerce-brands.php:597
|
| 482 |
msgid "Parent Brand"
|
| 483 |
msgstr "Marca Padre"
|
| 484 |
|
| 485 |
+
#: classes/class-perfect-woocommerce-brands.php:598
|
| 486 |
msgid "Parent Brand:"
|
| 487 |
msgstr "Marca Padre:"
|
| 488 |
|
| 489 |
+
#: classes/class-perfect-woocommerce-brands.php:599
|
| 490 |
msgid "Search Brands"
|
| 491 |
msgstr "Buscar Marcas"
|
| 492 |
|
| 493 |
+
#: classes/class-perfect-woocommerce-brands.php:600
|
| 494 |
msgid "Popular Brands"
|
| 495 |
msgstr "Marcas Populares"
|
| 496 |
|
| 497 |
+
#: classes/class-perfect-woocommerce-brands.php:601
|
| 498 |
msgid "Separate brands with commas"
|
| 499 |
msgstr "Separar marcas con comas"
|
| 500 |
|
| 501 |
+
#: classes/class-perfect-woocommerce-brands.php:602
|
| 502 |
msgid "Add or remove brands"
|
| 503 |
msgstr "Añadir o eliminar marcas"
|
| 504 |
|
| 505 |
+
#: classes/class-perfect-woocommerce-brands.php:603
|
| 506 |
msgid "Choose from the most used brands"
|
| 507 |
msgstr "Seleccionar de las marcas más utilizadas"
|
| 508 |
|
| 509 |
+
#: classes/class-perfect-woocommerce-brands.php:604
|
| 510 |
msgid "No brands found"
|
| 511 |
msgstr "No se han encontrado marcas"
|
| 512 |
|
| 513 |
+
#: classes/class-perfect-woocommerce-brands.php:648
|
| 514 |
+
#: classes/class-perfect-woocommerce-brands.php:681
|
| 515 |
#: classes/widgets/class-pwb-list.php:39
|
| 516 |
msgid "Brand logo"
|
| 517 |
msgstr "Logo de la marca"
|
| 518 |
|
| 519 |
+
#: classes/class-perfect-woocommerce-brands.php:650
|
| 520 |
+
#: classes/class-perfect-woocommerce-brands.php:656
|
| 521 |
+
#: classes/class-perfect-woocommerce-brands.php:685
|
| 522 |
+
#: classes/class-perfect-woocommerce-brands.php:705
|
| 523 |
msgid "Select image"
|
| 524 |
msgstr "Seleccionar imagen"
|
| 525 |
|
| 526 |
+
#: classes/class-perfect-woocommerce-brands.php:654
|
| 527 |
+
#: classes/class-perfect-woocommerce-brands.php:701
|
| 528 |
msgid "Brand banner"
|
| 529 |
msgstr "Banner de la marca"
|
| 530 |
|
| 531 |
+
#: classes/class-perfect-woocommerce-brands.php:657
|
| 532 |
msgid "This image will be shown on brand page"
|
| 533 |
msgstr "Esta imagen se mostrará en la página de la marca"
|
| 534 |
|
| 535 |
+
#: classes/class-perfect-woocommerce-brands.php:661
|
| 536 |
+
#: classes/class-perfect-woocommerce-brands.php:721
|
| 537 |
msgid "Brand banner link"
|
| 538 |
msgstr "Enlace para el banner de la marca"
|
| 539 |
|
| 540 |
+
#: classes/class-perfect-woocommerce-brands.php:663
|
| 541 |
+
#: classes/class-perfect-woocommerce-brands.php:725
|
| 542 |
msgid "This link should be relative to site url. Example: product/product-name"
|
| 543 |
msgstr ""
|
| 544 |
"Este enlace ha de ser relativo a la url del sitio web. Ejemplo: producto/"
|
| 545 |
"nombre-del-producto"
|
| 546 |
|
| 547 |
+
#: classes/class-perfect-woocommerce-brands.php:794
|
|
|
|
|
|
|
|
|
|
|
|
|
| 548 |
msgid "All"
|
| 549 |
msgstr "Todas"
|
| 550 |
|
| 551 |
+
#: classes/class-pwb-api-support.php:90
|
|
|
|
|
|
|
|
|
|
|
|
|
| 552 |
msgid "Product brands"
|
| 553 |
msgstr "Marcas del producto"
|
| 554 |
|
| 584 |
msgid "Title"
|
| 585 |
msgstr "Título"
|
| 586 |
|
| 587 |
+
#: classes/widgets/class-pwb-dropdown.php:68
|
| 588 |
#: classes/widgets/class-pwb-list.php:105
|
| 589 |
msgid "There is not available brands"
|
| 590 |
msgstr "No se encuentran marcas disponibles"
|
| 602 |
msgid "Title:"
|
| 603 |
msgstr "Título:"
|
| 604 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 605 |
#: classes/widgets/class-pwb-list.php:10
|
| 606 |
msgid "Adds a brands list to your site"
|
| 607 |
msgstr "Añade una lista de marcas a tu sitio"
|
| 626 |
msgid "Go to"
|
| 627 |
msgstr "Ir a"
|
| 628 |
|
| 629 |
+
#: main.php:103
|
| 630 |
msgid ""
|
| 631 |
"Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
|
| 632 |
"active WooCommerce plugin."
|
| 634 |
"Perfect WooCommerce Brands necesita WooCommerce para funcionar. Por favor, "
|
| 635 |
"instala y activa WooCommerce."
|
| 636 |
|
| 637 |
+
#: templates/shortcodes/carousel.php:24
|
| 638 |
+
#: templates/shortcodes/product-carousel.php:28
|
| 639 |
+
msgid "Loading"
|
| 640 |
+
msgstr "Cargando"
|
| 641 |
+
|
| 642 |
+
#: templates/shortcodes/product-carousel.php:34
|
| 643 |
+
msgid "Nothing found"
|
| 644 |
+
msgstr "Aquí no hay nada"
|
| 645 |
+
|
| 646 |
+
#: templates/widgets/filter-by-brand.php:24
|
| 647 |
+
msgid "Apply filter"
|
| 648 |
+
msgstr "Filtrar"
|
| 649 |
+
|
| 650 |
#. Plugin Name of the plugin/theme
|
| 651 |
msgid "Perfect WooCommerce Brands"
|
| 652 |
msgstr "Perfect WooCommerce Brands"
|
| 671 |
msgid "https://profiles.wordpress.org/titodevera/"
|
| 672 |
msgstr "https://profiles.wordpress.org/titodevera/"
|
| 673 |
|
| 674 |
+
#~ msgid "Number of items to load"
|
| 675 |
+
#~ msgstr "Número de elementos que cargar"
|
| 676 |
+
|
| 677 |
+
#~ msgid "No products found"
|
| 678 |
+
#~ msgstr "No se han encontrado productos"
|
| 679 |
+
|
| 680 |
#~ msgid ""
|
| 681 |
#~ "We are offering you maybe the best WooCommerce brands plugin completely "
|
| 682 |
#~ "free. You can help us making Perfect WooCommerce Brands a bit better. "
|
main.php
CHANGED
|
@@ -1,31 +1,30 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 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.
|
| 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 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
*/
|
| 29 |
|
| 30 |
namespace Perfect_Woocommerce_Brands;
|
| 31 |
|
|
@@ -35,7 +34,7 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
|
| 35 |
define( 'PWB_PLUGIN', plugins_url( '', __FILE__ ) );
|
| 36 |
define( 'PWB_PLUGIN_PATH', plugin_basename( dirname( __FILE__ ) ) );
|
| 37 |
define( 'PWB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
|
| 38 |
-
define( 'PWB_PLUGIN_VERSION', '1.6.
|
| 39 |
define( 'PWB_WP_VERSION', get_bloginfo( 'version' ) );
|
| 40 |
define( 'PWB_WC_VERSION', get_option( 'woocommerce_version' ) );
|
| 41 |
|
|
@@ -81,6 +80,8 @@ if( is_plugin_active( 'woocommerce/woocommerce.php' ) ){
|
|
| 81 |
new Admin\PWB_Migrate();
|
| 82 |
require 'classes/admin/class-pwb-dummy-data.php';
|
| 83 |
new Admin\PWB_Dummy_Data();
|
|
|
|
|
|
|
| 84 |
|
| 85 |
if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '3.1.0', '>=' ) ){
|
| 86 |
require 'classes/class-pwb-importer-support.php';
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 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.1
|
| 7 |
+
* Author: Alberto de Vera Sevilla
|
| 8 |
+
* Author URI: https://profiles.wordpress.org/titodevera/
|
| 9 |
+
* Text Domain: perfect-woocommerce-brands
|
| 10 |
+
* Domain Path: /lang
|
| 11 |
+
* License: GPL3
|
| 12 |
+
* Perfect WooCommerce Brands version 1.6.1, Copyright (C) 2016 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
|
| 16 |
+
* (at your option) any later version.
|
| 17 |
+
*
|
| 18 |
+
* Perfect WooCommerce Brands is distributed in the hope that it will be useful,
|
| 19 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 20 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| 21 |
+
* GNU General Public License for more details.
|
| 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.3
|
| 27 |
+
*/
|
|
|
|
| 28 |
|
| 29 |
namespace Perfect_Woocommerce_Brands;
|
| 30 |
|
| 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.1' );
|
| 38 |
define( 'PWB_WP_VERSION', get_bloginfo( 'version' ) );
|
| 39 |
define( 'PWB_WC_VERSION', get_option( 'woocommerce_version' ) );
|
| 40 |
|
| 80 |
new Admin\PWB_Migrate();
|
| 81 |
require 'classes/admin/class-pwb-dummy-data.php';
|
| 82 |
new Admin\PWB_Dummy_Data();
|
| 83 |
+
require 'classes/admin/class-edit-brands-page.php';
|
| 84 |
+
new Admin\Edit_Brands_Page();
|
| 85 |
|
| 86 |
if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '3.1.0', '>=' ) ){
|
| 87 |
require 'classes/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.
|
| 8 |
License: GPL3
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
|
| 10 |
|
|
@@ -43,6 +43,7 @@ With this extension you can add product brands to your WooCommerce site.
|
|
| 43 |
> * WooCommerce REST API support
|
| 44 |
> * WooCommerce built-in product importer/exporter support (WooCommerce 3.1.0+)
|
| 45 |
> * Brand tab for single product page
|
|
|
|
| 46 |
> * And much more!
|
| 47 |
|
| 48 |
|
|
@@ -77,6 +78,16 @@ Go to `WooCommerce/Settings/` and click on `Brands` tab
|
|
| 77 |
|
| 78 |
|
| 79 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
= 1.6.0 =
|
| 81 |
* Feature: Migrate brands from the official WooCommerce Brand's plugin (pull request, thanks Chunkford)
|
| 82 |
* Feature: Support for the new WooCommerce product importer/exporter
|
| 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.1
|
| 8 |
License: GPL3
|
| 9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
|
| 10 |
|
| 43 |
> * WooCommerce REST API support
|
| 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 |
|
| 79 |
|
| 80 |
== Changelog ==
|
| 81 |
+
= 1.6.1 =
|
| 82 |
+
* Feature: Favorite brands
|
| 83 |
+
* Fix: Brand logo full size option for single product
|
| 84 |
+
* Fix: Coupons brands restriction (thanks @josk79)
|
| 85 |
+
* Fix: Import products fixes
|
| 86 |
+
* Fix: PHP7 warning on 'class-perfect-woocommerce-brands.php'
|
| 87 |
+
* Fix: Brand not added when Duplicating Product
|
| 88 |
+
* Enhancement: Filter by brand widget enhancements
|
| 89 |
+
* Enhancement: Carousels enhancements
|
| 90 |
+
* Enhancement: JS and CSS minified
|
| 91 |
= 1.6.0 =
|
| 92 |
* Feature: Migrate brands from the official WooCommerce Brand's plugin (pull request, thanks Chunkford)
|
| 93 |
* Feature: Support for the new WooCommerce product importer/exporter
|
templates/admin/edit-brands-bottom.php
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* The template for displaying the edit-tags.php table footer
|
| 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-edit-brands-bottom pwb-clearfix">
|
| 15 |
+
<span class="dashicons dashicons-admin-collapse"></span>
|
| 16 |
+
<p class="pwb-featured-count">
|
| 17 |
+
<span><?php echo $data['featured_count'];?></span> <?php echo $data['text_featured'];?>
|
| 18 |
+
</p>
|
| 19 |
+
</div>
|
templates/shortcodes/carousel.php
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* The template for displaying the carousels
|
| 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-carousel" data-slick="<?php echo $slick_settings; ?>">
|
| 15 |
+
|
| 16 |
+
<?php foreach( $brands as $brand ): ?>
|
| 17 |
+
<div class="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>
|
| 22 |
+
<?php endforeach; ?>
|
| 23 |
+
|
| 24 |
+
<div class="pwb-carousel-loader"><?php _e('Loading','perfect-woocommerce-brands');?>...</div>
|
| 25 |
+
|
| 26 |
+
</div>
|
templates/shortcodes/product-carousel.php
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* The template for displaying the product carousels
|
| 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 |
+
<?php if( !empty( $products ) ): ?>
|
| 15 |
+
|
| 16 |
+
<div class="pwb-product-carousel" data-slick="<?php echo $slick_settings; ?>">
|
| 17 |
+
|
| 18 |
+
<?php foreach( $products as $product ): ?>
|
| 19 |
+
<div class="slick-slide">
|
| 20 |
+
<a href="<?php echo $product['permalink']; ?>">
|
| 21 |
+
<?php echo $product['thumbnail']; ?>
|
| 22 |
+
<h3><?php echo $product['title']; ?></h3>
|
| 23 |
+
<?php echo do_shortcode('[add_to_cart id="'.$product['id'].'" style=""]'); ?>
|
| 24 |
+
</a>
|
| 25 |
+
</div>
|
| 26 |
+
<?php endforeach; ?>
|
| 27 |
+
|
| 28 |
+
<div class="pwb-carousel-loader"><?php _e('Loading','perfect-woocommerce-brands');?>...</div>
|
| 29 |
+
|
| 30 |
+
</div>
|
| 31 |
+
|
| 32 |
+
<?php else: ?>
|
| 33 |
+
|
| 34 |
+
<div><?php _e('Nothing found');?></div>
|
| 35 |
+
|
| 36 |
+
<?php endif; ?>
|
templates/widgets/filter-by-brand.php
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* The template for displaying filter by brand widget
|
| 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-filter-products" data-cat-url="<?php echo $cate_url;?>">
|
| 15 |
+
<ul>
|
| 16 |
+
<?php foreach( $brands as $brand ): ?>
|
| 17 |
+
<li>
|
| 18 |
+
<label>
|
| 19 |
+
<input type="checkbox" data-brand="<?php echo $brand->term_id;?>" value="<?php echo $brand->slug;?>"><?php echo $brand->name; ?>
|
| 20 |
+
</label>
|
| 21 |
+
</li>
|
| 22 |
+
<?php endforeach; ?>
|
| 23 |
+
</ul>
|
| 24 |
+
<button><?php _e('Apply filter','perfect-woocommerce-brands') ?></button>
|
| 25 |
+
</div>
|
