Version Description
- Important improvement of the user experience when assigning images to a brand
- Feature (Option): Hide brands in single product, show as image or show as link
- Feature: Hide prev/next arrows on carousel shortcodes
- Feature: Hide empty brands option for "Display all brands" shortcode
- Feature: New options for "Display brands as list" widget
- Fix: Autoplay bug on carousel shortcodes
- Tested on PHP7
- Shortcut to the plugin settings added to the plugin list page
- "Help us" notice added
- Minor code improvements
Download this release
Release Info
Developer | titodevera |
Plugin | Perfect Brands for WooCommerce |
Version | 1.4.4 |
Comparing to | |
See all releases |
Code changes from version 1.4.3 to 1.4.4
- assets/css/styles-admin.css +56 -14
- assets/css/styles-frontend.css +160 -136
- assets/js/pwb_admin_functions.js +164 -78
- assets/js/pwb_frontend_functions.js +142 -142
- classes/class-perfect-woocommerce-brands.php +886 -813
- classes/class-pwb-admin-tab.php +177 -165
- classes/shortcodes/class-pwb-all-brands.php +108 -102
- classes/shortcodes/class-pwb-brand.php +43 -43
- classes/shortcodes/class-pwb-carousel.php +53 -52
- classes/shortcodes/class-pwb-product-carousel.php +41 -36
- classes/widgets/class-pwb-dropdown.php +1 -1
- classes/widgets/class-pwb-filter-by-brand.php +2 -2
- classes/widgets/class-pwb-list.php +51 -16
- lang/perfect-woocommerce-brands-es_ES.mo +0 -0
- lang/perfect-woocommerce-brands-es_ES.po +211 -128
- main.php +72 -71
- readme.txt +109 -97
- uninstall.php +16 -15
assets/css/styles-admin.css
CHANGED
@@ -1,21 +1,63 @@
|
|
1 |
-
/* ----------------------- Taxonomy pwb-brand ----------------------- */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
.taxonomy-pwb-brand .pwb_brand_cont #pwb_brand_image, .taxonomy-pwb-brand .pwb_brand_cont #pwb_brand_banner{
|
3 |
display: none;
|
4 |
-
}
|
5 |
-
.taxonomy-pwb-brand .pwb_brand_cont div{
|
6 |
-
margin-top: 10px;
|
7 |
-
}
|
8 |
-
@media screen and (max-width: 782px) {
|
9 |
-
.taxonomy-pwb-brand .wp-list-table thead th.column-logo, .taxonomy-pwb-brand .wp-list-table tfoot th.column-logo {
|
10 |
-
display: none;
|
11 |
-
}
|
12 |
-
|
13 |
-
.taxonomy-pwb-brand .wp-list-table td.column-logo:before {
|
14 |
-
content: ""!important;
|
15 |
-
}
|
16 |
-
}
|
17 |
/* ----------------------- /Taxonomy pwb-brand ----------------------- */
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
.pwb-modal{
|
20 |
position: fixed;
|
21 |
top: 0;
|
1 |
+
/* ----------------------- Taxonomy pwb-brand ----------------------- */
|
2 |
+
.taxonomy-pwb-brand .pwb_brand_image_selected_remove{
|
3 |
+
color: #FF3030;
|
4 |
+
font-family: Arial, Helvetica, sans-serif;
|
5 |
+
text-decoration: none;
|
6 |
+
font-size: 20px;
|
7 |
+
font-weight: bold;
|
8 |
+
position: absolute;
|
9 |
+
top: 0;
|
10 |
+
right: 0;
|
11 |
+
bottom: 0;
|
12 |
+
left: 0;
|
13 |
+
background-color: rgba(0, 0, 0, 0.5);
|
14 |
+
opacity: 0;
|
15 |
+
-webkit-transition: opacity 200ms ease-in-out;
|
16 |
+
-moz-transition: opacity 200ms ease-in-out;
|
17 |
+
-ms-transition: opacity 200ms ease-in-out;
|
18 |
+
-o-transition: opacity 200ms ease-in-out;
|
19 |
+
transition: opacity 200ms ease-in-out;
|
20 |
+
}
|
21 |
+
.taxonomy-pwb-brand .pwb_brand_image_selected span{
|
22 |
+
display: inline-block;
|
23 |
+
position: relative;
|
24 |
+
text-align: center;
|
25 |
+
line-height: 90px;
|
26 |
+
height: 90px;
|
27 |
+
}
|
28 |
+
.taxonomy-pwb-brand .pwb_brand_image_selected span:hover .pwb_brand_image_selected_remove{
|
29 |
+
opacity: 1;
|
30 |
+
}
|
31 |
.taxonomy-pwb-brand .pwb_brand_cont #pwb_brand_image, .taxonomy-pwb-brand .pwb_brand_cont #pwb_brand_banner{
|
32 |
display: none;
|
33 |
+
}
|
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 |
|
48 |
+
.pwb-display-as-logo{
|
49 |
+
display: none;
|
50 |
+
}
|
51 |
+
.pwb-display-as-logo.show{
|
52 |
+
display: block;
|
53 |
+
}
|
54 |
+
.pwb-notice-dismissible p a{
|
55 |
+
margin-right: 12px;
|
56 |
+
}
|
57 |
+
.pwb-notice-dismissible .dashicons-heart{
|
58 |
+
color: #f188ff;
|
59 |
+
margin-left: 3px;
|
60 |
+
}
|
61 |
.pwb-modal{
|
62 |
position: fixed;
|
63 |
top: 0;
|
assets/css/styles-frontend.css
CHANGED
@@ -1,136 +1,160 @@
|
|
1 |
-
/* ----------------------- Global ----------------------- */
|
2 |
-
.pwb-clearfix:after{
|
3 |
-
content: "";
|
4 |
-
display: table;
|
5 |
-
clear: both;
|
6 |
-
}
|
7 |
-
/* ----------------------- /Global ----------------------- */
|
8 |
-
|
9 |
-
/* ----------------------- PWB Carousel ----------------------- */
|
10 |
-
.pwb-carousel .slick-loading .slick-list, .pwb-product-carousel .slick-loading .slick-list{
|
11 |
-
background: #fff url('./ajax-loader.gif') center center no-repeat;
|
12 |
-
}
|
13 |
-
.pwb-carousel .slick-slide, .pwb-product-carousel .slick-slide{
|
14 |
-
margin: 0 10px;
|
15 |
-
}
|
16 |
-
.pwb-carousel .slick-prev, .pwb-carousel .slick-next,
|
17 |
-
.pwb-product-carousel .slick-prev, .pwb-product-carousel .slick-next{
|
18 |
-
font-size: 0;
|
19 |
-
|
20 |
-
position: absolute;
|
21 |
-
top: 0;
|
22 |
-
bottom: 0;
|
23 |
-
|
24 |
-
display: block;
|
25 |
-
|
26 |
-
cursor: pointer;
|
27 |
-
|
28 |
-
font-size: 22px;
|
29 |
-
width: 30px;
|
30 |
-
overflow: hidden;
|
31 |
-
text-align: center;
|
32 |
-
|
33 |
-
color: #aeaeae;
|
34 |
-
border: none;
|
35 |
-
outline: none;
|
36 |
-
|
37 |
-
z-index: 999;
|
38 |
-
background: #eee;
|
39 |
-
opacity: 0;
|
40 |
-
transition: opacity 0.3s ease-in-out;
|
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 |
-
}
|
46 |
-
.pwb-carousel .slick-prev > span, .pwb-carousel .slick-next > span,
|
47 |
-
.pwb-product-carousel .slick-prev > span, .pwb-product-carousel .slick-next > span{
|
48 |
-
display: inline-block;
|
49 |
-
height: 20px;
|
50 |
-
width: 20px;
|
51 |
-
padding: 10px;
|
52 |
-
position: absolute;
|
53 |
-
top: 50%;
|
54 |
-
margin-top: -20px;
|
55 |
-
left: 0;
|
56 |
-
right: 0;
|
57 |
-
}
|
58 |
-
.pwb-carousel .slick-prev:hover,
|
59 |
-
.pwb-carousel .slick-prev:focus,
|
60 |
-
.pwb-carousel .slick-next:hover,
|
61 |
-
.pwb-carousel .slick-next:focus,
|
62 |
-
.pwb-product-carousel .slick-prev:hover,
|
63 |
-
.pwb-product-carousel .slick-prev:focus,
|
64 |
-
.pwb-product-carousel .slick-next:hover,
|
65 |
-
.pwb-product-carousel .slick-next:focus{
|
66 |
-
outline: none;
|
67 |
-
}
|
68 |
-
.pwb-carousel .slick-prev, .pwb-product-carousel .slick-prev{
|
69 |
-
left: 0;
|
70 |
-
}
|
71 |
-
.pwb-carousel .slick-next, .pwb-product-carousel .slick-next{
|
72 |
-
right: 0;
|
73 |
-
}
|
74 |
-
.pwb-carousel:hover .slick-next,.pwb-carousel:hover .slick-prev,
|
75 |
-
.pwb-product-carousel:hover .slick-next,.pwb-product-carousel:hover .slick-prev{
|
76 |
-
opacity: 0.8;
|
77 |
-
}
|
78 |
-
.pwb-product-carousel .pwb-amount{
|
79 |
-
display: block;
|
80 |
-
width: 100%;
|
81 |
-
margin-bottom: 12px;
|
82 |
-
}
|
83 |
-
/* ----------------------- /PWB Carousel ----------------------- */
|
84 |
-
|
85 |
-
/* ----------------------- PWB All Brands ----------------------- */
|
86 |
-
.pwb-all-brands .pwb-pagination-wrapper{
|
87 |
-
margin-top: 20px;
|
88 |
-
padding-top: 10px;
|
89 |
-
border-top: 1px solid #ededed;
|
90 |
-
text-align: right;
|
91 |
-
}
|
92 |
-
.pwb-all-brands .pwb-pagination{
|
93 |
-
display: inline-block;
|
94 |
-
margin-right: 10px;
|
95 |
-
background-color: #ededed;
|
96 |
-
color: #333;
|
97 |
-
text-align: center;
|
98 |
-
padding: 10px;
|
99 |
-
}
|
100 |
-
.pwb-all-brands .pwb-brands-cols-outer:after{
|
101 |
-
content: "";
|
102 |
-
display: table;
|
103 |
-
clear: both;
|
104 |
-
}
|
105 |
-
.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{
|
106 |
-
padding: 0 15px;
|
107 |
-
width: 20%;
|
108 |
-
float: left;
|
109 |
-
}
|
110 |
-
.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3 > div:first-child{
|
111 |
-
height: 25px;
|
112 |
-
overflow: hidden;
|
113 |
-
}
|
114 |
-
/* ----------------------- /PWB All Brands ----------------------- */
|
115 |
-
|
116 |
-
/* -----------------------
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
}
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* ----------------------- Global ----------------------- */
|
2 |
+
.pwb-clearfix:after{
|
3 |
+
content: "";
|
4 |
+
display: table;
|
5 |
+
clear: both;
|
6 |
+
}
|
7 |
+
/* ----------------------- /Global ----------------------- */
|
8 |
+
|
9 |
+
/* ----------------------- PWB Carousel ----------------------- */
|
10 |
+
.pwb-carousel .slick-loading .slick-list, .pwb-product-carousel .slick-loading .slick-list{
|
11 |
+
background: #fff url('./ajax-loader.gif') center center no-repeat;
|
12 |
+
}
|
13 |
+
.pwb-carousel .slick-slide, .pwb-product-carousel .slick-slide{
|
14 |
+
margin: 0 10px;
|
15 |
+
}
|
16 |
+
.pwb-carousel .slick-prev, .pwb-carousel .slick-next,
|
17 |
+
.pwb-product-carousel .slick-prev, .pwb-product-carousel .slick-next{
|
18 |
+
font-size: 0;
|
19 |
+
|
20 |
+
position: absolute;
|
21 |
+
top: 0;
|
22 |
+
bottom: 0;
|
23 |
+
|
24 |
+
display: block;
|
25 |
+
|
26 |
+
cursor: pointer;
|
27 |
+
|
28 |
+
font-size: 22px;
|
29 |
+
width: 30px;
|
30 |
+
overflow: hidden;
|
31 |
+
text-align: center;
|
32 |
+
|
33 |
+
color: #aeaeae;
|
34 |
+
border: none;
|
35 |
+
outline: none;
|
36 |
+
|
37 |
+
z-index: 999;
|
38 |
+
background: #eee;
|
39 |
+
opacity: 0;
|
40 |
+
transition: opacity 0.3s ease-in-out;
|
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 |
+
}
|
46 |
+
.pwb-carousel .slick-prev > span, .pwb-carousel .slick-next > span,
|
47 |
+
.pwb-product-carousel .slick-prev > span, .pwb-product-carousel .slick-next > span{
|
48 |
+
display: inline-block;
|
49 |
+
height: 20px;
|
50 |
+
width: 20px;
|
51 |
+
padding: 10px;
|
52 |
+
position: absolute;
|
53 |
+
top: 50%;
|
54 |
+
margin-top: -20px;
|
55 |
+
left: 0;
|
56 |
+
right: 0;
|
57 |
+
}
|
58 |
+
.pwb-carousel .slick-prev:hover,
|
59 |
+
.pwb-carousel .slick-prev:focus,
|
60 |
+
.pwb-carousel .slick-next:hover,
|
61 |
+
.pwb-carousel .slick-next:focus,
|
62 |
+
.pwb-product-carousel .slick-prev:hover,
|
63 |
+
.pwb-product-carousel .slick-prev:focus,
|
64 |
+
.pwb-product-carousel .slick-next:hover,
|
65 |
+
.pwb-product-carousel .slick-next:focus{
|
66 |
+
outline: none;
|
67 |
+
}
|
68 |
+
.pwb-carousel .slick-prev, .pwb-product-carousel .slick-prev{
|
69 |
+
left: 0;
|
70 |
+
}
|
71 |
+
.pwb-carousel .slick-next, .pwb-product-carousel .slick-next{
|
72 |
+
right: 0;
|
73 |
+
}
|
74 |
+
.pwb-carousel:hover .slick-next,.pwb-carousel:hover .slick-prev,
|
75 |
+
.pwb-product-carousel:hover .slick-next,.pwb-product-carousel:hover .slick-prev{
|
76 |
+
opacity: 0.8;
|
77 |
+
}
|
78 |
+
.pwb-product-carousel .pwb-amount{
|
79 |
+
display: block;
|
80 |
+
width: 100%;
|
81 |
+
margin-bottom: 12px;
|
82 |
+
}
|
83 |
+
/* ----------------------- /PWB Carousel ----------------------- */
|
84 |
+
|
85 |
+
/* ----------------------- PWB All Brands ----------------------- */
|
86 |
+
.pwb-all-brands .pwb-pagination-wrapper{
|
87 |
+
margin-top: 20px;
|
88 |
+
padding-top: 10px;
|
89 |
+
border-top: 1px solid #ededed;
|
90 |
+
text-align: right;
|
91 |
+
}
|
92 |
+
.pwb-all-brands .pwb-pagination{
|
93 |
+
display: inline-block;
|
94 |
+
margin-right: 10px;
|
95 |
+
background-color: #ededed;
|
96 |
+
color: #333;
|
97 |
+
text-align: center;
|
98 |
+
padding: 10px;
|
99 |
+
}
|
100 |
+
.pwb-all-brands .pwb-brands-cols-outer:after{
|
101 |
+
content: "";
|
102 |
+
display: table;
|
103 |
+
clear: both;
|
104 |
+
}
|
105 |
+
.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{
|
106 |
+
padding: 0 15px;
|
107 |
+
width: 20%;
|
108 |
+
float: left;
|
109 |
+
}
|
110 |
+
.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3 > div:first-child{
|
111 |
+
height: 25px;
|
112 |
+
overflow: hidden;
|
113 |
+
}
|
114 |
+
/* ----------------------- /PWB All Brands ----------------------- */
|
115 |
+
|
116 |
+
/* ----------------------- Columns ----------------------- */
|
117 |
+
.pwb-row:after{
|
118 |
+
content: "";
|
119 |
+
display: table;
|
120 |
+
clear: both;
|
121 |
+
}
|
122 |
+
.pwb-columns-2{
|
123 |
+
width: 50%;
|
124 |
+
}
|
125 |
+
.pwb-columns-3{
|
126 |
+
width: 33.33333%;
|
127 |
+
}
|
128 |
+
.pwb-columns-4{
|
129 |
+
width: 25%;
|
130 |
+
}
|
131 |
+
.pwb-columns{
|
132 |
+
display: inline-block;
|
133 |
+
vertical-align:top;
|
134 |
+
}
|
135 |
+
/* ----------------------- /Columns ----------------------- */
|
136 |
+
|
137 |
+
/* ----------------------- Responsive ----------------------- */
|
138 |
+
@media screen and (max-width: 1000px) {
|
139 |
+
.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{
|
140 |
+
width: 25%;
|
141 |
+
}
|
142 |
+
}
|
143 |
+
@media screen and (max-width: 700px) {
|
144 |
+
.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{
|
145 |
+
width: 50%;
|
146 |
+
}
|
147 |
+
}
|
148 |
+
@media screen and (max-width: 480px) {
|
149 |
+
.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3{
|
150 |
+
width: 100%;
|
151 |
+
float: none;
|
152 |
+
}
|
153 |
+
.pwb-all-brands .pwb-brands-cols-outer .pwb-brands-col3 > div:first-child{
|
154 |
+
height: auto;
|
155 |
+
}
|
156 |
+
.pwb-columns-3, .pwb-columns-4{
|
157 |
+
width: 50%;
|
158 |
+
}
|
159 |
+
}
|
160 |
+
/* ----------------------- /Responsive ----------------------- */
|
assets/js/pwb_admin_functions.js
CHANGED
@@ -1,78 +1,164 @@
|
|
1 |
-
jQuery.noConflict();
|
2 |
-
|
3 |
-
jQuery(document).ready(function( $ ) {
|
4 |
-
|
5 |
-
var media_uploader = null;
|
6 |
-
|
7 |
-
function open_media_uploader_image(event){
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
var
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
$(
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery.noConflict();
|
2 |
+
|
3 |
+
jQuery(document).ready(function( $ ) {
|
4 |
+
|
5 |
+
var media_uploader = null;
|
6 |
+
|
7 |
+
function open_media_uploader_image( event, imageSelectorButton ){
|
8 |
+
|
9 |
+
var $imageSelectorScope = imageSelectorButton.parent();
|
10 |
+
|
11 |
+
media_uploader = wp.media({
|
12 |
+
frame: "post",
|
13 |
+
state: "insert",
|
14 |
+
multiple: false
|
15 |
+
});
|
16 |
+
|
17 |
+
media_uploader.on("insert", function(){
|
18 |
+
var json = media_uploader.state().get("selection").first().toJSON();
|
19 |
+
var image_id = json.id;
|
20 |
+
var image_url = json.url;
|
21 |
+
var image_html = '<img src="'+image_url+'" width="90" height="90">';
|
22 |
+
|
23 |
+
var current_selector = '';
|
24 |
+
switch (event.target.id) {
|
25 |
+
case 'pwb_brand_image_select':
|
26 |
+
current_selector = '.taxonomy-pwb-brand #pwb_brand_'+'image';
|
27 |
+
break;
|
28 |
+
case 'pwb_brand_banner_select':
|
29 |
+
current_selector = '.taxonomy-pwb-brand #pwb_brand_'+'banner';
|
30 |
+
break;
|
31 |
+
}
|
32 |
+
|
33 |
+
$(current_selector).val(image_id);
|
34 |
+
$(current_selector+'_result').remove();
|
35 |
+
|
36 |
+
if( $('.pwb_brand_image_selected',$imageSelectorScope).length ){
|
37 |
+
$('.pwb_brand_image_selected span', $imageSelectorScope).html(image_html);
|
38 |
+
}else{
|
39 |
+
$imageSelectorScope.append('<div class="pwb_brand_image_selected"><span>'+image_html+'</span></div>');
|
40 |
+
}
|
41 |
+
add_delete_link( $imageSelectorScope );
|
42 |
+
|
43 |
+
});
|
44 |
+
|
45 |
+
media_uploader.open();
|
46 |
+
}
|
47 |
+
|
48 |
+
|
49 |
+
$('.taxonomy-pwb-brand #pwb_brand_image_select, .taxonomy-pwb-brand #pwb_brand_banner_select').on('click',function(event){
|
50 |
+
open_media_uploader_image( event, $(this) );
|
51 |
+
});
|
52 |
+
|
53 |
+
//bind remove image event for edit page
|
54 |
+
$('.taxonomy-pwb-brand #pwb_brand_image_select, .taxonomy-pwb-brand #pwb_brand_banner_select').each(function(){
|
55 |
+
add_delete_link( $(this).parent() );
|
56 |
+
});
|
57 |
+
|
58 |
+
//clear custom fields when brand is added
|
59 |
+
jQuery( document ).ajaxSuccess(function( event, xhr, settings ) {
|
60 |
+
//Check ajax action of request that succeeded
|
61 |
+
if( ~settings.data.indexOf("action=add-tag") && ~settings.data.indexOf("taxonomy=pwb-brand") ) {
|
62 |
+
$('#pwb_brand_image').val('');
|
63 |
+
$('#pwb_brand_banner').val('');
|
64 |
+
$('.pwb_brand_image_selected').remove();
|
65 |
+
}
|
66 |
+
});
|
67 |
+
|
68 |
+
function add_delete_link( $imageSelectorScope ){
|
69 |
+
|
70 |
+
$( '.pwb_brand_image_selected span', $imageSelectorScope ).append('<a href="#" class="pwb_brand_image_selected_remove">X</a>');
|
71 |
+
|
72 |
+
$( '.pwb_brand_image_selected_remove', $imageSelectorScope ).on( 'click', function( event ){
|
73 |
+
|
74 |
+
event.preventDefault();
|
75 |
+
$(this).closest('.pwb_brand_image_selected').remove();
|
76 |
+
|
77 |
+
//remove the img
|
78 |
+
$('#pwb_brand_image',$imageSelectorScope).val('');
|
79 |
+
$('#pwb_brand_banner',$imageSelectorScope).val('');
|
80 |
+
|
81 |
+
});
|
82 |
+
|
83 |
+
}
|
84 |
+
|
85 |
+
|
86 |
+
/* ····························· Settings tab ····························· */
|
87 |
+
|
88 |
+
$('#wc_pwb_admin_tab_tools_migrate').on( 'change', function(){
|
89 |
+
|
90 |
+
if( $(this).val() != '-' ){
|
91 |
+
|
92 |
+
if( confirm(ajax_object.translations.migrate_notice) ){
|
93 |
+
|
94 |
+
$('html').append('<div class="pwb-modal"><div class="pwb-modal-inner"></div></div>');
|
95 |
+
$('.pwb-modal-inner').html('<p>'+ajax_object.translations.migrating+'</p>');
|
96 |
+
|
97 |
+
var data = {
|
98 |
+
'action': 'pwb_admin_migrate_brands',
|
99 |
+
'from': $(this).val()
|
100 |
+
};
|
101 |
+
$.post(ajax_object.ajax_url, data, function(response) {
|
102 |
+
|
103 |
+
setTimeout( function(){
|
104 |
+
location.href = ajax_object.brands_url;
|
105 |
+
}, 1000 );
|
106 |
+
|
107 |
+
});
|
108 |
+
|
109 |
+
}else{
|
110 |
+
|
111 |
+
}
|
112 |
+
|
113 |
+
}
|
114 |
+
|
115 |
+
$(this).val('-');//reset to default value
|
116 |
+
|
117 |
+
} );
|
118 |
+
|
119 |
+
/* ····························· /Settings tab ····························· */
|
120 |
+
|
121 |
+
/* ····························· Admin notices ····························· */
|
122 |
+
$( document ).on( 'click', '.pwb-notice-dismissible .notice-dismiss', function(e) {
|
123 |
+
|
124 |
+
e.preventDefault();
|
125 |
+
|
126 |
+
var noticeName = $( this ).closest( '.pwb-notice-dismissible' ).data( 'notice' );
|
127 |
+
|
128 |
+
var data = {
|
129 |
+
'action': 'dismiss_pwb_notice',
|
130 |
+
'notice_name': noticeName
|
131 |
+
};
|
132 |
+
jQuery.post(ajaxurl, data, function(response) {
|
133 |
+
//callback
|
134 |
+
});
|
135 |
+
|
136 |
+
} );
|
137 |
+
/* ····························· /Admin notices ····························· */
|
138 |
+
|
139 |
+
/* ····························· Widgets ····························· */
|
140 |
+
pwbBindEventsToWigets();
|
141 |
+
//Fires when a widget is added to a sidebar
|
142 |
+
jQuery(document).bind('widget-added',function(e, widget){
|
143 |
+
pwbBindEventsToWigets( widget );
|
144 |
+
});
|
145 |
+
//Fires on widget save
|
146 |
+
jQuery(document).on('widget-updated', function(e, widget){
|
147 |
+
pwbBindEventsToWigets( widget );
|
148 |
+
});
|
149 |
+
function pwbBindEventsToWigets( widget = null ){
|
150 |
+
$currentWidget = $(".pwb-select-display-as");
|
151 |
+
if( widget != null ){
|
152 |
+
$currentWidget = $(".pwb-select-display-as", widget);
|
153 |
+
}
|
154 |
+
$currentWidget.on("change",function(){
|
155 |
+
if( $(this).val()=="brand_logo" ){
|
156 |
+
$(this).parent().siblings(".pwb-display-as-logo").addClass("show");
|
157 |
+
}else{
|
158 |
+
$(this).parent().siblings(".pwb-display-as-logo").removeClass("show");
|
159 |
+
}
|
160 |
+
});
|
161 |
+
}
|
162 |
+
/* ····························· /Widgets ····························· */
|
163 |
+
|
164 |
+
});
|
assets/js/pwb_frontend_functions.js
CHANGED
@@ -1,142 +1,142 @@
|
|
1 |
-
jQuery.noConflict();
|
2 |
-
|
3 |
-
jQuery(document).ready(function( $ ) {
|
4 |
-
$('.pwb-dropdown-widget').on('change',function(){
|
5 |
-
var href = $(this).find(":selected").val();
|
6 |
-
location.href = href;
|
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,
|
18 |
-
settings: {
|
19 |
-
slidesToShow: 4,
|
20 |
-
draggable: true,
|
21 |
-
arrows: false
|
22 |
-
}
|
23 |
-
},
|
24 |
-
{
|
25 |
-
breakpoint: 600,
|
26 |
-
settings: {
|
27 |
-
slidesToShow: 3,
|
28 |
-
draggable: true,
|
29 |
-
arrows: false
|
30 |
-
}
|
31 |
-
},
|
32 |
-
{
|
33 |
-
breakpoint: 480,
|
34 |
-
settings: {
|
35 |
-
slidesToShow: 2,
|
36 |
-
draggable: true,
|
37 |
-
arrows: false
|
38 |
-
}
|
39 |
-
}
|
40 |
-
]
|
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,
|
52 |
-
settings: {
|
53 |
-
slidesToShow: 3,
|
54 |
-
draggable: true,
|
55 |
-
arrows: false
|
56 |
-
}
|
57 |
-
},
|
58 |
-
{
|
59 |
-
breakpoint: 600,
|
60 |
-
settings: {
|
61 |
-
slidesToShow: 2,
|
62 |
-
draggable: true,
|
63 |
-
arrows: false
|
64 |
-
}
|
65 |
-
},
|
66 |
-
{
|
67 |
-
breakpoint: 480,
|
68 |
-
settings: {
|
69 |
-
slidesToShow: 1,
|
70 |
-
draggable: true,
|
71 |
-
arrows: false
|
72 |
-
}
|
73 |
-
}
|
74 |
-
]
|
75 |
-
});
|
76 |
-
|
77 |
-
|
78 |
-
/* ··························· Filter by brand widget ··························· */
|
79 |
-
|
80 |
-
var brands = PWBgetUrlParameter('pwb-brand-filter');
|
81 |
-
|
82 |
-
$('.pwb-filter-products button').on( 'click', function(){
|
83 |
-
|
84 |
-
var currentUrl = window.location.href;
|
85 |
-
|
86 |
-
var marcas = '';
|
87 |
-
$('.pwb-filter-products input[type="checkbox"]').each(function(index){
|
88 |
-
var checked = $(this).prop('checked');
|
89 |
-
if(checked){
|
90 |
-
marcas+=$(this).val();
|
91 |
-
if($('.pwb-filter-products input[type="checkbox"]').length-1 != index){
|
92 |
-
marcas+=',';
|
93 |
-
}
|
94 |
-
}
|
95 |
-
});
|
96 |
-
|
97 |
-
//removes previous "pwb-brand" from url
|
98 |
-
currentUrl = currentUrl.replace(/&?pwb-brand-filter=([^&]$|[^&]*)/i, "");
|
99 |
-
|
100 |
-
if( currentUrl.indexOf("?") === -1 ){
|
101 |
-
currentUrl = currentUrl + '?pwb-brand-filter='+marcas;
|
102 |
-
}else{
|
103 |
-
currentUrl = currentUrl + '&pwb-brand-filter='+marcas;
|
104 |
-
}
|
105 |
-
location.href = currentUrl;
|
106 |
-
|
107 |
-
});
|
108 |
-
|
109 |
-
if(brands!=null){
|
110 |
-
var brands_array = brands.split(',');
|
111 |
-
$('.pwb-filter-products input[type="checkbox"]').prop('checked',false);
|
112 |
-
for ( var i = 0, l = brands_array.length; i < l; i++ ) {
|
113 |
-
$('.pwb-filter-products input[type="checkbox"]').each(function(index){
|
114 |
-
if($(this).val()){
|
115 |
-
if(brands_array[i]==$(this).val()){
|
116 |
-
$(this).prop('checked',true);
|
117 |
-
}
|
118 |
-
}
|
119 |
-
});
|
120 |
-
}
|
121 |
-
}else{
|
122 |
-
$('.pwb-filter-products input[type="checkbox"]').prop('checked', false);
|
123 |
-
}
|
124 |
-
|
125 |
-
/* ··························· /Filter by brand widget ··························· */
|
126 |
-
|
127 |
-
});
|
128 |
-
|
129 |
-
var PWBgetUrlParameter = function PWBgetUrlParameter(sParam) {
|
130 |
-
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
|
131 |
-
sURLVariables = sPageURL.split('&'),
|
132 |
-
sParameterName,
|
133 |
-
i;
|
134 |
-
|
135 |
-
for (i = 0; i < sURLVariables.length; i++) {
|
136 |
-
sParameterName = sURLVariables[i].split('=');
|
137 |
-
|
138 |
-
if (sParameterName[0] === sParam) {
|
139 |
-
return sParameterName[1] === undefined ? true : sParameterName[1];
|
140 |
-
}
|
141 |
-
}
|
142 |
-
};
|
1 |
+
jQuery.noConflict();
|
2 |
+
|
3 |
+
jQuery(document).ready(function( $ ) {
|
4 |
+
$('.pwb-dropdown-widget').on('change',function(){
|
5 |
+
var href = $(this).find(":selected").val();
|
6 |
+
location.href = href;
|
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,
|
18 |
+
settings: {
|
19 |
+
slidesToShow: 4,
|
20 |
+
draggable: true,
|
21 |
+
arrows: false
|
22 |
+
}
|
23 |
+
},
|
24 |
+
{
|
25 |
+
breakpoint: 600,
|
26 |
+
settings: {
|
27 |
+
slidesToShow: 3,
|
28 |
+
draggable: true,
|
29 |
+
arrows: false
|
30 |
+
}
|
31 |
+
},
|
32 |
+
{
|
33 |
+
breakpoint: 480,
|
34 |
+
settings: {
|
35 |
+
slidesToShow: 2,
|
36 |
+
draggable: true,
|
37 |
+
arrows: false
|
38 |
+
}
|
39 |
+
}
|
40 |
+
]
|
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,
|
52 |
+
settings: {
|
53 |
+
slidesToShow: 3,
|
54 |
+
draggable: true,
|
55 |
+
arrows: false
|
56 |
+
}
|
57 |
+
},
|
58 |
+
{
|
59 |
+
breakpoint: 600,
|
60 |
+
settings: {
|
61 |
+
slidesToShow: 2,
|
62 |
+
draggable: true,
|
63 |
+
arrows: false
|
64 |
+
}
|
65 |
+
},
|
66 |
+
{
|
67 |
+
breakpoint: 480,
|
68 |
+
settings: {
|
69 |
+
slidesToShow: 1,
|
70 |
+
draggable: true,
|
71 |
+
arrows: false
|
72 |
+
}
|
73 |
+
}
|
74 |
+
]
|
75 |
+
});
|
76 |
+
|
77 |
+
|
78 |
+
/* ··························· Filter by brand widget ··························· */
|
79 |
+
|
80 |
+
var brands = PWBgetUrlParameter('pwb-brand-filter');
|
81 |
+
|
82 |
+
$('.pwb-filter-products button').on( 'click', function(){
|
83 |
+
|
84 |
+
var currentUrl = window.location.href;
|
85 |
+
|
86 |
+
var marcas = '';
|
87 |
+
$('.pwb-filter-products input[type="checkbox"]').each(function(index){
|
88 |
+
var checked = $(this).prop('checked');
|
89 |
+
if(checked){
|
90 |
+
marcas+=$(this).val();
|
91 |
+
if($('.pwb-filter-products input[type="checkbox"]').length-1 != index){
|
92 |
+
marcas+=',';
|
93 |
+
}
|
94 |
+
}
|
95 |
+
});
|
96 |
+
|
97 |
+
//removes previous "pwb-brand" from url
|
98 |
+
currentUrl = currentUrl.replace(/&?pwb-brand-filter=([^&]$|[^&]*)/i, "");
|
99 |
+
|
100 |
+
if( currentUrl.indexOf("?") === -1 ){
|
101 |
+
currentUrl = currentUrl + '?pwb-brand-filter='+marcas;
|
102 |
+
}else{
|
103 |
+
currentUrl = currentUrl + '&pwb-brand-filter='+marcas;
|
104 |
+
}
|
105 |
+
location.href = currentUrl;
|
106 |
+
|
107 |
+
});
|
108 |
+
|
109 |
+
if(brands!=null){
|
110 |
+
var brands_array = brands.split(',');
|
111 |
+
$('.pwb-filter-products input[type="checkbox"]').prop('checked',false);
|
112 |
+
for ( var i = 0, l = brands_array.length; i < l; i++ ) {
|
113 |
+
$('.pwb-filter-products input[type="checkbox"]').each(function(index){
|
114 |
+
if($(this).val()){
|
115 |
+
if(brands_array[i]==$(this).val()){
|
116 |
+
$(this).prop('checked',true);
|
117 |
+
}
|
118 |
+
}
|
119 |
+
});
|
120 |
+
}
|
121 |
+
}else{
|
122 |
+
$('.pwb-filter-products input[type="checkbox"]').prop('checked', false);
|
123 |
+
}
|
124 |
+
|
125 |
+
/* ··························· /Filter by brand widget ··························· */
|
126 |
+
|
127 |
+
});
|
128 |
+
|
129 |
+
var PWBgetUrlParameter = function PWBgetUrlParameter(sParam) {
|
130 |
+
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
|
131 |
+
sURLVariables = sPageURL.split('&'),
|
132 |
+
sParameterName,
|
133 |
+
i;
|
134 |
+
|
135 |
+
for (i = 0; i < sURLVariables.length; i++) {
|
136 |
+
sParameterName = sURLVariables[i].split('=');
|
137 |
+
|
138 |
+
if (sParameterName[0] === sParam) {
|
139 |
+
return sParameterName[1] === undefined ? true : sParameterName[1];
|
140 |
+
}
|
141 |
+
}
|
142 |
+
};
|
classes/class-perfect-woocommerce-brands.php
CHANGED
@@ -1,813 +1,886 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
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 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
$
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
$
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
)
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
),
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
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 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
);
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
}
|
812 |
-
|
813 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_filter( 'manage_edit-pwb-brand_columns', array( $this, 'brand_taxonomy_columns_head' ) );
|
16 |
+
add_filter( 'manage_pwb-brand_custom_column', array( $this, 'brand_taxonomy_columns' ), 10, 3 );
|
17 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'register_admin_scripts' ) );
|
18 |
+
$this->brand_logo_position();
|
19 |
+
add_action( 'woocommerce_before_shop_loop', array( $this, 'archive_page_banner' ), 9);
|
20 |
+
add_action( 'woocommerce_before_shop_loop', array( $this, 'show_brand_description' ), 9);
|
21 |
+
add_action( 'woocommerce_after_shop_loop_item_title', array( $this, 'show_brands_in_loop' ) );
|
22 |
+
|
23 |
+
if ( !is_admin() ) {
|
24 |
+
add_action( 'init', array( $this, 'register_frontend_scripts' ) );
|
25 |
+
}
|
26 |
+
|
27 |
+
$this->add_shortcodes();
|
28 |
+
|
29 |
+
if(is_plugin_active('js_composer/js_composer.php')){
|
30 |
+
add_action( 'vc_before_init', array( $this,'vc_map_shortcodes' ) );
|
31 |
+
}
|
32 |
+
|
33 |
+
add_action( 'widgets_init', array( $this, 'register_widgets' ) );
|
34 |
+
add_action( 'woocommerce_after_single_product_summary' , array( $this, 'product_microdata' ), 40 );
|
35 |
+
add_action( 'wp_ajax_pwb_admin_migrate_brands', array( $this, 'migrate_brands' ) );
|
36 |
+
add_action( 'pre_get_posts', array( $this, 'pwb_brand_filter' ) );
|
37 |
+
add_filter( 'plugin_action_links_' . PWB_PLUGIN_BASENAME, array( $this, 'plugin_action_links' ) );
|
38 |
+
add_action( 'wp_ajax_dismiss_pwb_notice', array( $this, 'dismiss_pwb_notice' ) );
|
39 |
+
add_action( 'admin_notices', array( $this, 'review_notice' ) );
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
public function review_notice(){
|
44 |
+
if ( get_option('wc_pwb_notice_plugin_review', true ) ) {
|
45 |
+
?>
|
46 |
+
<div class="notice notice-info pwb-notice-dismissible is-dismissible" data-notice="wc_pwb_notice_plugin_review">
|
47 |
+
<p><?php echo __('We are offering you maybe the best WooCommerce brands plugin completly free. You can help us making Perfect WooCommerce Brands a bit better. Thanks!', 'perfect-woocommerce-brands' ); ?><span class="dashicons dashicons-heart"></span></p>
|
48 |
+
<p>
|
49 |
+
<?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' ); ?>
|
50 |
+
<?php _e( '<a href="https://translate.wordpress.org/projects/wp-plugins/perfect-woocommerce-brands" target="_blank">Translate the plugin</a>', 'perfect-woocommerce-brands' ); ?>
|
51 |
+
<?php _e( '<a href="https://github.com/titodevera/perfect-woocommerce-brands" target="_blank">View on GitHub</a>', 'perfect-woocommerce-brands' ); ?>
|
52 |
+
</p>
|
53 |
+
</div>
|
54 |
+
<?php
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
+
public function dismiss_pwb_notice(){
|
59 |
+
$notice_name_whitelist = array( 'wc_pwb_notice_plugin_review' );
|
60 |
+
if( isset( $_POST['notice_name'] ) && in_array( $_POST['notice_name'], $notice_name_whitelist ) ){
|
61 |
+
update_option( $_POST['notice_name'], 0 );
|
62 |
+
echo 'ok';
|
63 |
+
}else{
|
64 |
+
echo 'error';
|
65 |
+
}
|
66 |
+
wp_die();
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Adds a settings shortcut to plugin´s actions on plugins list
|
71 |
+
*/
|
72 |
+
public function plugin_action_links( $links ) {
|
73 |
+
$settings_url = esc_url( admin_url( 'admin.php?page=wc-settings&tab=pwb_admin_tab' ) );
|
74 |
+
$links[] = '<a href="'. $settings_url .'">'.__('Settings','perfect-woocommerce-brands').'</a>';
|
75 |
+
return $links;
|
76 |
+
}
|
77 |
+
|
78 |
+
public function pwb_brand_filter( $query ){
|
79 |
+
|
80 |
+
if( !empty($_GET['pwb-brand-filter']) ){
|
81 |
+
|
82 |
+
$terms_array = explode(',',$_GET['pwb-brand-filter']);
|
83 |
+
|
84 |
+
//remove invalid terms (security)
|
85 |
+
for ($i=0; $i < count($terms_array); $i++) {
|
86 |
+
if( !term_exists( $terms_array[$i], 'pwb-brand' ) ){
|
87 |
+
unset($terms_array[$i]);
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
if ( !is_admin() && is_post_type_archive( 'product' ) && $query->is_main_query() ) {
|
92 |
+
|
93 |
+
$query->set('tax_query', array(
|
94 |
+
array (
|
95 |
+
'taxonomy' => 'pwb-brand',
|
96 |
+
'field' => 'slug',
|
97 |
+
'terms' => $terms_array
|
98 |
+
)
|
99 |
+
));
|
100 |
+
|
101 |
+
}
|
102 |
+
|
103 |
+
}
|
104 |
+
|
105 |
+
}
|
106 |
+
|
107 |
+
public function migrate_brands(){
|
108 |
+
|
109 |
+
if( isset( $_POST['from'] ) ){
|
110 |
+
|
111 |
+
switch ($_POST['from']) {
|
112 |
+
case 'yith':
|
113 |
+
|
114 |
+
$terms = get_terms( 'yith_product_brand', array(
|
115 |
+
'hide_empty' => false
|
116 |
+
) );
|
117 |
+
|
118 |
+
foreach ($terms as $term) {
|
119 |
+
|
120 |
+
global $wpdb;
|
121 |
+
|
122 |
+
//change taxonomy
|
123 |
+
$wpdb->update(
|
124 |
+
$wpdb->prefix . 'term_taxonomy',
|
125 |
+
array(
|
126 |
+
'taxonomy' => 'pwb-brand'
|
127 |
+
),
|
128 |
+
array(
|
129 |
+
'term_id' => $term->term_id
|
130 |
+
)
|
131 |
+
);
|
132 |
+
|
133 |
+
//update term meta
|
134 |
+
$wpdb->update(
|
135 |
+
$wpdb->prefix . 'termmeta',
|
136 |
+
array(
|
137 |
+
'meta_key' => 'pwb_brand_image'
|
138 |
+
),
|
139 |
+
array(
|
140 |
+
'meta_key' => 'thumbnail_id',
|
141 |
+
'term_id' => $term->term_id
|
142 |
+
)
|
143 |
+
);
|
144 |
+
|
145 |
+
}
|
146 |
+
|
147 |
+
break;
|
148 |
+
}
|
149 |
+
|
150 |
+
}
|
151 |
+
|
152 |
+
wp_die();
|
153 |
+
}
|
154 |
+
|
155 |
+
/*
|
156 |
+
* Adds microdata (brands) to single products
|
157 |
+
*/
|
158 |
+
public function product_microdata(){
|
159 |
+
global $product;
|
160 |
+
$brands = wp_get_post_terms( $product->id, 'pwb-brand');
|
161 |
+
|
162 |
+
foreach ($brands as $brand) {
|
163 |
+
echo '<meta itemprop="brand" content="'.$brand->name.'">';
|
164 |
+
}
|
165 |
+
|
166 |
+
}
|
167 |
+
|
168 |
+
public function add_shortcodes(){
|
169 |
+
add_shortcode( 'pwb-carousel', array(
|
170 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Carousel_Shortcode',
|
171 |
+
'carousel_shortcode'
|
172 |
+
) );
|
173 |
+
add_shortcode( 'pwb-product-carousel', array(
|
174 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Product_Carousel_Shortcode',
|
175 |
+
'product_carousel_shortcode'
|
176 |
+
) );
|
177 |
+
add_shortcode( 'pwb-all-brands', array(
|
178 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_All_Brands_Shortcode',
|
179 |
+
'all_brands_shortcode'
|
180 |
+
) );
|
181 |
+
add_shortcode( 'pwb-brand', array(
|
182 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Brand_Shortcode',
|
183 |
+
'brand_shortcode'
|
184 |
+
) );
|
185 |
+
}
|
186 |
+
|
187 |
+
public function register_widgets(){
|
188 |
+
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_List_Widget' );
|
189 |
+
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_Dropdown_Widget' );
|
190 |
+
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_Filter_By_Brand_Widget' );
|
191 |
+
}
|
192 |
+
|
193 |
+
public function show_brand_description(){
|
194 |
+
$show_desc = get_option('wc_pwb_admin_tab_brand_desc');
|
195 |
+
$queried_object = get_queried_object();
|
196 |
+
if(is_a($queried_object,'WP_Term') && $queried_object->taxonomy == 'pwb-brand' && $queried_object->description != '' && $show_desc !== 'no'){
|
197 |
+
echo '<div class="pwb-brand-description">';
|
198 |
+
echo $queried_object->description;
|
199 |
+
echo '</div>';
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
public function show_brands_in_loop(){
|
204 |
+
|
205 |
+
$brands_in_loop = get_option('wc_pwb_admin_tab_brands_in_loop');
|
206 |
+
|
207 |
+
if( $brands_in_loop == 'brand_link' || $brands_in_loop == 'brand_image' ){
|
208 |
+
|
209 |
+
global $product;
|
210 |
+
$product_id = $product->id;
|
211 |
+
$product_brands = wp_get_post_terms($product_id, 'pwb-brand');
|
212 |
+
if(!empty($product_brands)){
|
213 |
+
echo '<div class="pwb-brands-in-loop">';
|
214 |
+
foreach ($product_brands as $brand) {
|
215 |
+
|
216 |
+
echo '<span>';
|
217 |
+
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
218 |
+
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
219 |
+
|
220 |
+
$attachment_html = wp_get_attachment_image( $attachment_id, 'thumbnail' );
|
221 |
+
if( !empty($attachment_html) && $brands_in_loop == 'brand_image' ){
|
222 |
+
echo '<a href="'.$brand_link.'">'.$attachment_html.'</a>';
|
223 |
+
}else{
|
224 |
+
echo '<a href="'.$brand_link.'">'.$brand->name.'</a>';
|
225 |
+
}
|
226 |
+
echo '</span>';
|
227 |
+
|
228 |
+
}
|
229 |
+
echo '</div>';
|
230 |
+
}
|
231 |
+
|
232 |
+
}
|
233 |
+
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* woocommerce_single_product_summary hook.
|
238 |
+
*
|
239 |
+
* @hooked woocommerce_template_single_title - 5
|
240 |
+
* @hooked woocommerce_template_single_rating - 10
|
241 |
+
* @hooked woocommerce_template_single_price - 10
|
242 |
+
* @hooked woocommerce_template_single_excerpt - 20
|
243 |
+
* @hooked woocommerce_template_single_add_to_cart - 30
|
244 |
+
* @hooked woocommerce_template_single_meta - 40
|
245 |
+
* @hooked woocommerce_template_single_sharing - 50
|
246 |
+
*/
|
247 |
+
private function brand_logo_position(){
|
248 |
+
$position = 41;
|
249 |
+
$position_selected = get_option('wc_pwb_admin_tab_brand_single_position');
|
250 |
+
if(!$position_selected){
|
251 |
+
update_option('wc_pwb_admin_tab_brand_single_position','after_meta');
|
252 |
+
}
|
253 |
+
switch ($position_selected) {
|
254 |
+
case 'before_title':
|
255 |
+
$position = 4;
|
256 |
+
break;
|
257 |
+
case 'after_title':
|
258 |
+
$position = 6;
|
259 |
+
break;
|
260 |
+
case 'after_price':
|
261 |
+
$position = 11;
|
262 |
+
break;
|
263 |
+
case 'after_excerpt':
|
264 |
+
$position = 21;
|
265 |
+
break;
|
266 |
+
case 'after_add_to_cart':
|
267 |
+
$position = 31;
|
268 |
+
break;
|
269 |
+
case 'after_meta':
|
270 |
+
$position = 41;
|
271 |
+
break;
|
272 |
+
case 'after_sharing':
|
273 |
+
$position = 51;
|
274 |
+
break;
|
275 |
+
}
|
276 |
+
add_action('woocommerce_single_product_summary', array($this,'action_woocommerce_single_product_summary'), $position);
|
277 |
+
}
|
278 |
+
|
279 |
+
|
280 |
+
/*
|
281 |
+
* Maps shortcode (for visual composer plugin)
|
282 |
+
*
|
283 |
+
* @since 1.0
|
284 |
+
* @link https://vc.wpbakery.com/
|
285 |
+
* @return mixed
|
286 |
+
*/
|
287 |
+
public function vc_map_shortcodes(){
|
288 |
+
$available_image_sizes_adapted = array();
|
289 |
+
$available_image_sizes = get_intermediate_image_sizes();
|
290 |
+
|
291 |
+
foreach($available_image_sizes as $image_size){
|
292 |
+
$available_image_sizes_adapted[$image_size] = $image_size;
|
293 |
+
}
|
294 |
+
|
295 |
+
vc_map(array(
|
296 |
+
"name" => __( "PWB Product carousel", "perfect-woocommerce-brands" ),
|
297 |
+
"description" => __( "Product carousel by brand or by category", "perfect-woocommerce-brands" ),
|
298 |
+
"base" => "pwb-product-carousel",
|
299 |
+
"class" => "",
|
300 |
+
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
301 |
+
"category" => "WooCommerce",
|
302 |
+
"params" => array(
|
303 |
+
array(
|
304 |
+
"type" => "dropdown",
|
305 |
+
"heading" => __( "Brand", "perfect-woocommerce-brands" ),
|
306 |
+
"param_name" => "brand",
|
307 |
+
"admin_label" => true,
|
308 |
+
"value" => $this->get_brands_array()
|
309 |
+
),
|
310 |
+
array(
|
311 |
+
"type" => "textfield",
|
312 |
+
"holder" => "div",
|
313 |
+
"heading" => __( "Products", "perfect-woocommerce-brands" ),
|
314 |
+
"param_name" => "products",
|
315 |
+
"value" => "10",
|
316 |
+
"description" => __( "Number of products to load", "perfect-woocommerce-brands" )
|
317 |
+
),
|
318 |
+
array(
|
319 |
+
"type" => "textfield",
|
320 |
+
"holder" => "div",
|
321 |
+
"heading" => __( "Products to show", "perfect-woocommerce-brands" ),
|
322 |
+
"param_name" => "products_to_show",
|
323 |
+
"value" => "5",
|
324 |
+
"description" => __( "Number of products to show", "perfect-woocommerce-brands" )
|
325 |
+
),
|
326 |
+
array(
|
327 |
+
"type" => "textfield",
|
328 |
+
"holder" => "div",
|
329 |
+
"heading" => __( "Products to scroll", "perfect-woocommerce-brands" ),
|
330 |
+
"param_name" => "products_to_scroll",
|
331 |
+
"value" => "1",
|
332 |
+
"description" => __( "Number of products to scroll", "perfect-woocommerce-brands" )
|
333 |
+
),
|
334 |
+
array(
|
335 |
+
"type" => "checkbox",
|
336 |
+
"holder" => "div",
|
337 |
+
"heading" => __( "Autoplay", "perfect-woocommerce-brands" ),
|
338 |
+
"param_name" => "autoplay",
|
339 |
+
"description" => __( "Autoplay carousel", "perfect-woocommerce-brands" )
|
340 |
+
),
|
341 |
+
array(
|
342 |
+
"type" => "checkbox",
|
343 |
+
"holder" => "div",
|
344 |
+
"heading" => __( "Arrows", "perfect-woocommerce-brands" ),
|
345 |
+
"param_name" => "arrows",
|
346 |
+
"description" => __( "Display prev and next arrows", "perfect-woocommerce-brands" )
|
347 |
+
)
|
348 |
+
)
|
349 |
+
));
|
350 |
+
|
351 |
+
vc_map(array(
|
352 |
+
"name" => __( "PWB Brands carousel", "perfect-woocommerce-brands" ),
|
353 |
+
"description" => __( "Brands carousel", "perfect-woocommerce-brands" ),
|
354 |
+
"base" => "pwb-carousel",
|
355 |
+
"class" => "",
|
356 |
+
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
357 |
+
"category" => "WooCommerce",
|
358 |
+
"params" => array(
|
359 |
+
array(
|
360 |
+
"type" => "textfield",
|
361 |
+
"holder" => "div",
|
362 |
+
"heading" => __( "Items", "perfect-woocommerce-brands" ),
|
363 |
+
"param_name" => "items",
|
364 |
+
"value" => "10",
|
365 |
+
"description" => __( "Number of items to load", "perfect-woocommerce-brands" )
|
366 |
+
),
|
367 |
+
array(
|
368 |
+
"type" => "textfield",
|
369 |
+
"holder" => "div",
|
370 |
+
"heading" => __( "Items to show", "perfect-woocommerce-brands" ),
|
371 |
+
"param_name" => "items_to_show",
|
372 |
+
"value" => "5",
|
373 |
+
"description" => __( "Number of items to show", "perfect-woocommerce-brands" )
|
374 |
+
),
|
375 |
+
array(
|
376 |
+
"type" => "textfield",
|
377 |
+
"holder" => "div",
|
378 |
+
"heading" => __( "Items to scroll", "perfect-woocommerce-brands" ),
|
379 |
+
"param_name" => "items_to_scroll",
|
380 |
+
"value" => "1",
|
381 |
+
"description" => __( "Number of items to scroll", "perfect-woocommerce-brands" )
|
382 |
+
),
|
383 |
+
array(
|
384 |
+
"type" => "checkbox",
|
385 |
+
"holder" => "div",
|
386 |
+
"heading" => __( "Autoplay", "perfect-woocommerce-brands" ),
|
387 |
+
"param_name" => "autoplay",
|
388 |
+
"description" => __( "Autoplay carousel", "perfect-woocommerce-brands" )
|
389 |
+
),
|
390 |
+
array(
|
391 |
+
"type" => "checkbox",
|
392 |
+
"holder" => "div",
|
393 |
+
"heading" => __( "Arrows", "perfect-woocommerce-brands" ),
|
394 |
+
"param_name" => "arrows",
|
395 |
+
"description" => __( "Display prev and next arrows", "perfect-woocommerce-brands" )
|
396 |
+
),
|
397 |
+
array(
|
398 |
+
"type" => "dropdown",
|
399 |
+
"heading" => __( "Brand logo size", "perfect-woocommerce-brands" ),
|
400 |
+
"param_name" => "image_size",
|
401 |
+
"admin_label" => true,
|
402 |
+
"value" => $available_image_sizes_adapted
|
403 |
+
)
|
404 |
+
)
|
405 |
+
|
406 |
+
|
407 |
+
));
|
408 |
+
|
409 |
+
vc_map(array(
|
410 |
+
"name" => __( "PWB All brands", "perfect-woocommerce-brands" ),
|
411 |
+
"description" => __( "Show all brands", "perfect-woocommerce-brands" ),
|
412 |
+
"base" => "pwb-all-brands",
|
413 |
+
"class" => "",
|
414 |
+
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
415 |
+
"category" => "WooCommerce",
|
416 |
+
"params" => array(
|
417 |
+
array(
|
418 |
+
"type" => "textfield",
|
419 |
+
"holder" => "div",
|
420 |
+
"heading" => __( "Brands per page", "perfect-woocommerce-brands" ),
|
421 |
+
"param_name" => "per_page",
|
422 |
+
"value" => "10",
|
423 |
+
"description" => __( "Show x brands per page", "perfect-woocommerce-brands" )
|
424 |
+
),
|
425 |
+
array(
|
426 |
+
"type" => "dropdown",
|
427 |
+
"heading" => __( "Brand logo size", "perfect-woocommerce-brands" ),
|
428 |
+
"param_name" => "image_size",
|
429 |
+
"admin_label" => true,
|
430 |
+
"value" => $available_image_sizes_adapted
|
431 |
+
),
|
432 |
+
array(
|
433 |
+
"type" => "checkbox",
|
434 |
+
"holder" => "div",
|
435 |
+
"heading" => __( "Hide empty", "perfect-woocommerce-brands" ),
|
436 |
+
"param_name" => "hide_empty",
|
437 |
+
"description" => __( "Hide brands that have not been assigned to any product", "perfect-woocommerce-brands" )
|
438 |
+
)
|
439 |
+
)
|
440 |
+
|
441 |
+
|
442 |
+
));
|
443 |
+
|
444 |
+
vc_map(array(
|
445 |
+
"name" => __( "PWB brand", "perfect-woocommerce-brands" ),
|
446 |
+
"description" => __( "Show brand for a specific product", "perfect-woocommerce-brands" ),
|
447 |
+
"base" => "pwb-brand",
|
448 |
+
"class" => "",
|
449 |
+
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
450 |
+
"category" => "WooCommerce",
|
451 |
+
|
452 |
+
"params" => array(
|
453 |
+
array(
|
454 |
+
"type" => "textfield",
|
455 |
+
"holder" => "div",
|
456 |
+
"heading" => __( "Product id", "perfect-woocommerce-brands" ),
|
457 |
+
"param_name" => "product_id",
|
458 |
+
"value" => null,
|
459 |
+
"description" => __( "Product id (post id)", "perfect-woocommerce-brands" )
|
460 |
+
),
|
461 |
+
array(
|
462 |
+
"type" => "dropdown",
|
463 |
+
"heading" => __( "Brand logo size", "perfect-woocommerce-brands" ),
|
464 |
+
"param_name" => "image_size",
|
465 |
+
"admin_label" => true,
|
466 |
+
"value" => $available_image_sizes_adapted
|
467 |
+
)
|
468 |
+
|
469 |
+
)
|
470 |
+
|
471 |
+
|
472 |
+
));
|
473 |
+
}
|
474 |
+
|
475 |
+
public function action_woocommerce_single_product_summary() {
|
476 |
+
$brands = wp_get_post_terms( get_the_ID(), 'pwb-brand');
|
477 |
+
|
478 |
+
if(!is_wp_error($brands)){
|
479 |
+
|
480 |
+
if(sizeof($brands>0)){
|
481 |
+
|
482 |
+
$show_as = get_option( 'wc_pwb_admin_tab_brands_in_single' );
|
483 |
+
|
484 |
+
if( $show_as!='no' ){
|
485 |
+
|
486 |
+
echo '<div class="pwb-single-product-brands pwb-clearfix">';
|
487 |
+
foreach($brands as $brand){
|
488 |
+
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
489 |
+
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
490 |
+
|
491 |
+
$image_size = 'thumbnail';
|
492 |
+
$image_size_selected = get_option('wc_pwb_admin_tab_brand_logo_size');
|
493 |
+
if($image_size_selected!=false){
|
494 |
+
$image_size = $image_size_selected;
|
495 |
+
}
|
496 |
+
|
497 |
+
$attachment_html = wp_get_attachment_image($attachment_id,$image_size);
|
498 |
+
if( !empty($attachment_html) && $show_as=='brand_image' ){
|
499 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$attachment_html.'</a>';
|
500 |
+
}else{
|
501 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$brand->name.'</a>';
|
502 |
+
}
|
503 |
+
}
|
504 |
+
echo '</div>';
|
505 |
+
|
506 |
+
}
|
507 |
+
|
508 |
+
}
|
509 |
+
|
510 |
+
}
|
511 |
+
|
512 |
+
}
|
513 |
+
|
514 |
+
public function register_frontend_scripts(){
|
515 |
+
|
516 |
+
wp_register_script(
|
517 |
+
'pwb_slick_lib',
|
518 |
+
PWB_PLUGIN . '/assets/js/slick/slick.min.js',
|
519 |
+
array('jquery'),
|
520 |
+
'1.5.9',
|
521 |
+
true
|
522 |
+
);
|
523 |
+
wp_enqueue_script('pwb_frontend_functions');
|
524 |
+
|
525 |
+
wp_enqueue_style (
|
526 |
+
'pwb_slick_lib',
|
527 |
+
PWB_PLUGIN . '/assets/js/slick/slick.css',
|
528 |
+
array(),
|
529 |
+
'1.5.9',
|
530 |
+
'all'
|
531 |
+
);
|
532 |
+
|
533 |
+
wp_enqueue_style (
|
534 |
+
'pwb_frontend_styles',
|
535 |
+
PWB_PLUGIN . '/assets/css/styles-frontend.css',
|
536 |
+
array('pwb_slick_lib'),
|
537 |
+
PWB_PLUGIN_VERSION,
|
538 |
+
'all'
|
539 |
+
);
|
540 |
+
|
541 |
+
wp_register_script(
|
542 |
+
'pwb_frontend_functions',
|
543 |
+
PWB_PLUGIN . '/assets/js/pwb_frontend_functions.js',
|
544 |
+
array('jquery','pwb_slick_lib'),
|
545 |
+
PWB_PLUGIN_VERSION,
|
546 |
+
true
|
547 |
+
);
|
548 |
+
wp_enqueue_script('pwb_frontend_functions');
|
549 |
+
|
550 |
+
}
|
551 |
+
|
552 |
+
public function register_admin_scripts($hook){
|
553 |
+
$screen = get_current_screen();
|
554 |
+
|
555 |
+
wp_register_style('pwb_styles_brands', plugins_url('perfect-woocommerce-brands/assets/css/styles-admin.css'), array(), PWB_PLUGIN_VERSION);
|
556 |
+
wp_register_script('pwb_brands_js', plugins_url('perfect-woocommerce-brands/assets/js/pwb_admin_functions.js'), array('jquery'), PWB_PLUGIN_VERSION, true);
|
557 |
+
|
558 |
+
if ($hook == 'edit-tags.php' && $screen->taxonomy == 'pwb-brand' || $hook == 'term.php' && $screen->taxonomy == 'pwb-brand') {
|
559 |
+
wp_enqueue_media();
|
560 |
+
}
|
561 |
+
|
562 |
+
wp_enqueue_style( 'pwb_styles_brands' );
|
563 |
+
wp_enqueue_script( 'pwb_brands_js' );
|
564 |
+
wp_localize_script( 'pwb_brands_js', 'ajax_object', array(
|
565 |
+
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
566 |
+
'brands_url' => admin_url( 'edit-tags.php?taxonomy=pwb-brand&post_type=product' ),
|
567 |
+
'translations' => array(
|
568 |
+
'migrate_notice' => __('¿Start migration?','perfect-woocommerce-brands'),
|
569 |
+
'migrating' => __('We are migrating the product brands. ¡Don´t close this window until the process is finished!','perfect-woocommerce-brands')
|
570 |
+
)
|
571 |
+
) );
|
572 |
+
|
573 |
+
}
|
574 |
+
|
575 |
+
public function register_brands_taxonomy(){
|
576 |
+
$labels = array(
|
577 |
+
'name' => __( 'Brands', 'perfect-woocommerce-brands' ),
|
578 |
+
'singular_name' => __( 'Brand', 'perfect-woocommerce-brands' ),
|
579 |
+
'menu_name' => __( 'Brands', 'perfect-woocommerce-brands' ),
|
580 |
+
'all_items' => __( 'All Brands', 'perfect-woocommerce-brands' ),
|
581 |
+
'edit_item' => __( 'Edit Brand', 'perfect-woocommerce-brands' ),
|
582 |
+
'view_item' => __( 'View Brand', 'perfect-woocommerce-brands' ),
|
583 |
+
'update_item' => __( 'Update Brand', 'perfect-woocommerce-brands' ),
|
584 |
+
'add_new_item' => __( 'Add New Brand', 'perfect-woocommerce-brands' ),
|
585 |
+
'new_item_name' => __( 'New Brand Name', 'perfect-woocommerce-brands' ),
|
586 |
+
'parent_item' => __( 'Parent Brand', 'perfect-woocommerce-brands' ),
|
587 |
+
'parent_item_colon' => __( 'Parent Brand:', 'perfect-woocommerce-brands' ),
|
588 |
+
'search_items' => __( 'Search Brands', 'perfect-woocommerce-brands' ),
|
589 |
+
'popular_items' => __( 'Popular Brands', 'perfect-woocommerce-brands' ),
|
590 |
+
'separate_items_with_commas' => __( 'Separate brands with commas', 'perfect-woocommerce-brands' ),
|
591 |
+
'add_or_remove_items' => __( 'Add or remove brands', 'perfect-woocommerce-brands' ),
|
592 |
+
'choose_from_most_used' => __( 'Choose from the most used brands', 'perfect-woocommerce-brands' ),
|
593 |
+
'not_found' => __( 'No brands found', 'perfect-woocommerce-brands' )
|
594 |
+
);
|
595 |
+
|
596 |
+
$new_slug = get_option('wc_pwb_admin_tab_slug');
|
597 |
+
$old_slug = get_option('old_wc_pwb_admin_tab_slug');
|
598 |
+
|
599 |
+
$new_slug = ($new_slug!=false) ? $new_slug : 'brand';
|
600 |
+
$old_slug = ($old_slug!=false) ? $old_slug : 'null';
|
601 |
+
|
602 |
+
$args = array(
|
603 |
+
'hierarchical' => true,
|
604 |
+
'labels' => $labels,
|
605 |
+
'show_ui' => true,
|
606 |
+
'query_var' => true,
|
607 |
+
'public' => true,
|
608 |
+
'show_admin_column' => true,
|
609 |
+
'rewrite' => array(
|
610 |
+
'slug' => $new_slug,
|
611 |
+
'hierarchical' => true,
|
612 |
+
'ep_mask' => EP_PERMALINK
|
613 |
+
)
|
614 |
+
);
|
615 |
+
|
616 |
+
register_taxonomy( 'pwb-brand', array( 'product' ), $args );
|
617 |
+
|
618 |
+
if($new_slug != false && $old_slug!= false && $new_slug != $old_slug){
|
619 |
+
flush_rewrite_rules();
|
620 |
+
update_option( 'old_wc_pwb_admin_tab_slug', $new_slug );
|
621 |
+
}
|
622 |
+
|
623 |
+
}
|
624 |
+
|
625 |
+
public function add_brands_metafields(){
|
626 |
+
register_meta( 'term', 'pwb_brand_image', array($this,'add_brands_metafields_sanitize') );
|
627 |
+
}
|
628 |
+
|
629 |
+
public function add_brands_metafields_sanitize($brand_img){
|
630 |
+
return $brand_img;
|
631 |
+
}
|
632 |
+
|
633 |
+
public function add_brands_metafields_form(){
|
634 |
+
ob_start();
|
635 |
+
?>
|
636 |
+
<div class="form-field pwb_brand_cont">
|
637 |
+
<label for="pwb_brand_image"><?php _e( 'Brand logo', 'perfect-woocommerce-brands' ); ?></label>
|
638 |
+
<input type="text" name="pwb_brand_image" id="pwb_brand_image" value="" >
|
639 |
+
<a href="#" id="pwb_brand_image_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
640 |
+
</div>
|
641 |
+
|
642 |
+
<div class="form-field pwb_brand_cont">
|
643 |
+
<label for="pwb_brand_banner"><?php _e( 'Brand banner', 'perfect-woocommerce-brands' ); ?></label>
|
644 |
+
<input type="text" name="pwb_brand_banner" id="pwb_brand_banner" value="" >
|
645 |
+
<a href="#" id="pwb_brand_banner_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
646 |
+
<p><?php _e( 'This image will be shown on brand page', 'perfect-woocommerce-brands' ); ?></p>
|
647 |
+
</div>
|
648 |
+
|
649 |
+
<div class="form-field pwb_brand_cont">
|
650 |
+
<label for="pwb_brand_banner_link"><?php _e( 'Brand banner link', 'perfect-woocommerce-brands' ); ?></label>
|
651 |
+
<input type="text" name="pwb_brand_banner_link" id="pwb_brand_banner_link" value="" >
|
652 |
+
<p><?php _e( 'This link should be relative to site url. Example: product/product-name', 'perfect-woocommerce-brands' ); ?></p>
|
653 |
+
</div>
|
654 |
+
|
655 |
+
<?php echo wp_nonce_field( basename( __FILE__ ), 'pwb_nonce' ); ?>
|
656 |
+
|
657 |
+
<?php
|
658 |
+
echo ob_get_clean();
|
659 |
+
}
|
660 |
+
|
661 |
+
public function add_brands_metafields_form_edit($term){
|
662 |
+
$term_value_image = get_term_meta( $term->term_id, 'pwb_brand_image', true );
|
663 |
+
$term_value_banner = get_term_meta( $term->term_id, 'pwb_brand_banner', true );
|
664 |
+
$term_value_banner_link = get_term_meta( $term->term_id, 'pwb_brand_banner_link', true );
|
665 |
+
ob_start();
|
666 |
+
?>
|
667 |
+
<table class="form-table pwb_brand_cont">
|
668 |
+
<tr class="form-field">
|
669 |
+
<th>
|
670 |
+
<label for="pwb_brand_image"><?php _e( 'Brand logo', 'perfect-woocommerce-brands' ); ?></label>
|
671 |
+
</th>
|
672 |
+
<td>
|
673 |
+
<input type="text" name="pwb_brand_image" id="pwb_brand_image" value="<?php echo $term_value_image;?>" >
|
674 |
+
<a href="#" id="pwb_brand_image_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
675 |
+
|
676 |
+
<?php $current_image = wp_get_attachment_image ( $term_value_image, array('90','90'), false ); ?>
|
677 |
+
<?php if( !empty($current_image) ): ?>
|
678 |
+
<div class="pwb_brand_image_selected">
|
679 |
+
<span>
|
680 |
+
<?php echo $current_image;?>
|
681 |
+
<a href="#" class="pwb_brand_image_selected_remove">X</a>
|
682 |
+
</span>
|
683 |
+
</div>
|
684 |
+
<?php endif; ?>
|
685 |
+
|
686 |
+
</td>
|
687 |
+
</tr>
|
688 |
+
<tr class="form-field">
|
689 |
+
<th>
|
690 |
+
<label for="pwb_brand_banner"><?php _e( 'Brand banner', 'perfect-woocommerce-brands' ); ?></label>
|
691 |
+
</th>
|
692 |
+
<td>
|
693 |
+
<input type="text" name="pwb_brand_banner" id="pwb_brand_banner" value="<?php echo $term_value_banner;?>" >
|
694 |
+
<a href="#" id="pwb_brand_banner_select" class="button"><?php _e('Select image','perfect-woocommerce-brands');?></a>
|
695 |
+
|
696 |
+
<?php $current_image = wp_get_attachment_image ( $term_value_banner, array('90','90'), false ); ?>
|
697 |
+
<?php if( !empty($current_image) ): ?>
|
698 |
+
<div class="pwb_brand_image_selected">
|
699 |
+
<span>
|
700 |
+
<?php echo $current_image;?>
|
701 |
+
<a href="#" class="pwb_brand_image_selected_remove">X</a>
|
702 |
+
</span>
|
703 |
+
</div>
|
704 |
+
<?php endif; ?>
|
705 |
+
|
706 |
+
</td>
|
707 |
+
</tr>
|
708 |
+
<tr class="form-field">
|
709 |
+
<th>
|
710 |
+
<label for="pwb_brand_banner_link"><?php _e( 'Brand banner link', 'perfect-woocommerce-brands' ); ?></label>
|
711 |
+
</th>
|
712 |
+
<td>
|
713 |
+
<input type="text" name="pwb_brand_banner_link" id="pwb_brand_banner_link" value="<?php echo $term_value_banner_link;?>" >
|
714 |
+
<p class="description"><?php _e( 'This link should be relative to site url. Example: product/product-name', 'perfect-woocommerce-brands' ); ?></p>
|
715 |
+
<div id="pwb_brand_banner_link_result"><?php echo wp_get_attachment_image ( $term_value_banner_link, array('90','90'), false );?></div>
|
716 |
+
</td>
|
717 |
+
</tr>
|
718 |
+
</table>
|
719 |
+
|
720 |
+
<?php echo wp_nonce_field( basename( __FILE__ ), 'pwb_nonce' );?>
|
721 |
+
|
722 |
+
<?php
|
723 |
+
echo ob_get_clean();
|
724 |
+
}
|
725 |
+
|
726 |
+
public function add_brands_metafields_save( $term_id ){
|
727 |
+
|
728 |
+
if ( ! isset( $_POST['pwb_nonce'] ) || ! wp_verify_nonce( $_POST['pwb_nonce'], basename( __FILE__ ) ) )
|
729 |
+
return;
|
730 |
+
|
731 |
+
/* ·············· Brand image ·············· */
|
732 |
+
$old_img = get_term_meta( $term_id, 'pwb_brand_image', true );
|
733 |
+
$new_img = isset( $_POST['pwb_brand_image'] ) ? $_POST['pwb_brand_image'] : '';
|
734 |
+
|
735 |
+
if ( $old_img && '' === $new_img )
|
736 |
+
delete_term_meta( $term_id, 'pwb_brand_image' );
|
737 |
+
|
738 |
+
else if ( $old_img !== $new_img )
|
739 |
+
update_term_meta( $term_id, 'pwb_brand_image', $new_img );
|
740 |
+
/* ·············· /Brand image ·············· */
|
741 |
+
|
742 |
+
/* ·············· Brand banner ·············· */
|
743 |
+
$old_img = get_term_meta( $term_id, 'pwb_brand_banner', true );
|
744 |
+
$new_img = isset( $_POST['pwb_brand_banner'] ) ? $_POST['pwb_brand_banner'] : '';
|
745 |
+
|
746 |
+
if ( $old_img && '' === $new_img )
|
747 |
+
delete_term_meta( $term_id, 'pwb_brand_banner' );
|
748 |
+
|
749 |
+
else if ( $old_img !== $new_img )
|
750 |
+
update_term_meta( $term_id, 'pwb_brand_banner', $new_img );
|
751 |
+
/* ·············· /Brand banner ·············· */
|
752 |
+
|
753 |
+
/* ·············· Brand banner link ·············· */
|
754 |
+
$old_img = get_term_meta( $term_id, 'pwb_brand_banner_link', true );
|
755 |
+
$new_img = isset( $_POST['pwb_brand_banner_link'] ) ? $_POST['pwb_brand_banner_link'] : '';
|
756 |
+
|
757 |
+
if ( $old_img && '' === $new_img )
|
758 |
+
delete_term_meta( $term_id, 'pwb_brand_banner_link' );
|
759 |
+
|
760 |
+
else if ( $old_img !== $new_img )
|
761 |
+
update_term_meta( $term_id, 'pwb_brand_banner_link', $new_img );
|
762 |
+
/* ·············· /Brand banner link ·············· */
|
763 |
+
}
|
764 |
+
|
765 |
+
public function brand_taxonomy_columns_head($defaults) {
|
766 |
+
$newColumns = array(
|
767 |
+
'cb' => $defaults['cb'],
|
768 |
+
'logo' => __( 'Logo', 'perfect-woocommerce-brands' )
|
769 |
+
);
|
770 |
+
|
771 |
+
unset($defaults['description']);
|
772 |
+
unset($defaults['cb']);
|
773 |
+
|
774 |
+
return array_merge($newColumns,$defaults);
|
775 |
+
}
|
776 |
+
|
777 |
+
public function brand_taxonomy_columns($c, $column_name, $term_id){
|
778 |
+
$image = wp_get_attachment_image( get_term_meta( $term_id, 'pwb_brand_image', 1 ), array('60','60') );
|
779 |
+
if($image){
|
780 |
+
return $image;
|
781 |
+
}else{
|
782 |
+
return "-";
|
783 |
+
}
|
784 |
+
}
|
785 |
+
|
786 |
+
public static function get_brands( $hide_empty = false ){
|
787 |
+
$result = array();
|
788 |
+
|
789 |
+
$brands = get_terms('pwb-brand',array(
|
790 |
+
'hide_empty' => $hide_empty
|
791 |
+
));
|
792 |
+
|
793 |
+
if(is_array($brands) && count($brands)>0){
|
794 |
+
$result = $brands;
|
795 |
+
}
|
796 |
+
|
797 |
+
return $result;
|
798 |
+
|
799 |
+
}
|
800 |
+
|
801 |
+
public static function get_brands_array(){
|
802 |
+
$result = array();
|
803 |
+
$result[0] = 'all';
|
804 |
+
|
805 |
+
$brands = get_terms('pwb-brand',array(
|
806 |
+
'hide_empty' => false
|
807 |
+
));
|
808 |
+
|
809 |
+
foreach ($brands as $brand) {
|
810 |
+
$result[$brand->term_id] = $brand->slug;
|
811 |
+
}
|
812 |
+
|
813 |
+
return $result;
|
814 |
+
|
815 |
+
}
|
816 |
+
|
817 |
+
public static function get_products_by_brand($brand_id, $count){
|
818 |
+
|
819 |
+
if($brand_id === 'all'){
|
820 |
+
$args = array(
|
821 |
+
'post_type' => 'product',
|
822 |
+
'posts_per_page' => $count,
|
823 |
+
'paged' => false
|
824 |
+
);
|
825 |
+
}else{
|
826 |
+
$args = array(
|
827 |
+
'post_type' => 'product',
|
828 |
+
'tax_query' => array(
|
829 |
+
array(
|
830 |
+
'taxonomy' => 'pwb-brand',
|
831 |
+
'field' => 'slug',
|
832 |
+
'terms' => $brand_id,
|
833 |
+
)
|
834 |
+
),
|
835 |
+
'posts_per_page' => $count,
|
836 |
+
'paged' => false
|
837 |
+
);
|
838 |
+
}
|
839 |
+
|
840 |
+
ob_start();
|
841 |
+
|
842 |
+
$loop = new \WP_Query( $args );
|
843 |
+
if ( $loop->have_posts() && function_exists('get_product') && function_exists('woocommerce_template_loop_add_to_cart') && function_exists('woocommerce_get_product_thumbnail') ) {
|
844 |
+
while ( $loop->have_posts() ) : $loop->the_post();
|
845 |
+
$product = get_product( get_the_ID() );
|
846 |
+
|
847 |
+
echo '<div>';
|
848 |
+
echo '<a href="'.get_the_permalink().'">';
|
849 |
+
echo woocommerce_get_product_thumbnail();
|
850 |
+
echo '<h3>'.$product->post->post_title.'</h3>';
|
851 |
+
echo '<span class="pwb-amount">'.$product->get_price_html().'</span>';
|
852 |
+
woocommerce_template_loop_add_to_cart();
|
853 |
+
echo '</a>';
|
854 |
+
echo '</div>';
|
855 |
+
|
856 |
+
endwhile;
|
857 |
+
} else {
|
858 |
+
echo __( 'No products found', 'perfect-woocommerce-brands' );
|
859 |
+
}
|
860 |
+
wp_reset_postdata();
|
861 |
+
|
862 |
+
return ob_get_clean();
|
863 |
+
|
864 |
+
}
|
865 |
+
|
866 |
+
public function archive_page_banner(){
|
867 |
+
$queried_object = get_queried_object();
|
868 |
+
|
869 |
+
if(is_a($queried_object,'WP_Term') && $queried_object->taxonomy == 'pwb-brand'){
|
870 |
+
//pwb-brand archive
|
871 |
+
$brand_banner = get_term_meta( $queried_object->term_id, 'pwb_brand_banner', true );
|
872 |
+
$brand_banner_link = get_term_meta( $queried_object->term_id, 'pwb_brand_banner_link', true );
|
873 |
+
if($brand_banner!=''){
|
874 |
+
echo '<div class="pwb-brand-banner pwb-clearfix">';
|
875 |
+
if($brand_banner_link!=''){
|
876 |
+
echo '<a href="'.site_url($brand_banner_link).'">'.wp_get_attachment_image ( $brand_banner, 'full', false ).'</a>';
|
877 |
+
}else{
|
878 |
+
echo wp_get_attachment_image ( $brand_banner, 'full', false );
|
879 |
+
}
|
880 |
+
echo '</div>';
|
881 |
+
}
|
882 |
+
}
|
883 |
+
|
884 |
+
}
|
885 |
+
|
886 |
+
}
|
classes/class-pwb-admin-tab.php
CHANGED
@@ -1,165 +1,177 @@
|
|
1 |
-
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands\Admin;
|
3 |
-
|
4 |
-
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
-
|
6 |
-
class Pwb_Admin_Tab {
|
7 |
-
|
8 |
-
public static function init() {
|
9 |
-
add_filter( 'woocommerce_settings_tabs_array', __CLASS__ . '::add_settings_tab', 50 );
|
10 |
-
add_action( 'woocommerce_settings_tabs_pwb_admin_tab', __CLASS__ . '::settings_tab' );
|
11 |
-
add_action( 'woocommerce_update_options_pwb_admin_tab', __CLASS__ . '::update_settings' );
|
12 |
-
}
|
13 |
-
|
14 |
-
/**
|
15 |
-
* Add a new settings tab to the WooCommerce settings tabs array.
|
16 |
-
*
|
17 |
-
* @param array $settings_tabs Array of WooCommerce setting tabs & their labels, excluding the Subscription tab.
|
18 |
-
* @return array $settings_tabs Array of WooCommerce setting tabs & their labels, including the Subscription tab.
|
19 |
-
*/
|
20 |
-
public static function add_settings_tab( $settings_tabs ) {
|
21 |
-
$settings_tabs['pwb_admin_tab'] = __( 'Brands', 'perfect-woocommerce-brands' );
|
22 |
-
return $settings_tabs;
|
23 |
-
}
|
24 |
-
|
25 |
-
|
26 |
-
/**
|
27 |
-
* Uses the WooCommerce admin fields API to output settings via the @see woocommerce_admin_fields() function.
|
28 |
-
*
|
29 |
-
* @uses woocommerce_admin_fields()
|
30 |
-
* @uses self::get_settings()
|
31 |
-
*/
|
32 |
-
public static function settings_tab() {
|
33 |
-
woocommerce_admin_fields( self::get_settings() );
|
34 |
-
woocommerce_admin_fields( self::get_tools() );
|
35 |
-
}
|
36 |
-
|
37 |
-
|
38 |
-
/**
|
39 |
-
* Uses the WooCommerce options API to save settings via the @see woocommerce_update_options() function.
|
40 |
-
*
|
41 |
-
* @uses woocommerce_update_options()
|
42 |
-
* @uses self::get_settings()
|
43 |
-
*/
|
44 |
-
public static function update_settings() {
|
45 |
-
update_option( 'old_wc_pwb_admin_tab_slug', get_taxonomy('pwb-brand')->rewrite['slug'] );
|
46 |
-
|
47 |
-
if(isset($_POST['wc_pwb_admin_tab_slug'])){
|
48 |
-
$_POST['wc_pwb_admin_tab_slug'] = sanitize_title($_POST['wc_pwb_admin_tab_slug']);
|
49 |
-
}
|
50 |
-
|
51 |
-
woocommerce_update_options( self::get_settings() );
|
52 |
-
|
53 |
-
}
|
54 |
-
|
55 |
-
|
56 |
-
/**
|
57 |
-
* Get all the settings for this plugin for @see woocommerce_admin_fields() function.
|
58 |
-
*
|
59 |
-
* @return array Array of settings for @see woocommerce_admin_fields() function.
|
60 |
-
*/
|
61 |
-
public static function get_settings() {
|
62 |
-
|
63 |
-
$available_image_sizes_adapted = array();
|
64 |
-
$available_image_sizes = get_intermediate_image_sizes();
|
65 |
-
|
66 |
-
foreach($available_image_sizes as $image_size){
|
67 |
-
$available_image_sizes_adapted[$image_size] = $image_size;
|
68 |
-
}
|
69 |
-
|
70 |
-
$settings = array(
|
71 |
-
'section_title' => array(
|
72 |
-
'name' => __( 'Brands settings', 'perfect-woocommerce-brands' ),
|
73 |
-
'type' => 'title',
|
74 |
-
'desc' => '',
|
75 |
-
'id' => 'wc_pwb_admin_tab_section_title'
|
76 |
-
),
|
77 |
-
'slug' => array(
|
78 |
-
'name' => __( 'Slug', 'perfect-woocommerce-brands' ),
|
79 |
-
'type' => 'text',
|
80 |
-
'desc' => __( 'Brands taxonomy slug', 'perfect-woocommerce-brands' ),
|
81 |
-
'id' => 'wc_pwb_admin_tab_slug',
|
82 |
-
'placeholder' => get_taxonomy('pwb-brand')->rewrite['slug']
|
83 |
-
),
|
84 |
-
'
|
85 |
-
'name' => __( '
|
86 |
-
'type' => '
|
87 |
-
'
|
88 |
-
'
|
89 |
-
'
|
90 |
-
),
|
91 |
-
'
|
92 |
-
'name'
|
93 |
-
'type'
|
94 |
-
'desc'
|
95 |
-
'id'
|
96 |
-
'options' => array(
|
97 |
-
'
|
98 |
-
'
|
99 |
-
'
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
'
|
108 |
-
'
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
'
|
116 |
-
'
|
117 |
-
'
|
118 |
-
'
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
)
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Perfect_Woocommerce_Brands\Admin;
|
3 |
+
|
4 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
+
|
6 |
+
class Pwb_Admin_Tab {
|
7 |
+
|
8 |
+
public static function init() {
|
9 |
+
add_filter( 'woocommerce_settings_tabs_array', __CLASS__ . '::add_settings_tab', 50 );
|
10 |
+
add_action( 'woocommerce_settings_tabs_pwb_admin_tab', __CLASS__ . '::settings_tab' );
|
11 |
+
add_action( 'woocommerce_update_options_pwb_admin_tab', __CLASS__ . '::update_settings' );
|
12 |
+
}
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Add a new settings tab to the WooCommerce settings tabs array.
|
16 |
+
*
|
17 |
+
* @param array $settings_tabs Array of WooCommerce setting tabs & their labels, excluding the Subscription tab.
|
18 |
+
* @return array $settings_tabs Array of WooCommerce setting tabs & their labels, including the Subscription tab.
|
19 |
+
*/
|
20 |
+
public static function add_settings_tab( $settings_tabs ) {
|
21 |
+
$settings_tabs['pwb_admin_tab'] = __( 'Brands', 'perfect-woocommerce-brands' );
|
22 |
+
return $settings_tabs;
|
23 |
+
}
|
24 |
+
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Uses the WooCommerce admin fields API to output settings via the @see woocommerce_admin_fields() function.
|
28 |
+
*
|
29 |
+
* @uses woocommerce_admin_fields()
|
30 |
+
* @uses self::get_settings()
|
31 |
+
*/
|
32 |
+
public static function settings_tab() {
|
33 |
+
woocommerce_admin_fields( self::get_settings() );
|
34 |
+
woocommerce_admin_fields( self::get_tools() );
|
35 |
+
}
|
36 |
+
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Uses the WooCommerce options API to save settings via the @see woocommerce_update_options() function.
|
40 |
+
*
|
41 |
+
* @uses woocommerce_update_options()
|
42 |
+
* @uses self::get_settings()
|
43 |
+
*/
|
44 |
+
public static function update_settings() {
|
45 |
+
update_option( 'old_wc_pwb_admin_tab_slug', get_taxonomy('pwb-brand')->rewrite['slug'] );
|
46 |
+
|
47 |
+
if(isset($_POST['wc_pwb_admin_tab_slug'])){
|
48 |
+
$_POST['wc_pwb_admin_tab_slug'] = sanitize_title($_POST['wc_pwb_admin_tab_slug']);
|
49 |
+
}
|
50 |
+
|
51 |
+
woocommerce_update_options( self::get_settings() );
|
52 |
+
|
53 |
+
}
|
54 |
+
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Get all the settings for this plugin for @see woocommerce_admin_fields() function.
|
58 |
+
*
|
59 |
+
* @return array Array of settings for @see woocommerce_admin_fields() function.
|
60 |
+
*/
|
61 |
+
public static function get_settings() {
|
62 |
+
|
63 |
+
$available_image_sizes_adapted = array();
|
64 |
+
$available_image_sizes = get_intermediate_image_sizes();
|
65 |
+
|
66 |
+
foreach($available_image_sizes as $image_size){
|
67 |
+
$available_image_sizes_adapted[$image_size] = $image_size;
|
68 |
+
}
|
69 |
+
|
70 |
+
$settings = array(
|
71 |
+
'section_title' => array(
|
72 |
+
'name' => __( 'Brands settings', 'perfect-woocommerce-brands' ),
|
73 |
+
'type' => 'title',
|
74 |
+
'desc' => '',
|
75 |
+
'id' => 'wc_pwb_admin_tab_section_title'
|
76 |
+
),
|
77 |
+
'slug' => array(
|
78 |
+
'name' => __( 'Slug', 'perfect-woocommerce-brands' ),
|
79 |
+
'type' => 'text',
|
80 |
+
'desc' => __( 'Brands taxonomy slug', 'perfect-woocommerce-brands' ),
|
81 |
+
'id' => 'wc_pwb_admin_tab_slug',
|
82 |
+
'placeholder' => get_taxonomy('pwb-brand')->rewrite['slug']
|
83 |
+
),
|
84 |
+
'brand_description' => array(
|
85 |
+
'name' => __( 'Show brand description', 'perfect-woocommerce-brands' ),
|
86 |
+
'type' => 'checkbox',
|
87 |
+
'default' => 'yes',
|
88 |
+
'desc' => __( 'Show brand description (if is set) on brand archive page', 'perfect-woocommerce-brands' ),
|
89 |
+
'id' => 'wc_pwb_admin_tab_brand_desc'
|
90 |
+
),
|
91 |
+
'show_brand_on_loop' => array(
|
92 |
+
'name' => __( 'Show brands in loop', 'perfect-woocommerce-brands' ),
|
93 |
+
'type' => 'select',
|
94 |
+
'desc' => __( 'Show brand logo (or name) in product loop', 'perfect-woocommerce-brands' ),
|
95 |
+
'id' => 'wc_pwb_admin_tab_brands_in_loop',
|
96 |
+
'options' => array(
|
97 |
+
'no' => __( 'No', 'perfect-woocommerce-brands' ),
|
98 |
+
'brand_link' => __( 'Show brand link', 'perfect-woocommerce-brands' ),
|
99 |
+
'brand_image' => __( 'Show brand image (if is set)', 'perfect-woocommerce-brands' )
|
100 |
+
)
|
101 |
+
),
|
102 |
+
'show_brand_in_single' => array(
|
103 |
+
'name' => __( 'Show brands in single product', 'perfect-woocommerce-brands' ),
|
104 |
+
'type' => 'select',
|
105 |
+
'desc' => __( 'Show brand logo (or name) in single product', 'perfect-woocommerce-brands' ),
|
106 |
+
'default' => 'brand_image',
|
107 |
+
'id' => 'wc_pwb_admin_tab_brands_in_single',
|
108 |
+
'options' => array(
|
109 |
+
'no' => __( 'No', 'perfect-woocommerce-brands' ),
|
110 |
+
'brand_link' => __( 'Show brand link', 'perfect-woocommerce-brands' ),
|
111 |
+
'brand_image' => __( 'Show brand image (if is set)', 'perfect-woocommerce-brands' )
|
112 |
+
)
|
113 |
+
),
|
114 |
+
'brand_logo_size' => array(
|
115 |
+
'name' => __( 'Brand logo size', 'perfect-woocommerce-brands' ),
|
116 |
+
'type' => 'select',
|
117 |
+
'desc' => __( 'Brand logo size for single product view', 'perfect-woocommerce-brands' ),
|
118 |
+
'id' => 'wc_pwb_admin_tab_brand_logo_size',
|
119 |
+
'options' => $available_image_sizes_adapted
|
120 |
+
),
|
121 |
+
'brand_single_position' => array(
|
122 |
+
'name' => __( 'Brand position', 'perfect-woocommerce-brands' ),
|
123 |
+
'type' => 'select',
|
124 |
+
'desc' => __( 'For single product', 'perfect-woocommerce-brands' ),
|
125 |
+
'id' => 'wc_pwb_admin_tab_brand_single_position',
|
126 |
+
'options' => array(
|
127 |
+
'before_title' => __( 'Before title', 'perfect-woocommerce-brands' ),
|
128 |
+
'after_title' => __( 'After title', 'perfect-woocommerce-brands' ),
|
129 |
+
'after_price' => __( 'After price', 'perfect-woocommerce-brands' ),
|
130 |
+
'after_excerpt' => __( 'After excerpt', 'perfect-woocommerce-brands' ),
|
131 |
+
'after_add_to_cart' => __( 'After add to cart', 'perfect-woocommerce-brands' ),
|
132 |
+
'after_meta' => __( 'After meta', 'perfect-woocommerce-brands' ),
|
133 |
+
'after_sharing' => __( 'After sharing', 'perfect-woocommerce-brands' )
|
134 |
+
)
|
135 |
+
),
|
136 |
+
'section_end' => array(
|
137 |
+
'type' => 'sectionend',
|
138 |
+
'id' => 'wc_pwb_admin_tab_section_end'
|
139 |
+
)
|
140 |
+
);
|
141 |
+
|
142 |
+
return apply_filters( 'wc_pwb_admin_tab_settings', $settings );
|
143 |
+
|
144 |
+
}
|
145 |
+
|
146 |
+
public static function get_tools() {
|
147 |
+
|
148 |
+
$tools = array(
|
149 |
+
'section_title' => array(
|
150 |
+
'name' => __( 'Tools', 'perfect-woocommerce-brands' ),
|
151 |
+
'type' => 'title',
|
152 |
+
'desc' => '',
|
153 |
+
'id' => 'wc_pwb_admin_tab_section_tools_title'
|
154 |
+
),
|
155 |
+
'slug' => array(
|
156 |
+
'name' => __( 'Import brands', 'perfect-woocommerce-brands' ),
|
157 |
+
'type' => 'select',
|
158 |
+
'desc' => __( 'Import brands from other brand plugin. <strong>Both plugins should be installed and active</strong>', 'perfect-woocommerce-brands' ),
|
159 |
+
'id' => 'wc_pwb_admin_tab_tools_migrate',
|
160 |
+
'options' => array(
|
161 |
+
'-' => __( '-', 'perfect-woocommerce-brands' ),
|
162 |
+
'yith' => __( 'YITH WooCommerce Brands Add-On', 'perfect-woocommerce-brands' )
|
163 |
+
)
|
164 |
+
),
|
165 |
+
'section_end' => array(
|
166 |
+
'type' => 'sectionend',
|
167 |
+
'id' => 'wc_pwb_admin_tab_section_tools_end'
|
168 |
+
)
|
169 |
+
);
|
170 |
+
|
171 |
+
return apply_filters( 'wc_pwb_admin_tab_tools_settings', $tools );
|
172 |
+
|
173 |
+
}
|
174 |
+
|
175 |
+
}
|
176 |
+
|
177 |
+
Pwb_Admin_Tab::init();
|
classes/shortcodes/class-pwb-all-brands.php
CHANGED
@@ -1,102 +1,108 @@
|
|
1 |
-
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands\Shortcodes;
|
3 |
-
|
4 |
-
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
-
|
6 |
-
class PWB_All_Brands_Shortcode{
|
7 |
-
|
8 |
-
public static function all_brands_shortcode( $atts ) {
|
9 |
-
|
10 |
-
$atts = shortcode_atts( array(
|
11 |
-
'per_page'
|
12 |
-
'image_size'
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
$
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
$page =
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
//
|
44 |
-
$
|
45 |
-
$
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
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 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Perfect_Woocommerce_Brands\Shortcodes;
|
3 |
+
|
4 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
+
|
6 |
+
class PWB_All_Brands_Shortcode{
|
7 |
+
|
8 |
+
public static function all_brands_shortcode( $atts ) {
|
9 |
+
|
10 |
+
$atts = shortcode_atts( array(
|
11 |
+
'per_page' => "10",
|
12 |
+
'image_size' => "thumbnail",
|
13 |
+
'hide_empty' => false
|
14 |
+
), $atts, 'pwb-all-brands' );
|
15 |
+
|
16 |
+
$hide_empty = true;
|
17 |
+
if($atts['hide_empty']!='true'){
|
18 |
+
$hide_empty = false;
|
19 |
+
}
|
20 |
+
|
21 |
+
ob_start();
|
22 |
+
|
23 |
+
$brands = \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_brands( $hide_empty );
|
24 |
+
?>
|
25 |
+
<div class="pwb-all-brands">
|
26 |
+
<?php static::pagination($brands, $atts['per_page'], $atts['image_size']);?>
|
27 |
+
</div>
|
28 |
+
<?php
|
29 |
+
|
30 |
+
return ob_get_clean();
|
31 |
+
}
|
32 |
+
|
33 |
+
public static function pagination($display_array, $show_per_page, $image_size) {
|
34 |
+
$page = 1;
|
35 |
+
|
36 |
+
if(isset($_GET['pwb-page']) && filter_var($_GET['pwb-page'], FILTER_VALIDATE_INT) == true){
|
37 |
+
$page = $_GET['pwb-page'];
|
38 |
+
}
|
39 |
+
|
40 |
+
$page = $page < 1 ? 1 : $page;
|
41 |
+
|
42 |
+
// start position in the $display_array
|
43 |
+
// +1 is to account for total values.
|
44 |
+
$start = ($page - 1) * ($show_per_page);
|
45 |
+
$offset = $show_per_page;
|
46 |
+
|
47 |
+
$outArray = array_slice($display_array, $start, $offset);
|
48 |
+
|
49 |
+
//pagination links
|
50 |
+
$total_elements = count($display_array);
|
51 |
+
$pages = ((int)$total_elements / (int)$show_per_page);
|
52 |
+
$pages = ceil($pages);
|
53 |
+
if($pages>=1 && $page <= $pages){
|
54 |
+
|
55 |
+
?>
|
56 |
+
<div class="pwb-brands-cols-outer">
|
57 |
+
<?php
|
58 |
+
foreach($outArray as $brand){
|
59 |
+
$brand_id = $brand->term_id;
|
60 |
+
$brand_name = $brand->name;
|
61 |
+
$brand_link = get_term_link($brand_id);
|
62 |
+
|
63 |
+
$attachment_id = get_term_meta( $brand_id, 'pwb_brand_image', 1 );
|
64 |
+
$attachment_html = $brand_name;
|
65 |
+
if($attachment_id!=''){
|
66 |
+
$attachment_html = wp_get_attachment_image($attachment_id,$image_size);
|
67 |
+
}
|
68 |
+
|
69 |
+
?>
|
70 |
+
<div class="pwb-brands-col3">
|
71 |
+
<div>
|
72 |
+
<?php echo $brand_name;?>
|
73 |
+
<small>(<?php echo $brand->count;?>)</small>
|
74 |
+
</div>
|
75 |
+
<div>
|
76 |
+
<a href="<?php echo $brand_link;?>" title="<?php _e( 'View brand', 'perfect-woocommerce-brands' );?>"><?php echo $attachment_html;?></a>
|
77 |
+
</div>
|
78 |
+
</div>
|
79 |
+
<?php
|
80 |
+
}
|
81 |
+
?>
|
82 |
+
</div>
|
83 |
+
<?php
|
84 |
+
$next = $page + 1;
|
85 |
+
$prev = $page - 1;
|
86 |
+
|
87 |
+
echo '<div class="pwb-pagination-wrapper">';
|
88 |
+
if($prev>1){
|
89 |
+
echo '<a href="'.get_the_permalink().'" class="pwb-pagination prev" title="'.__('First page','perfect-woocommerce-brands').'">«</a>';
|
90 |
+
}
|
91 |
+
if($prev>0){
|
92 |
+
echo '<a href="'.get_the_permalink().'?pwb-page='.$prev.'" class="pwb-pagination last" title="'.__('Previous page','perfect-woocommerce-brands').'">‹</a>';
|
93 |
+
}
|
94 |
+
|
95 |
+
if($next<=$pages){
|
96 |
+
echo '<a href="'.get_the_permalink().'?pwb-page='.$next.'" class="pwb-pagination first" title="'.__('Next page','perfect-woocommerce-brands').'">›</a>';
|
97 |
+
}
|
98 |
+
if($next<$pages){
|
99 |
+
echo '<a href="'.get_the_permalink().'?pwb-page='.$pages.'" class="pwb-pagination next" title="'.__('Last page','perfect-woocommerce-brands').'">»</a>';
|
100 |
+
}
|
101 |
+
echo '</div>';
|
102 |
+
|
103 |
+
}else{
|
104 |
+
echo __('No results','perfect-woocommerce-brands');
|
105 |
+
}
|
106 |
+
|
107 |
+
}
|
108 |
+
}
|
classes/shortcodes/class-pwb-brand.php
CHANGED
@@ -1,43 +1,43 @@
|
|
1 |
-
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands\Shortcodes;
|
3 |
-
|
4 |
-
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
-
|
6 |
-
class PWB_Brand_Shortcode{
|
7 |
-
|
8 |
-
public static function brand_shortcode( $atts ) {
|
9 |
-
$atts = shortcode_atts( array(
|
10 |
-
'product_id' => null,
|
11 |
-
'image_size' => 'thumbnail'
|
12 |
-
), $atts, 'pwb-brand' );
|
13 |
-
|
14 |
-
ob_start();
|
15 |
-
|
16 |
-
$brands = wp_get_post_terms( $atts['product_id'], 'pwb-brand');
|
17 |
-
|
18 |
-
if(is_array($brands) && count($brands)>0){
|
19 |
-
|
20 |
-
echo '<div class="pwb-brand-shortcode">';
|
21 |
-
|
22 |
-
foreach($brands as $brand){
|
23 |
-
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
24 |
-
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
25 |
-
|
26 |
-
$attachment_html = wp_get_attachment_image($attachment_id,$atts['image_size']);
|
27 |
-
|
28 |
-
if(!empty($attachment_html)){
|
29 |
-
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$attachment_html.'</a>';
|
30 |
-
}else{
|
31 |
-
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$brand->name.'</a>';
|
32 |
-
}
|
33 |
-
}
|
34 |
-
|
35 |
-
echo '</div>';
|
36 |
-
|
37 |
-
}
|
38 |
-
|
39 |
-
return ob_get_clean();
|
40 |
-
|
41 |
-
}
|
42 |
-
|
43 |
-
}
|
1 |
+
<?php
|
2 |
+
namespace Perfect_Woocommerce_Brands\Shortcodes;
|
3 |
+
|
4 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
+
|
6 |
+
class PWB_Brand_Shortcode{
|
7 |
+
|
8 |
+
public static function brand_shortcode( $atts ) {
|
9 |
+
$atts = shortcode_atts( array(
|
10 |
+
'product_id' => null,
|
11 |
+
'image_size' => 'thumbnail'
|
12 |
+
), $atts, 'pwb-brand' );
|
13 |
+
|
14 |
+
ob_start();
|
15 |
+
|
16 |
+
$brands = wp_get_post_terms( $atts['product_id'], 'pwb-brand');
|
17 |
+
|
18 |
+
if(is_array($brands) && count($brands)>0){
|
19 |
+
|
20 |
+
echo '<div class="pwb-brand-shortcode">';
|
21 |
+
|
22 |
+
foreach($brands as $brand){
|
23 |
+
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
24 |
+
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
25 |
+
|
26 |
+
$attachment_html = wp_get_attachment_image($attachment_id,$atts['image_size']);
|
27 |
+
|
28 |
+
if(!empty($attachment_html)){
|
29 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$attachment_html.'</a>';
|
30 |
+
}else{
|
31 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$brand->name.'</a>';
|
32 |
+
}
|
33 |
+
}
|
34 |
+
|
35 |
+
echo '</div>';
|
36 |
+
|
37 |
+
}
|
38 |
+
|
39 |
+
return ob_get_clean();
|
40 |
+
|
41 |
+
}
|
42 |
+
|
43 |
+
}
|
classes/shortcodes/class-pwb-carousel.php
CHANGED
@@ -1,52 +1,53 @@
|
|
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 |
-
public static function carousel_shortcode( $atts ) {
|
9 |
-
$atts = shortcode_atts( array(
|
10 |
-
'items'
|
11 |
-
'items_to_show'
|
12 |
-
'items_to_scroll'
|
13 |
-
'image_size'
|
14 |
-
'autoplay'
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
$
|
34 |
-
|
35 |
-
|
36 |
-
$
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
|
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 |
+
public static function carousel_shortcode( $atts ) {
|
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 |
+
ob_start();
|
19 |
+
|
20 |
+
$foreach_iterator = 0;
|
21 |
+
|
22 |
+
$autoplay = 'true';
|
23 |
+
if($atts['autoplay']!='true'){
|
24 |
+
$autoplay = 'false';
|
25 |
+
}
|
26 |
+
|
27 |
+
?><div class="pwb-carousel" data-slick='{"slidesToShow": <?php echo (int)$atts['items_to_show'];?>, "slidesToScroll": <?php echo (int)$atts['items_to_scroll'];?>, "autoplay": <?php echo $autoplay;?>, "arrows": <?php echo $arrows;?>}'><?php
|
28 |
+
foreach(\Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_brands() as $brand){
|
29 |
+
if($foreach_iterator>=(int)$atts['items']){
|
30 |
+
break;
|
31 |
+
}
|
32 |
+
|
33 |
+
$brand_id = $brand->term_id;
|
34 |
+
$brand_link = get_term_link($brand_id);
|
35 |
+
|
36 |
+
$attachment_id = get_term_meta( $brand_id, 'pwb_brand_image', 1 );
|
37 |
+
$attachment_html = $brand->name;
|
38 |
+
if($attachment_id!=''){
|
39 |
+
$attachment_html = wp_get_attachment_image($attachment_id,$atts['image_size']);
|
40 |
+
}
|
41 |
+
|
42 |
+
echo '<div>';
|
43 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$attachment_html.'</a>';
|
44 |
+
echo '</div>';
|
45 |
+
|
46 |
+
$foreach_iterator++;
|
47 |
+
}
|
48 |
+
echo '</div>';
|
49 |
+
|
50 |
+
return ob_get_clean();
|
51 |
+
}
|
52 |
+
|
53 |
+
}
|
classes/shortcodes/class-pwb-product-carousel.php
CHANGED
@@ -1,36 +1,41 @@
|
|
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 |
-
public static function product_carousel_shortcode( $atts ) {
|
9 |
-
$atts = shortcode_atts( array(
|
10 |
-
'brand'
|
11 |
-
'products'
|
12 |
-
'products_to_show'
|
13 |
-
'products_to_scroll'
|
14 |
-
'autoplay'
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
}
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
|
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 |
+
public static function product_carousel_shortcode( $atts ) {
|
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 |
+
ob_start();
|
19 |
+
|
20 |
+
if($atts['autoplay']){
|
21 |
+
$autoplay = 'true';
|
22 |
+
}else{
|
23 |
+
$autoplay = 'false';
|
24 |
+
}
|
25 |
+
if($atts['arrows']){
|
26 |
+
$arrows = 'true';
|
27 |
+
}else{
|
28 |
+
$arrows = 'false';
|
29 |
+
}
|
30 |
+
|
31 |
+
?>
|
32 |
+
|
33 |
+
<div class="pwb-product-carousel" data-slick='{"slidesToShow": <?php echo (int)$atts['products_to_show'];?>, "slidesToScroll": <?php echo (int)$atts['products_to_scroll'];?>, "autoplay": <?php echo $autoplay;?>, "arrows": <?php echo $arrows;?>}'>
|
34 |
+
<?php echo \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_products_by_brand($atts['brand'], (int)$atts['products']); ?>
|
35 |
+
</div>
|
36 |
+
|
37 |
+
<?php
|
38 |
+
return ob_get_clean();
|
39 |
+
}
|
40 |
+
|
41 |
+
}
|
classes/widgets/class-pwb-dropdown.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
function __construct(){
|
9 |
$params = array(
|
10 |
'description' => __( 'Adds a brands dropdown to your site', 'perfect-woocommerce-brands' ),
|
11 |
-
'name'
|
12 |
);
|
13 |
parent::__construct('PWB_Dropdown_Widget', '', $params);
|
14 |
}
|
8 |
function __construct(){
|
9 |
$params = array(
|
10 |
'description' => __( 'Adds a brands dropdown to your site', 'perfect-woocommerce-brands' ),
|
11 |
+
'name' => 'PWB: '.__( 'Brands dropdown', 'perfect-woocommerce-brands' )
|
12 |
);
|
13 |
parent::__construct('PWB_Dropdown_Widget', '', $params);
|
14 |
}
|
classes/widgets/class-pwb-filter-by-brand.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
function __construct() {
|
9 |
$params = array(
|
10 |
'description' => __( 'Recommended for product categories or shop page', 'perfect-woocommerce-brands' ),
|
11 |
-
'name'
|
12 |
);
|
13 |
parent::__construct('PWB_Filter_By_Brand_Widget', '', $params);
|
14 |
}
|
@@ -54,7 +54,7 @@
|
|
54 |
if( is_product_category() ){
|
55 |
|
56 |
$cat_id = $cat->term_taxonomy_id;
|
57 |
-
$cat_id_array =
|
58 |
$cat_id_array[] = $cat_id;
|
59 |
|
60 |
$result_brands = array();
|
8 |
function __construct() {
|
9 |
$params = array(
|
10 |
'description' => __( 'Recommended for product categories or shop page', 'perfect-woocommerce-brands' ),
|
11 |
+
'name' => 'PWB: '.__( 'Filter products by brand', 'perfect-woocommerce-brands' )
|
12 |
);
|
13 |
parent::__construct('PWB_Filter_By_Brand_Widget', '', $params);
|
14 |
}
|
54 |
if( is_product_category() ){
|
55 |
|
56 |
$cat_id = $cat->term_taxonomy_id;
|
57 |
+
$cat_id_array = get_term_children( $cat_id, 'product_cat' );
|
58 |
$cat_id_array[] = $cat_id;
|
59 |
|
60 |
$result_brands = array();
|
classes/widgets/class-pwb-list.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
function __construct(){
|
9 |
$params = array(
|
10 |
'description' => __( 'Adds a brands list to your site', 'perfect-woocommerce-brands' ),
|
11 |
-
'name'
|
12 |
);
|
13 |
parent::__construct('PWB_List_Widget', '', $params);
|
14 |
}
|
@@ -18,46 +18,81 @@
|
|
18 |
?>
|
19 |
|
20 |
<p>
|
21 |
-
<label for="<?php echo esc_attr( $this->get_field_id('title') ); ?>"><?php echo __( 'Title', 'perfect-woocommerce-brands' );?></label>
|
22 |
<input
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
<?php
|
|
|
31 |
}
|
32 |
|
33 |
public function widget($args, $instance){
|
34 |
-
extract($args);
|
35 |
-
extract($instance);
|
36 |
|
37 |
echo $before_widget;
|
38 |
|
39 |
-
if(!empty($title)){
|
40 |
echo $before_title . $title . $after_title;
|
41 |
}
|
42 |
|
43 |
-
|
44 |
|
45 |
echo $after_widget;
|
46 |
|
47 |
}
|
48 |
|
49 |
-
private function get_brands(){
|
|
|
50 |
$brands = get_terms('pwb-brand',array(
|
51 |
'hide_empty' => false
|
52 |
));
|
53 |
|
54 |
if(is_array($brands) && count($brands)>0){
|
55 |
-
echo '<ul>';
|
56 |
foreach ($brands as $brand) {
|
57 |
$brand_name = $brand->name;
|
58 |
-
$brand_link = get_term_link($brand->term_id);
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
echo '</li>';
|
62 |
}
|
63 |
echo '</ul>';
|
8 |
function __construct(){
|
9 |
$params = array(
|
10 |
'description' => __( 'Adds a brands list to your site', 'perfect-woocommerce-brands' ),
|
11 |
+
'name' => 'PWB: '.__( 'Brands list', 'perfect-woocommerce-brands' )
|
12 |
);
|
13 |
parent::__construct('PWB_List_Widget', '', $params);
|
14 |
}
|
18 |
?>
|
19 |
|
20 |
<p>
|
21 |
+
<label for="<?php echo esc_attr( $this->get_field_id('title') ); ?>"><?php echo __( 'Title:', 'perfect-woocommerce-brands' );?></label>
|
22 |
<input
|
23 |
+
class="widefat"
|
24 |
+
type="text"
|
25 |
+
id="<?php echo esc_attr( $this->get_field_id('title') ); ?>"
|
26 |
+
name="<?php echo esc_attr( $this->get_field_name('title') ); ?>"
|
27 |
+
value="<?php if(isset($title)) echo esc_attr($title); ?>">
|
28 |
+
</p>
|
29 |
+
<p>
|
30 |
+
<label for="<?php echo esc_attr( $this->get_field_id('display_as') ); ?>"><?php echo __( 'Display as:', 'perfect-woocommerce-brands' );?></label>
|
31 |
+
<select
|
32 |
+
class="widefat pwb-select-display-as"
|
33 |
+
id="<?php echo esc_attr( $this->get_field_id('display_as') ); ?>"
|
34 |
+
name="<?php echo esc_attr( $this->get_field_name('display_as') ); ?>">
|
35 |
+
<option value="brand_name" <?php selected( $display_as, 'brand_name' ); ?>><?php _e( 'Brand name', 'perfect-woocommerce-brands' );?></option>
|
36 |
+
<option value="brand_logo" <?php selected( $display_as, 'brand_logo' ); ?>><?php _e( 'Brand logo', 'perfect-woocommerce-brands' );?></option>
|
37 |
+
</select>
|
38 |
</p>
|
39 |
+
<div class="pwb-display-as-logo<?php echo ($display_as=='brand_logo') ? ' show' : '' ;?>">
|
40 |
+
<p>
|
41 |
+
<label for="<?php echo esc_attr( $this->get_field_id('columns') ); ?>"><?php echo __( 'Columns:', 'perfect-woocommerce-brands' );?></label>
|
42 |
+
<select
|
43 |
+
class="widefat"
|
44 |
+
id="<?php echo esc_attr( $this->get_field_id('columns') ); ?>"
|
45 |
+
name="<?php echo esc_attr( $this->get_field_name('columns') ); ?>">
|
46 |
+
<option value="1" <?php selected( $columns, '1' ); ?>>1</option>
|
47 |
+
<option value="2" <?php selected( $columns, '2' ); ?>>2</option>
|
48 |
+
<option value="3" <?php selected( $columns, '3' ); ?>>3</option>
|
49 |
+
<option value="4" <?php selected( $columns, '4' ); ?>>4</option>
|
50 |
+
</select>
|
51 |
+
</p>
|
52 |
+
</div>
|
53 |
|
54 |
<?php
|
55 |
+
|
56 |
}
|
57 |
|
58 |
public function widget($args, $instance){
|
59 |
+
extract( $args );
|
60 |
+
extract( $instance );
|
61 |
|
62 |
echo $before_widget;
|
63 |
|
64 |
+
if( !empty( $title ) ){
|
65 |
echo $before_title . $title . $after_title;
|
66 |
}
|
67 |
|
68 |
+
PWB_List_Widget::get_brands( $display_as, $columns );
|
69 |
|
70 |
echo $after_widget;
|
71 |
|
72 |
}
|
73 |
|
74 |
+
private static function get_brands( $display_as, $columns ){
|
75 |
+
|
76 |
$brands = get_terms('pwb-brand',array(
|
77 |
'hide_empty' => false
|
78 |
));
|
79 |
|
80 |
if(is_array($brands) && count($brands)>0){
|
81 |
+
echo '<ul class="pwb-row">';
|
82 |
foreach ($brands as $brand) {
|
83 |
$brand_name = $brand->name;
|
84 |
+
$brand_link = get_term_link( $brand->term_id );
|
85 |
+
|
86 |
+
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
87 |
+
$brand_logo = wp_get_attachment_image( $attachment_id, 'full' );
|
88 |
+
|
89 |
+
$li_class = ( $display_as == 'brand_logo' ) ? "pwb-columns pwb-columns-".$columns : "";
|
90 |
+
echo '<li class="'. $li_class .'">';
|
91 |
+
if( $display_as == 'brand_logo' && !empty( $brand_logo ) ){
|
92 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'Go to', 'perfect-woocommerce-brands' ).' '.$brand->name.'">'.$brand_logo.'</a>';
|
93 |
+
}else{
|
94 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'Go to', 'perfect-woocommerce-brands' ).' '.$brand->name.'">'.$brand->name.'</a>';
|
95 |
+
}
|
96 |
echo '</li>';
|
97 |
}
|
98 |
echo '</ul>';
|
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 1.8.
|
14 |
"X-Poedit-Basepath: ..\n"
|
15 |
"X-Poedit-WPHeader: main.php\n"
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
@@ -20,138 +20,193 @@ msgstr ""
|
|
20 |
"X-Poedit-SearchPath-0: .\n"
|
21 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
22 |
|
23 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
msgid "PWB Product carousel"
|
25 |
msgstr "PWB Carrusel de productos"
|
26 |
|
27 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
28 |
msgid "Product carousel by brand or by category"
|
29 |
msgstr "Carrusel de productos por marca o categoría"
|
30 |
|
31 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
32 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
33 |
msgid "Brand"
|
34 |
msgstr "Marca"
|
35 |
|
36 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
37 |
msgid "Products"
|
38 |
msgstr "Productos"
|
39 |
|
40 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
41 |
msgid "Number of products to load"
|
42 |
msgstr "Número de productos que cargar"
|
43 |
|
44 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
45 |
msgid "Products to show"
|
46 |
msgstr "Productos a mostrar"
|
47 |
|
48 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
49 |
msgid "Number of products to show"
|
50 |
msgstr "Número de productos que mostrar"
|
51 |
|
52 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
53 |
msgid "Products to scroll"
|
54 |
msgstr "Número de productos por scroll"
|
55 |
|
56 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
57 |
msgid "Number of products to scroll"
|
58 |
msgstr "Número de productos por cada scroll"
|
59 |
|
60 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
61 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
62 |
msgid "Autoplay"
|
63 |
msgstr "Modo automático"
|
64 |
|
65 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
66 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
67 |
msgid "Autoplay carousel"
|
68 |
msgstr "Modo automático para el carrusel"
|
69 |
|
70 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
msgid "PWB Brands carousel"
|
72 |
msgstr "PWB Carrusel de marcas"
|
73 |
|
74 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
75 |
msgid "Brands carousel"
|
76 |
msgstr "Carrusel de marcas"
|
77 |
|
78 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
79 |
msgid "Items"
|
80 |
msgstr "Elementos"
|
81 |
|
82 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
83 |
msgid "Number of items to load"
|
84 |
msgstr "Número de elementos que cargar"
|
85 |
|
86 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
87 |
msgid "Items to show"
|
88 |
msgstr "Elementos a mostrar"
|
89 |
|
90 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
91 |
msgid "Number of items to show"
|
92 |
msgstr "Número de elementos a mostrar"
|
93 |
|
94 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
95 |
msgid "Items to scroll"
|
96 |
msgstr "Número de elementos por scroll"
|
97 |
|
98 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
99 |
msgid "Number of items to scroll"
|
100 |
msgstr "Número de elementos por cada scroll"
|
101 |
|
102 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
103 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
104 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
105 |
-
#: classes/class-pwb-admin-tab.php:
|
106 |
msgid "Brand logo size"
|
107 |
msgstr "Tamaño del logo de la marca"
|
108 |
|
109 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
110 |
msgid "PWB All brands"
|
111 |
msgstr "PWB Todas las marcas"
|
112 |
|
113 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
114 |
msgid "Show all brands"
|
115 |
msgstr "Mostrar todas las marcas"
|
116 |
|
117 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
118 |
msgid "Brands per page"
|
119 |
msgstr "Marcas por página"
|
120 |
|
121 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
122 |
msgid "Show x brands per page"
|
123 |
msgstr "Mostrar x marcas por página"
|
124 |
|
125 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
msgid "PWB brand"
|
127 |
msgstr "PWB Marca"
|
128 |
|
129 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
130 |
msgid "Show brand for a specific product"
|
131 |
msgstr "Ver marcas de un producto específico"
|
132 |
|
133 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
134 |
msgid "Product id"
|
135 |
msgstr "Id del producto"
|
136 |
|
137 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
138 |
msgid "Product id (post id)"
|
139 |
msgstr "Id del producto (id del post)"
|
140 |
|
141 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
142 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
143 |
-
#: classes/shortcodes/class-pwb-all-brands.php:
|
144 |
#: classes/shortcodes/class-pwb-brand.php:29
|
145 |
#: classes/shortcodes/class-pwb-brand.php:31
|
146 |
-
#: classes/shortcodes/class-pwb-carousel.php:
|
147 |
msgid "View brand"
|
148 |
msgstr "Ver marca"
|
149 |
|
150 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
151 |
msgid "¿Start migration?"
|
152 |
msgstr "¿Comenzar la migración?"
|
153 |
|
154 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
155 |
msgid ""
|
156 |
"We are migrating the product brands. ¡Don´t close this window until the "
|
157 |
"process is finished!"
|
@@ -159,106 +214,107 @@ msgstr ""
|
|
159 |
"Estamos migrando las marcas de producto. ¡No cierres esta ventana hasta que "
|
160 |
"el proceso finalice!"
|
161 |
|
162 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
163 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
164 |
#: classes/class-pwb-admin-tab.php:21 classes/widgets/class-pwb-dropdown.php:56
|
165 |
msgid "Brands"
|
166 |
msgstr "Marcas"
|
167 |
|
168 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
169 |
msgid "All Brands"
|
170 |
msgstr "Todas las marcas"
|
171 |
|
172 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
173 |
msgid "Edit Brand"
|
174 |
msgstr "Editar marca"
|
175 |
|
176 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
177 |
msgid "View Brand"
|
178 |
msgstr "Ver marca"
|
179 |
|
180 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
181 |
msgid "Update Brand"
|
182 |
msgstr "Actualizar marca"
|
183 |
|
184 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
185 |
msgid "Add New Brand"
|
186 |
msgstr "Añadir nueva marca"
|
187 |
|
188 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
189 |
msgid "New Brand Name"
|
190 |
msgstr "Nuevo nombre de marca"
|
191 |
|
192 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
193 |
msgid "Parent Brand"
|
194 |
msgstr "Marca Padre"
|
195 |
|
196 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
197 |
msgid "Parent Brand:"
|
198 |
msgstr "Marca Padre:"
|
199 |
|
200 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
201 |
msgid "Search Brands"
|
202 |
msgstr "Buscar Marcas"
|
203 |
|
204 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
205 |
msgid "Popular Brands"
|
206 |
msgstr "Marcas Populares"
|
207 |
|
208 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
209 |
msgid "Separate brands with commas"
|
210 |
msgstr "Separar marcas con comas"
|
211 |
|
212 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
213 |
msgid "Add or remove brands"
|
214 |
msgstr "Añadir o eliminar marcas"
|
215 |
|
216 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
217 |
msgid "Choose from the most used brands"
|
218 |
msgstr "Seleccionar de las marcas más utilizadas"
|
219 |
|
220 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
221 |
msgid "No brands found"
|
222 |
msgstr "No se han encontrado marcas"
|
223 |
|
224 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
225 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
|
|
226 |
msgid "Brand logo"
|
227 |
msgstr "Logo de la marca"
|
228 |
|
229 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
230 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
231 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
232 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
233 |
msgid "Select image"
|
234 |
msgstr "Seleccionar imagen"
|
235 |
|
236 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
237 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
238 |
msgid "Brand banner"
|
239 |
msgstr "Banner de la marca"
|
240 |
|
241 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
242 |
msgid "This image will be shown on brand page"
|
243 |
msgstr "Esta imagen se mostrará en la página de la marca"
|
244 |
|
245 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
246 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
247 |
msgid "Brand banner link"
|
248 |
msgstr "Enlace para el banner de la marca"
|
249 |
|
250 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
251 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
252 |
msgid "This link should be relative to site url. Example: product/product-name"
|
253 |
msgstr ""
|
254 |
"Este enlace ha de ser relativo a la url del sitio web. Ejemplo: producto/"
|
255 |
"nombre-del-producto"
|
256 |
|
257 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
258 |
msgid "Logo"
|
259 |
msgstr "Logo"
|
260 |
|
261 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
262 |
msgid "No products found"
|
263 |
msgstr "No se han encontrado productos"
|
264 |
|
@@ -274,111 +330,123 @@ msgstr "Slug"
|
|
274 |
msgid "Brands taxonomy slug"
|
275 |
msgstr "Slug de la taxonomía marcas"
|
276 |
|
277 |
-
#: classes/class-pwb-admin-tab.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
msgid "Brand logo size for single product view"
|
279 |
msgstr "Tamaño del logo para la vista individual de producto"
|
280 |
|
281 |
-
#: classes/class-pwb-admin-tab.php:
|
282 |
msgid "Brand position"
|
283 |
msgstr "Posición de la marca"
|
284 |
|
285 |
-
#: classes/class-pwb-admin-tab.php:
|
286 |
msgid "For single product"
|
287 |
msgstr "En la página individual de cada producto"
|
288 |
|
289 |
-
#: classes/class-pwb-admin-tab.php:
|
290 |
msgid "Before title"
|
291 |
msgstr "Antes del título"
|
292 |
|
293 |
-
#: classes/class-pwb-admin-tab.php:
|
294 |
msgid "After title"
|
295 |
msgstr "Después del título"
|
296 |
|
297 |
-
#: classes/class-pwb-admin-tab.php:
|
298 |
msgid "After price"
|
299 |
msgstr "Después del precio"
|
300 |
|
301 |
-
#: classes/class-pwb-admin-tab.php:
|
302 |
msgid "After excerpt"
|
303 |
msgstr "Después de la descripción corta"
|
304 |
|
305 |
-
#: classes/class-pwb-admin-tab.php:
|
306 |
msgid "After add to cart"
|
307 |
msgstr "Después del botón de comprar"
|
308 |
|
309 |
-
#: classes/class-pwb-admin-tab.php:
|
310 |
msgid "After meta"
|
311 |
msgstr "Después del meta"
|
312 |
|
313 |
-
#: classes/class-pwb-admin-tab.php:
|
314 |
msgid "After sharing"
|
315 |
msgstr "Después de compartir"
|
316 |
|
317 |
-
#: classes/class-pwb-admin-tab.php:
|
318 |
-
msgid "Show brand description"
|
319 |
-
msgstr "Mostrar descripción de la marca"
|
320 |
-
|
321 |
-
#: classes/class-pwb-admin-tab.php:110
|
322 |
-
msgid "Show brand description (if is set) on brand archive page"
|
323 |
-
msgstr "Mostrar descripción de la marca en la página de archivo"
|
324 |
-
|
325 |
-
#: classes/class-pwb-admin-tab.php:114
|
326 |
-
msgid "Show brands in loop"
|
327 |
-
msgstr "Mostrar marcas en el loop"
|
328 |
-
|
329 |
-
#: classes/class-pwb-admin-tab.php:116
|
330 |
-
msgid "Show brand logo (or name) in product loop"
|
331 |
-
msgstr "Mostrar el logo de la marca (o el nombre) en el loop"
|
332 |
-
|
333 |
-
#: classes/class-pwb-admin-tab.php:119
|
334 |
-
msgid "No"
|
335 |
-
msgstr "No"
|
336 |
-
|
337 |
-
#: classes/class-pwb-admin-tab.php:120
|
338 |
-
msgid "Show brand link"
|
339 |
-
msgstr "Mostrar el link de la marca"
|
340 |
-
|
341 |
-
#: classes/class-pwb-admin-tab.php:121
|
342 |
-
msgid "Show brand image (if is set)"
|
343 |
-
msgstr "Mostrar el logo de la marca (si tiene uno asignado)"
|
344 |
-
|
345 |
-
#: classes/class-pwb-admin-tab.php:138
|
346 |
msgid "Tools"
|
347 |
msgstr "Herramientas"
|
348 |
|
349 |
-
#: classes/class-pwb-admin-tab.php:
|
350 |
msgid "Import brands"
|
351 |
msgstr "Importar marcas"
|
352 |
|
353 |
-
#: classes/class-pwb-admin-tab.php:
|
354 |
-
msgid "
|
355 |
-
|
|
|
|
|
|
|
|
|
356 |
|
357 |
-
#: classes/class-pwb-admin-tab.php:
|
358 |
msgid "-"
|
359 |
msgstr "-"
|
360 |
|
361 |
-
#: classes/class-pwb-admin-tab.php:
|
362 |
msgid "YITH WooCommerce Brands Add-On"
|
363 |
msgstr "YITH WooCommerce Brands Add-On"
|
364 |
|
365 |
-
#: classes/shortcodes/class-pwb-all-brands.php:
|
366 |
msgid "First page"
|
367 |
msgstr "Primera página"
|
368 |
|
369 |
-
#: classes/shortcodes/class-pwb-all-brands.php:
|
370 |
msgid "Previous page"
|
371 |
msgstr "Página anterior"
|
372 |
|
373 |
-
#: classes/shortcodes/class-pwb-all-brands.php:
|
374 |
msgid "Next page"
|
375 |
msgstr "Siguiente página"
|
376 |
|
377 |
-
#: classes/shortcodes/class-pwb-all-brands.php:
|
378 |
msgid "Last page"
|
379 |
msgstr "Última página"
|
380 |
|
381 |
-
#: classes/shortcodes/class-pwb-all-brands.php:
|
382 |
msgid "No results"
|
383 |
msgstr "No se han encontrado resultados"
|
384 |
|
@@ -391,12 +459,11 @@ msgid "Brands dropdown"
|
|
391 |
msgstr "Desplegable de marcas"
|
392 |
|
393 |
#: classes/widgets/class-pwb-dropdown.php:21
|
394 |
-
#: classes/widgets/class-pwb-list.php:21
|
395 |
msgid "Title"
|
396 |
msgstr "Título"
|
397 |
|
398 |
#: classes/widgets/class-pwb-dropdown.php:64
|
399 |
-
#: classes/widgets/class-pwb-list.php:
|
400 |
msgid "There is not available brands"
|
401 |
msgstr "No se encuentran marcas disponibles"
|
402 |
|
@@ -409,6 +476,7 @@ msgid "Filter products by brand"
|
|
409 |
msgstr "Filtrar productos por marca"
|
410 |
|
411 |
#: classes/widgets/class-pwb-filter-by-brand.php:24
|
|
|
412 |
msgid "Title:"
|
413 |
msgstr "Título:"
|
414 |
|
@@ -424,11 +492,23 @@ msgstr "Añade una lista de marcas a tu sitio"
|
|
424 |
msgid "Brands list"
|
425 |
msgstr "Lista de marcas"
|
426 |
|
427 |
-
#: classes/widgets/class-pwb-list.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
428 |
msgid "Go to"
|
429 |
msgstr "Ir a"
|
430 |
|
431 |
-
#: main.php:
|
432 |
msgid ""
|
433 |
"Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
|
434 |
"active WooCommerce plugin."
|
@@ -460,6 +540,9 @@ msgstr "Alberto de Vera Sevilla"
|
|
460 |
msgid "https://profiles.wordpress.org/titodevera/"
|
461 |
msgstr "https://profiles.wordpress.org/titodevera/"
|
462 |
|
|
|
|
|
|
|
463 |
#~ msgid "Brands metabox"
|
464 |
#~ msgstr "Marcas metabox"
|
465 |
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Perfect WooCommerce Brands\n"
|
4 |
+
"POT-Creation-Date: 2017-02-24 22:56+0100\n"
|
5 |
+
"PO-Revision-Date: 2017-02-24 23:00+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 1.8.12\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/class-perfect-woocommerce-brands.php:47
|
24 |
+
msgid ""
|
25 |
+
"We are offering you maybe the best WooCommerce brands plugin completly free. "
|
26 |
+
"You can help us making Perfect WooCommerce Brands a bit better. Thanks!"
|
27 |
+
msgstr ""
|
28 |
+
"Estamos ofreciendo de forma completamente gratuita el que probablemente sea "
|
29 |
+
"el mejor plugin de marcas para WooCommerce. Puedes ayudarnos haciendo "
|
30 |
+
"Perfect WooCommerce Brands un poco mejor. ¡Gracias!"
|
31 |
+
|
32 |
+
#: classes/class-perfect-woocommerce-brands.php:49
|
33 |
+
msgid ""
|
34 |
+
"<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
|
35 |
+
"reviews/?rate=5#new-post\" target=\"_blank\">Leave a review</a>"
|
36 |
+
msgstr ""
|
37 |
+
"<a href=\"https://wordpress.org/support/plugin/perfect-woocommerce-brands/"
|
38 |
+
"reviews/?rate=5#new-post\" target=\"_blank\">Dejar una review</a>"
|
39 |
+
|
40 |
+
#: classes/class-perfect-woocommerce-brands.php:50
|
41 |
+
msgid ""
|
42 |
+
"<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
|
43 |
+
"woocommerce-brands\" target=\"_blank\">Translate the plugin</a>"
|
44 |
+
msgstr ""
|
45 |
+
"<a href=\"https://translate.wordpress.org/projects/wp-plugins/perfect-"
|
46 |
+
"woocommerce-brands\" target=\"_blank\">Traducir el plugin</a>"
|
47 |
+
|
48 |
+
#: classes/class-perfect-woocommerce-brands.php:51
|
49 |
+
msgid ""
|
50 |
+
"<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
|
51 |
+
"\"_blank\">View on GitHub</a>"
|
52 |
+
msgstr ""
|
53 |
+
"<a href=\"https://github.com/titodevera/perfect-woocommerce-brands\" target="
|
54 |
+
"\"_blank\">Ver en GitHub</a>"
|
55 |
+
|
56 |
+
#: classes/class-perfect-woocommerce-brands.php:74
|
57 |
+
msgid "Settings"
|
58 |
+
msgstr "Ajustes"
|
59 |
+
|
60 |
+
#: classes/class-perfect-woocommerce-brands.php:296
|
61 |
msgid "PWB Product carousel"
|
62 |
msgstr "PWB Carrusel de productos"
|
63 |
|
64 |
+
#: classes/class-perfect-woocommerce-brands.php:297
|
65 |
msgid "Product carousel by brand or by category"
|
66 |
msgstr "Carrusel de productos por marca o categoría"
|
67 |
|
68 |
+
#: classes/class-perfect-woocommerce-brands.php:305
|
69 |
+
#: classes/class-perfect-woocommerce-brands.php:578
|
70 |
msgid "Brand"
|
71 |
msgstr "Marca"
|
72 |
|
73 |
+
#: classes/class-perfect-woocommerce-brands.php:313
|
74 |
msgid "Products"
|
75 |
msgstr "Productos"
|
76 |
|
77 |
+
#: classes/class-perfect-woocommerce-brands.php:316
|
78 |
msgid "Number of products to load"
|
79 |
msgstr "Número de productos que cargar"
|
80 |
|
81 |
+
#: classes/class-perfect-woocommerce-brands.php:321
|
82 |
msgid "Products to show"
|
83 |
msgstr "Productos a mostrar"
|
84 |
|
85 |
+
#: classes/class-perfect-woocommerce-brands.php:324
|
86 |
msgid "Number of products to show"
|
87 |
msgstr "Número de productos que mostrar"
|
88 |
|
89 |
+
#: classes/class-perfect-woocommerce-brands.php:329
|
90 |
msgid "Products to scroll"
|
91 |
msgstr "Número de productos por scroll"
|
92 |
|
93 |
+
#: classes/class-perfect-woocommerce-brands.php:332
|
94 |
msgid "Number of products to scroll"
|
95 |
msgstr "Número de productos por cada scroll"
|
96 |
|
97 |
+
#: classes/class-perfect-woocommerce-brands.php:337
|
98 |
+
#: classes/class-perfect-woocommerce-brands.php:386
|
99 |
msgid "Autoplay"
|
100 |
msgstr "Modo automático"
|
101 |
|
102 |
+
#: classes/class-perfect-woocommerce-brands.php:339
|
103 |
+
#: classes/class-perfect-woocommerce-brands.php:388
|
104 |
msgid "Autoplay carousel"
|
105 |
msgstr "Modo automático para el carrusel"
|
106 |
|
107 |
+
#: classes/class-perfect-woocommerce-brands.php:344
|
108 |
+
#: classes/class-perfect-woocommerce-brands.php:393
|
109 |
+
msgid "Arrows"
|
110 |
+
msgstr "Flechas de navegación"
|
111 |
+
|
112 |
+
#: classes/class-perfect-woocommerce-brands.php:346
|
113 |
+
#: classes/class-perfect-woocommerce-brands.php:395
|
114 |
+
msgid "Display prev and next arrows"
|
115 |
+
msgstr "Mostrar flechas de navegación"
|
116 |
+
|
117 |
+
#: classes/class-perfect-woocommerce-brands.php:352
|
118 |
msgid "PWB Brands carousel"
|
119 |
msgstr "PWB Carrusel de marcas"
|
120 |
|
121 |
+
#: classes/class-perfect-woocommerce-brands.php:353
|
122 |
msgid "Brands carousel"
|
123 |
msgstr "Carrusel de marcas"
|
124 |
|
125 |
+
#: classes/class-perfect-woocommerce-brands.php:362
|
126 |
msgid "Items"
|
127 |
msgstr "Elementos"
|
128 |
|
129 |
+
#: classes/class-perfect-woocommerce-brands.php:365
|
130 |
msgid "Number of items to load"
|
131 |
msgstr "Número de elementos que cargar"
|
132 |
|
133 |
+
#: classes/class-perfect-woocommerce-brands.php:370
|
134 |
msgid "Items to show"
|
135 |
msgstr "Elementos a mostrar"
|
136 |
|
137 |
+
#: classes/class-perfect-woocommerce-brands.php:373
|
138 |
msgid "Number of items to show"
|
139 |
msgstr "Número de elementos a mostrar"
|
140 |
|
141 |
+
#: classes/class-perfect-woocommerce-brands.php:378
|
142 |
msgid "Items to scroll"
|
143 |
msgstr "Número de elementos por scroll"
|
144 |
|
145 |
+
#: classes/class-perfect-woocommerce-brands.php:381
|
146 |
msgid "Number of items to scroll"
|
147 |
msgstr "Número de elementos por cada scroll"
|
148 |
|
149 |
+
#: classes/class-perfect-woocommerce-brands.php:399
|
150 |
+
#: classes/class-perfect-woocommerce-brands.php:427
|
151 |
+
#: classes/class-perfect-woocommerce-brands.php:463
|
152 |
+
#: classes/class-pwb-admin-tab.php:115
|
153 |
msgid "Brand logo size"
|
154 |
msgstr "Tamaño del logo de la marca"
|
155 |
|
156 |
+
#: classes/class-perfect-woocommerce-brands.php:410
|
157 |
msgid "PWB All brands"
|
158 |
msgstr "PWB Todas las marcas"
|
159 |
|
160 |
+
#: classes/class-perfect-woocommerce-brands.php:411
|
161 |
msgid "Show all brands"
|
162 |
msgstr "Mostrar todas las marcas"
|
163 |
|
164 |
+
#: classes/class-perfect-woocommerce-brands.php:420
|
165 |
msgid "Brands per page"
|
166 |
msgstr "Marcas por página"
|
167 |
|
168 |
+
#: classes/class-perfect-woocommerce-brands.php:423
|
169 |
msgid "Show x brands per page"
|
170 |
msgstr "Mostrar x marcas por página"
|
171 |
|
172 |
+
#: classes/class-perfect-woocommerce-brands.php:435
|
173 |
+
msgid "Hide empty"
|
174 |
+
msgstr "Ocultar vacías"
|
175 |
+
|
176 |
+
#: classes/class-perfect-woocommerce-brands.php:437
|
177 |
+
msgid "Hide brands that have not been assigned to any product"
|
178 |
+
msgstr "Ocultar marcas que no han sido asignadas a ningún producto"
|
179 |
+
|
180 |
+
#: classes/class-perfect-woocommerce-brands.php:445
|
181 |
msgid "PWB brand"
|
182 |
msgstr "PWB Marca"
|
183 |
|
184 |
+
#: classes/class-perfect-woocommerce-brands.php:446
|
185 |
msgid "Show brand for a specific product"
|
186 |
msgstr "Ver marcas de un producto específico"
|
187 |
|
188 |
+
#: classes/class-perfect-woocommerce-brands.php:456
|
189 |
msgid "Product id"
|
190 |
msgstr "Id del producto"
|
191 |
|
192 |
+
#: classes/class-perfect-woocommerce-brands.php:459
|
193 |
msgid "Product id (post id)"
|
194 |
msgstr "Id del producto (id del post)"
|
195 |
|
196 |
+
#: classes/class-perfect-woocommerce-brands.php:499
|
197 |
+
#: classes/class-perfect-woocommerce-brands.php:501
|
198 |
+
#: classes/shortcodes/class-pwb-all-brands.php:76
|
199 |
#: classes/shortcodes/class-pwb-brand.php:29
|
200 |
#: classes/shortcodes/class-pwb-brand.php:31
|
201 |
+
#: classes/shortcodes/class-pwb-carousel.php:43
|
202 |
msgid "View brand"
|
203 |
msgstr "Ver marca"
|
204 |
|
205 |
+
#: classes/class-perfect-woocommerce-brands.php:568
|
206 |
msgid "¿Start migration?"
|
207 |
msgstr "¿Comenzar la migración?"
|
208 |
|
209 |
+
#: classes/class-perfect-woocommerce-brands.php:569
|
210 |
msgid ""
|
211 |
"We are migrating the product brands. ¡Don´t close this window until the "
|
212 |
"process is finished!"
|
214 |
"Estamos migrando las marcas de producto. ¡No cierres esta ventana hasta que "
|
215 |
"el proceso finalice!"
|
216 |
|
217 |
+
#: classes/class-perfect-woocommerce-brands.php:577
|
218 |
+
#: classes/class-perfect-woocommerce-brands.php:579
|
219 |
#: classes/class-pwb-admin-tab.php:21 classes/widgets/class-pwb-dropdown.php:56
|
220 |
msgid "Brands"
|
221 |
msgstr "Marcas"
|
222 |
|
223 |
+
#: classes/class-perfect-woocommerce-brands.php:580
|
224 |
msgid "All Brands"
|
225 |
msgstr "Todas las marcas"
|
226 |
|
227 |
+
#: classes/class-perfect-woocommerce-brands.php:581
|
228 |
msgid "Edit Brand"
|
229 |
msgstr "Editar marca"
|
230 |
|
231 |
+
#: classes/class-perfect-woocommerce-brands.php:582
|
232 |
msgid "View Brand"
|
233 |
msgstr "Ver marca"
|
234 |
|
235 |
+
#: classes/class-perfect-woocommerce-brands.php:583
|
236 |
msgid "Update Brand"
|
237 |
msgstr "Actualizar marca"
|
238 |
|
239 |
+
#: classes/class-perfect-woocommerce-brands.php:584
|
240 |
msgid "Add New Brand"
|
241 |
msgstr "Añadir nueva marca"
|
242 |
|
243 |
+
#: classes/class-perfect-woocommerce-brands.php:585
|
244 |
msgid "New Brand Name"
|
245 |
msgstr "Nuevo nombre de marca"
|
246 |
|
247 |
+
#: classes/class-perfect-woocommerce-brands.php:586
|
248 |
msgid "Parent Brand"
|
249 |
msgstr "Marca Padre"
|
250 |
|
251 |
+
#: classes/class-perfect-woocommerce-brands.php:587
|
252 |
msgid "Parent Brand:"
|
253 |
msgstr "Marca Padre:"
|
254 |
|
255 |
+
#: classes/class-perfect-woocommerce-brands.php:588
|
256 |
msgid "Search Brands"
|
257 |
msgstr "Buscar Marcas"
|
258 |
|
259 |
+
#: classes/class-perfect-woocommerce-brands.php:589
|
260 |
msgid "Popular Brands"
|
261 |
msgstr "Marcas Populares"
|
262 |
|
263 |
+
#: classes/class-perfect-woocommerce-brands.php:590
|
264 |
msgid "Separate brands with commas"
|
265 |
msgstr "Separar marcas con comas"
|
266 |
|
267 |
+
#: classes/class-perfect-woocommerce-brands.php:591
|
268 |
msgid "Add or remove brands"
|
269 |
msgstr "Añadir o eliminar marcas"
|
270 |
|
271 |
+
#: classes/class-perfect-woocommerce-brands.php:592
|
272 |
msgid "Choose from the most used brands"
|
273 |
msgstr "Seleccionar de las marcas más utilizadas"
|
274 |
|
275 |
+
#: classes/class-perfect-woocommerce-brands.php:593
|
276 |
msgid "No brands found"
|
277 |
msgstr "No se han encontrado marcas"
|
278 |
|
279 |
+
#: classes/class-perfect-woocommerce-brands.php:637
|
280 |
+
#: classes/class-perfect-woocommerce-brands.php:670
|
281 |
+
#: classes/widgets/class-pwb-list.php:36
|
282 |
msgid "Brand logo"
|
283 |
msgstr "Logo de la marca"
|
284 |
|
285 |
+
#: classes/class-perfect-woocommerce-brands.php:639
|
286 |
+
#: classes/class-perfect-woocommerce-brands.php:645
|
287 |
+
#: classes/class-perfect-woocommerce-brands.php:674
|
288 |
+
#: classes/class-perfect-woocommerce-brands.php:694
|
289 |
msgid "Select image"
|
290 |
msgstr "Seleccionar imagen"
|
291 |
|
292 |
+
#: classes/class-perfect-woocommerce-brands.php:643
|
293 |
+
#: classes/class-perfect-woocommerce-brands.php:690
|
294 |
msgid "Brand banner"
|
295 |
msgstr "Banner de la marca"
|
296 |
|
297 |
+
#: classes/class-perfect-woocommerce-brands.php:646
|
298 |
msgid "This image will be shown on brand page"
|
299 |
msgstr "Esta imagen se mostrará en la página de la marca"
|
300 |
|
301 |
+
#: classes/class-perfect-woocommerce-brands.php:650
|
302 |
+
#: classes/class-perfect-woocommerce-brands.php:710
|
303 |
msgid "Brand banner link"
|
304 |
msgstr "Enlace para el banner de la marca"
|
305 |
|
306 |
+
#: classes/class-perfect-woocommerce-brands.php:652
|
307 |
+
#: classes/class-perfect-woocommerce-brands.php:714
|
308 |
msgid "This link should be relative to site url. Example: product/product-name"
|
309 |
msgstr ""
|
310 |
"Este enlace ha de ser relativo a la url del sitio web. Ejemplo: producto/"
|
311 |
"nombre-del-producto"
|
312 |
|
313 |
+
#: classes/class-perfect-woocommerce-brands.php:768
|
314 |
msgid "Logo"
|
315 |
msgstr "Logo"
|
316 |
|
317 |
+
#: classes/class-perfect-woocommerce-brands.php:858
|
318 |
msgid "No products found"
|
319 |
msgstr "No se han encontrado productos"
|
320 |
|
330 |
msgid "Brands taxonomy slug"
|
331 |
msgstr "Slug de la taxonomía marcas"
|
332 |
|
333 |
+
#: classes/class-pwb-admin-tab.php:85
|
334 |
+
msgid "Show brand description"
|
335 |
+
msgstr "Mostrar descripción de la marca"
|
336 |
+
|
337 |
+
#: classes/class-pwb-admin-tab.php:88
|
338 |
+
msgid "Show brand description (if is set) on brand archive page"
|
339 |
+
msgstr "Mostrar descripción de la marca en la página de archivo"
|
340 |
+
|
341 |
+
#: classes/class-pwb-admin-tab.php:92
|
342 |
+
msgid "Show brands in loop"
|
343 |
+
msgstr "Mostrar marcas en el loop"
|
344 |
+
|
345 |
+
#: classes/class-pwb-admin-tab.php:94
|
346 |
+
msgid "Show brand logo (or name) in product loop"
|
347 |
+
msgstr "Mostrar el logo de la marca (o el nombre) en el loop"
|
348 |
+
|
349 |
+
#: classes/class-pwb-admin-tab.php:97 classes/class-pwb-admin-tab.php:109
|
350 |
+
msgid "No"
|
351 |
+
msgstr "No"
|
352 |
+
|
353 |
+
#: classes/class-pwb-admin-tab.php:98 classes/class-pwb-admin-tab.php:110
|
354 |
+
msgid "Show brand link"
|
355 |
+
msgstr "Mostrar el link de la marca"
|
356 |
+
|
357 |
+
#: classes/class-pwb-admin-tab.php:99 classes/class-pwb-admin-tab.php:111
|
358 |
+
msgid "Show brand image (if is set)"
|
359 |
+
msgstr "Mostrar el logo de la marca (si tiene uno asignado)"
|
360 |
+
|
361 |
+
#: classes/class-pwb-admin-tab.php:103
|
362 |
+
msgid "Show brands in single product"
|
363 |
+
msgstr "Mostrar marcas en la página del producto"
|
364 |
+
|
365 |
+
#: classes/class-pwb-admin-tab.php:105
|
366 |
+
msgid "Show brand logo (or name) in single product"
|
367 |
+
msgstr "Mostrar el logo de la marca (o el nombre) en la página del producto"
|
368 |
+
|
369 |
+
#: classes/class-pwb-admin-tab.php:117
|
370 |
msgid "Brand logo size for single product view"
|
371 |
msgstr "Tamaño del logo para la vista individual de producto"
|
372 |
|
373 |
+
#: classes/class-pwb-admin-tab.php:122
|
374 |
msgid "Brand position"
|
375 |
msgstr "Posición de la marca"
|
376 |
|
377 |
+
#: classes/class-pwb-admin-tab.php:124
|
378 |
msgid "For single product"
|
379 |
msgstr "En la página individual de cada producto"
|
380 |
|
381 |
+
#: classes/class-pwb-admin-tab.php:127
|
382 |
msgid "Before title"
|
383 |
msgstr "Antes del título"
|
384 |
|
385 |
+
#: classes/class-pwb-admin-tab.php:128
|
386 |
msgid "After title"
|
387 |
msgstr "Después del título"
|
388 |
|
389 |
+
#: classes/class-pwb-admin-tab.php:129
|
390 |
msgid "After price"
|
391 |
msgstr "Después del precio"
|
392 |
|
393 |
+
#: classes/class-pwb-admin-tab.php:130
|
394 |
msgid "After excerpt"
|
395 |
msgstr "Después de la descripción corta"
|
396 |
|
397 |
+
#: classes/class-pwb-admin-tab.php:131
|
398 |
msgid "After add to cart"
|
399 |
msgstr "Después del botón de comprar"
|
400 |
|
401 |
+
#: classes/class-pwb-admin-tab.php:132
|
402 |
msgid "After meta"
|
403 |
msgstr "Después del meta"
|
404 |
|
405 |
+
#: classes/class-pwb-admin-tab.php:133
|
406 |
msgid "After sharing"
|
407 |
msgstr "Después de compartir"
|
408 |
|
409 |
+
#: classes/class-pwb-admin-tab.php:150
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
410 |
msgid "Tools"
|
411 |
msgstr "Herramientas"
|
412 |
|
413 |
+
#: classes/class-pwb-admin-tab.php:156
|
414 |
msgid "Import brands"
|
415 |
msgstr "Importar marcas"
|
416 |
|
417 |
+
#: classes/class-pwb-admin-tab.php:158
|
418 |
+
msgid ""
|
419 |
+
"Import brands from other brand plugin. <strong>Both plugins should be "
|
420 |
+
"installed and active</strong>"
|
421 |
+
msgstr ""
|
422 |
+
"Importar marcas de otro plugin. <strong>Ambos plugins han de encontrarse "
|
423 |
+
"instalados y activados</strong>"
|
424 |
|
425 |
+
#: classes/class-pwb-admin-tab.php:161
|
426 |
msgid "-"
|
427 |
msgstr "-"
|
428 |
|
429 |
+
#: classes/class-pwb-admin-tab.php:162
|
430 |
msgid "YITH WooCommerce Brands Add-On"
|
431 |
msgstr "YITH WooCommerce Brands Add-On"
|
432 |
|
433 |
+
#: classes/shortcodes/class-pwb-all-brands.php:89
|
434 |
msgid "First page"
|
435 |
msgstr "Primera página"
|
436 |
|
437 |
+
#: classes/shortcodes/class-pwb-all-brands.php:92
|
438 |
msgid "Previous page"
|
439 |
msgstr "Página anterior"
|
440 |
|
441 |
+
#: classes/shortcodes/class-pwb-all-brands.php:96
|
442 |
msgid "Next page"
|
443 |
msgstr "Siguiente página"
|
444 |
|
445 |
+
#: classes/shortcodes/class-pwb-all-brands.php:99
|
446 |
msgid "Last page"
|
447 |
msgstr "Última página"
|
448 |
|
449 |
+
#: classes/shortcodes/class-pwb-all-brands.php:104
|
450 |
msgid "No results"
|
451 |
msgstr "No se han encontrado resultados"
|
452 |
|
459 |
msgstr "Desplegable de marcas"
|
460 |
|
461 |
#: classes/widgets/class-pwb-dropdown.php:21
|
|
|
462 |
msgid "Title"
|
463 |
msgstr "Título"
|
464 |
|
465 |
#: classes/widgets/class-pwb-dropdown.php:64
|
466 |
+
#: classes/widgets/class-pwb-list.php:100
|
467 |
msgid "There is not available brands"
|
468 |
msgstr "No se encuentran marcas disponibles"
|
469 |
|
476 |
msgstr "Filtrar productos por marca"
|
477 |
|
478 |
#: classes/widgets/class-pwb-filter-by-brand.php:24
|
479 |
+
#: classes/widgets/class-pwb-list.php:21
|
480 |
msgid "Title:"
|
481 |
msgstr "Título:"
|
482 |
|
492 |
msgid "Brands list"
|
493 |
msgstr "Lista de marcas"
|
494 |
|
495 |
+
#: classes/widgets/class-pwb-list.php:30
|
496 |
+
msgid "Display as:"
|
497 |
+
msgstr "Mostrar como:"
|
498 |
+
|
499 |
+
#: classes/widgets/class-pwb-list.php:35
|
500 |
+
msgid "Brand name"
|
501 |
+
msgstr "Nombre de la marca"
|
502 |
+
|
503 |
+
#: classes/widgets/class-pwb-list.php:41
|
504 |
+
msgid "Columns:"
|
505 |
+
msgstr "Columnas:"
|
506 |
+
|
507 |
+
#: classes/widgets/class-pwb-list.php:92 classes/widgets/class-pwb-list.php:94
|
508 |
msgid "Go to"
|
509 |
msgstr "Ir a"
|
510 |
|
511 |
+
#: main.php:68
|
512 |
msgid ""
|
513 |
"Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
|
514 |
"active WooCommerce plugin."
|
540 |
msgid "https://profiles.wordpress.org/titodevera/"
|
541 |
msgstr "https://profiles.wordpress.org/titodevera/"
|
542 |
|
543 |
+
#~ msgid "Import brands from old plugin installation"
|
544 |
+
#~ msgstr "Importar marcas de otro plugin"
|
545 |
+
|
546 |
#~ msgid "Brands metabox"
|
547 |
#~ msgstr "Marcas metabox"
|
548 |
|
main.php
CHANGED
@@ -1,71 +1,72 @@
|
|
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.4.
|
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 |
-
Perfect WooCommerce Brands version 1.4.
|
14 |
-
|
15 |
-
Perfect WooCommerce Brands is free software: you can redistribute it and/or modify
|
16 |
-
it under the terms of the GNU General Public License as published by
|
17 |
-
the Free Software Foundation, either version 3 of the License, or
|
18 |
-
(at your option) any later version.
|
19 |
-
|
20 |
-
Perfect WooCommerce Brands is distributed in the hope that it will be useful,
|
21 |
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
22 |
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
23 |
-
GNU General Public License for more details.
|
24 |
-
|
25 |
-
You should have received a copy of the GNU General Public License
|
26 |
-
along with Perfect WooCommerce Brands. If not, see <http://www.gnu.org/licenses/>.
|
27 |
-
|
28 |
-
*/
|
29 |
-
|
30 |
-
namespace Perfect_Woocommerce_Brands;
|
31 |
-
|
32 |
-
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
33 |
-
|
34 |
-
//plugin constants
|
35 |
-
define('PWB_PLUGIN', plugins_url( '', __FILE__ ));
|
36 |
-
define('PWB_PLUGIN_PATH', plugin_basename( dirname( __FILE__ ) ));
|
37 |
-
define('
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
require 'classes/widgets/class-pwb-
|
54 |
-
require 'classes/widgets/class-pwb-
|
55 |
-
require 'classes/
|
56 |
-
require 'classes/shortcodes/class-pwb-carousel.php';
|
57 |
-
require 'classes/shortcodes/class-pwb-
|
58 |
-
require 'classes/shortcodes/class-pwb-
|
59 |
-
require 'classes/class-
|
60 |
-
require 'classes/class-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
|
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.4.4
|
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 |
+
Perfect WooCommerce Brands version 1.4.4, Copyright (C) 2016 Alberto de Vera Sevilla
|
14 |
+
|
15 |
+
Perfect WooCommerce Brands is free software: you can redistribute it and/or modify
|
16 |
+
it under the terms of the GNU General Public License as published by
|
17 |
+
the Free Software Foundation, either version 3 of the License, or
|
18 |
+
(at your option) any later version.
|
19 |
+
|
20 |
+
Perfect WooCommerce Brands is distributed in the hope that it will be useful,
|
21 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
22 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
23 |
+
GNU General Public License for more details.
|
24 |
+
|
25 |
+
You should have received a copy of the GNU General Public License
|
26 |
+
along with Perfect WooCommerce Brands. If not, see <http://www.gnu.org/licenses/>.
|
27 |
+
|
28 |
+
*/
|
29 |
+
|
30 |
+
namespace Perfect_Woocommerce_Brands;
|
31 |
+
|
32 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
33 |
+
|
34 |
+
//plugin constants
|
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.4.4' );
|
39 |
+
|
40 |
+
//clean brands slug on plugin deactivation
|
41 |
+
register_deactivation_hook( __FILE__, function(){
|
42 |
+
update_option( 'old_wc_pwb_admin_tab_slug', 'null' );
|
43 |
+
} );
|
44 |
+
|
45 |
+
//loads textdomain for the translations
|
46 |
+
add_action( 'plugins_loaded', function(){
|
47 |
+
load_plugin_textdomain( 'perfect-woocommerce-brands', false, PWB_PLUGIN_PATH . '/lang' );
|
48 |
+
} );
|
49 |
+
|
50 |
+
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
51 |
+
if( is_plugin_active( 'woocommerce/woocommerce.php' ) ){
|
52 |
+
|
53 |
+
require 'classes/widgets/class-pwb-dropdown.php';
|
54 |
+
require 'classes/widgets/class-pwb-list.php';
|
55 |
+
require 'classes/widgets/class-pwb-filter-by-brand.php';
|
56 |
+
require 'classes/shortcodes/class-pwb-product-carousel.php';
|
57 |
+
require 'classes/shortcodes/class-pwb-carousel.php';
|
58 |
+
require 'classes/shortcodes/class-pwb-all-brands.php';
|
59 |
+
require 'classes/shortcodes/class-pwb-brand.php';
|
60 |
+
require 'classes/class-perfect-woocommerce-brands.php';
|
61 |
+
require 'classes/class-pwb-admin-tab.php';
|
62 |
+
|
63 |
+
new \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands();
|
64 |
+
|
65 |
+
}elseif( is_admin() ){
|
66 |
+
|
67 |
+
add_action( 'admin_notices', function() {
|
68 |
+
$message = __( 'Perfect WooCommerce Brands needs WooCommerce to run. Please, install and active WooCommerce plugin.', 'perfect-woocommerce-brands' );
|
69 |
+
printf( '<div class="%1$s"><p>%2$s</p></div>', 'notice notice-error', $message );
|
70 |
+
});
|
71 |
+
|
72 |
+
}
|
readme.txt
CHANGED
@@ -1,98 +1,110 @@
|
|
1 |
-
=== Perfect WooCommerce Brands ===
|
2 |
-
Contributors: titodevera
|
3 |
-
Donate link: mailto:
|
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.
|
7 |
-
Stable tag: 1.4.
|
8 |
-
License: GPL3
|
9 |
-
License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
|
10 |
-
|
11 |
-
Perfect WooCommerce Brands allows you to show product brands in your WooCommerce based store
|
12 |
-
|
13 |
-
== Description ==
|
14 |
-
Whether we like to admit it or not, we are all influenced by brands. Brands are a guarantee for quality, they assure product recognition in customers.
|
15 |
-
Is essential to work with product brands for increase sales and generate reliability on your e-commerce site.
|
16 |
-
With this extension you can add product brands to your WooCommerce site.
|
17 |
-
|
18 |
-
= Requirements =
|
19 |
-
> * PHP 5.3 or higher
|
20 |
-
> * WordPress 4.4 or higher
|
21 |
-
> * WooCommerce 2.4.0 or higher
|
22 |
-
> * Visual Composer (recommended)
|
23 |
-
|
24 |
-
= Features =
|
25 |
-
> * Very easy to use, 100% free, no ads, no premium version exists
|
26 |
-
> * Assign brands to products
|
27 |
-
> * Associate a banner and a link to each brand
|
28 |
-
> * Translation-ready (English and Spanish included)
|
29 |
-
> * Shortcode: Display all brands
|
30 |
-
> * Shortcode: Display brands carousel
|
31 |
-
> * Shortcode: Display product carousel by brand
|
32 |
-
> * Shortcode: Display brands for a specific product
|
33 |
-
> * Visual Composer support
|
34 |
-
> * Widget: Display brands as dropdown
|
35 |
-
> * Widget: Display brands as list
|
36 |
-
> * Widget: Filter products by brand
|
37 |
-
> * Import brands from other brands plugins
|
38 |
-
> * Minimalist design and fully responsive
|
39 |
-
> * Very lightweight
|
40 |
-
> * Customizable brands slug
|
41 |
-
> * And much more!
|
42 |
-
|
43 |
-
|
44 |
-
== Installation ==
|
45 |
-
1. Upload the plugin to the '/wp-content/plugins/' directory.
|
46 |
-
2. Activate the plugin through the 'Plugins' menu in WordPress.
|
47 |
-
|
48 |
-
|
49 |
-
== Frequently Asked Questions ==
|
50 |
-
= Is Perfect WooCommerce Brands free? =
|
51 |
-
Yes, of course. This plugin is 100% free. No ads, no premium version exists.
|
52 |
-
|
53 |
-
= Where are plugin settings? =
|
54 |
-
Go to `WooCommerce/Settings/` and click on `Brands` tab
|
55 |
-
|
56 |
-
= How can i use the available shortcodes without Visual Composer? =
|
57 |
-
There are four shortcodes available:
|
58 |
-
> * Display all brands: [pwb-all-brands per_page="10" image_size="thumbnail"]
|
59 |
-
> * Display brands carousel: [pwb-carousel items="10" items_to_show="5" items_to_scroll="1" image_size="thumbnail" autoplay="true"]
|
60 |
-
> * Display product carousel by brand: [pwb-product-carousel brand="all" products="10" products_to_show="4" products_to_scroll="2" image_size="" items_to_show="2" autoplay="true"]
|
61 |
-
> * Display brands for a specific product: [pwb-brand product_id="5" image_size="thumbnail"]
|
62 |
-
|
63 |
-
|
64 |
-
== Screenshots ==
|
65 |
-
1. Brands carousel
|
66 |
-
2. Brands page
|
67 |
-
3. Brands taxonomy
|
68 |
-
4. Brands shortcodes (with Visual Composer)
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
*
|
75 |
-
* Feature:
|
76 |
-
* Feature
|
77 |
-
|
78 |
-
*
|
79 |
-
* Fix:
|
80 |
-
|
81 |
-
*
|
82 |
-
*
|
83 |
-
*
|
84 |
-
|
85 |
-
|
86 |
-
* Feature:
|
87 |
-
*
|
88 |
-
|
89 |
-
|
90 |
-
*
|
91 |
-
|
92 |
-
|
93 |
-
*
|
94 |
-
*
|
95 |
-
|
96 |
-
* Minor
|
97 |
-
= 1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
* Initial release
|
1 |
+
=== Perfect WooCommerce Brands ===
|
2 |
+
Contributors: titodevera
|
3 |
+
Donate link: mailto:hola@albertodevera.es
|
4 |
+
Tags: woocommerce, brands, brand taxonomy, product brands, woocommerce manufacturer, woocommerce supplier, e-commerce
|
5 |
+
Requires at least: 4.4
|
6 |
+
Tested up to: 4.7.2
|
7 |
+
Stable tag: 1.4.4
|
8 |
+
License: GPL3
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
|
10 |
+
|
11 |
+
Perfect WooCommerce Brands allows you to show product brands in your WooCommerce based store
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
Whether we like to admit it or not, we are all influenced by brands. Brands are a guarantee for quality, they assure product recognition in customers.
|
15 |
+
Is essential to work with product brands for increase sales and generate reliability on your e-commerce site.
|
16 |
+
With this extension you can add product brands to your WooCommerce site.
|
17 |
+
|
18 |
+
= Requirements =
|
19 |
+
> * PHP 5.3 or higher (tested on PHP7 too)
|
20 |
+
> * WordPress 4.4 or higher
|
21 |
+
> * WooCommerce 2.4.0 or higher
|
22 |
+
> * Visual Composer (recommended)
|
23 |
+
|
24 |
+
= Features =
|
25 |
+
> * Very easy to use, 100% free, no ads, no premium version exists
|
26 |
+
> * Assign brands to products
|
27 |
+
> * Associate a banner and a link to each brand
|
28 |
+
> * Translation-ready (English and Spanish included)
|
29 |
+
> * Shortcode: Display all brands
|
30 |
+
> * Shortcode: Display brands carousel
|
31 |
+
> * Shortcode: Display product carousel by brand
|
32 |
+
> * Shortcode: Display brands for a specific product
|
33 |
+
> * Visual Composer support
|
34 |
+
> * Widget: Display brands as dropdown
|
35 |
+
> * Widget: Display brands as list (brand names or brand logos)
|
36 |
+
> * Widget: Filter products by brand
|
37 |
+
> * Import brands from other brands plugins
|
38 |
+
> * Minimalist design and fully responsive
|
39 |
+
> * Very lightweight
|
40 |
+
> * Customizable brands slug
|
41 |
+
> * And much more!
|
42 |
+
|
43 |
+
|
44 |
+
== Installation ==
|
45 |
+
1. Upload the plugin to the '/wp-content/plugins/' directory.
|
46 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress.
|
47 |
+
|
48 |
+
|
49 |
+
== Frequently Asked Questions ==
|
50 |
+
= Is Perfect WooCommerce Brands free? =
|
51 |
+
Yes, of course. This plugin is 100% free. No ads, no premium version exists.
|
52 |
+
|
53 |
+
= Where are plugin settings? =
|
54 |
+
Go to `WooCommerce/Settings/` and click on `Brands` tab
|
55 |
+
|
56 |
+
= How can i use the available shortcodes without Visual Composer? =
|
57 |
+
There are four shortcodes available:
|
58 |
+
> * Display all brands: [pwb-all-brands per_page="10" image_size="thumbnail" hide_empty="false"]
|
59 |
+
> * Display brands carousel: [pwb-carousel items="10" items_to_show="5" items_to_scroll="1" image_size="thumbnail" autoplay="true" arrows="true"]
|
60 |
+
> * Display product carousel by brand: [pwb-product-carousel brand="all" products="10" products_to_show="4" products_to_scroll="2" image_size="" items_to_show="2" autoplay="true" arrows="true"]
|
61 |
+
> * Display brands for a specific product: [pwb-brand product_id="5" image_size="thumbnail"]
|
62 |
+
|
63 |
+
|
64 |
+
== Screenshots ==
|
65 |
+
1. Brands carousel
|
66 |
+
2. Brands page
|
67 |
+
3. Brands taxonomy
|
68 |
+
4. Brands shortcodes (with Visual Composer)
|
69 |
+
5. Product carousel by brand
|
70 |
+
|
71 |
+
|
72 |
+
== Changelog ==
|
73 |
+
= 1.4.4 =
|
74 |
+
* Important improvement of the user experience when assigning images to a brand
|
75 |
+
* Feature (Option): Hide brands in single product, show as image or show as link
|
76 |
+
* Feature: Hide prev/next arrows on carousel shortcodes
|
77 |
+
* Feature: Hide empty brands option for "Display all brands" shortcode
|
78 |
+
* Feature: New options for "Display brands as list" widget
|
79 |
+
* Fix: Autoplay bug on carousel shortcodes
|
80 |
+
* Tested on PHP7
|
81 |
+
* Shortcut to the plugin settings added to the plugin list page
|
82 |
+
* "Help us" notice added
|
83 |
+
* Minor code improvements
|
84 |
+
= 1.4.3 =
|
85 |
+
* Feature (Widget): Filter products by brand
|
86 |
+
* Feature (Option): Show brand logo in product loop
|
87 |
+
* Feature: Brand microdata added to product page
|
88 |
+
* Feature (Tool): Migrate brands from "YITH WooCommerce Brands Add-on"
|
89 |
+
= 1.4.2 =
|
90 |
+
* Fix: Table collapses in "Admin > Products > Brands" (thanks eljkmw)
|
91 |
+
* Fix: "pwb-brand" shortcode does not display the brand when it has not a logo assigned
|
92 |
+
= 1.4.1 =
|
93 |
+
* Feature (Option): Hide brand's description in archive page
|
94 |
+
* Fix: "pwb-all-brands" and "pwb-brand" show the content before they should
|
95 |
+
* Clean database on uninstallation
|
96 |
+
* Minor code improvements and fixes
|
97 |
+
= 1.4 =
|
98 |
+
* Feature: Product carousel by brand added
|
99 |
+
* Minor bug fixes
|
100 |
+
= 1.3 =
|
101 |
+
* Feature: If is set, show brand description in brand page
|
102 |
+
* Feature: Change brands position in single product
|
103 |
+
= 1.2 =
|
104 |
+
* Feature: Associate a banner and a link to each brand
|
105 |
+
* Minor tweaks
|
106 |
+
* Fully tested on WooCommerce 2.6
|
107 |
+
= 1.1 =
|
108 |
+
* Minor bug fixes
|
109 |
+
= 1.0 =
|
110 |
* Initial release
|
uninstall.php
CHANGED
@@ -1,15 +1,16 @@
|
|
1 |
-
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands;
|
3 |
-
|
4 |
-
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
-
|
6 |
-
delete_option('wc_pwb_admin_tab_section_title');
|
7 |
-
delete_option('wc_pwb_admin_tab_slug');
|
8 |
-
delete_option('wc_pwb_admin_tab_brand_logo_size');
|
9 |
-
delete_option('wc_pwb_admin_tab_brand_single_position');
|
10 |
-
delete_option('wc_pwb_admin_tab_brand_desc');
|
11 |
-
delete_option('wc_pwb_admin_tab_section_end');
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
|
1 |
+
<?php
|
2 |
+
namespace Perfect_Woocommerce_Brands;
|
3 |
+
|
4 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
+
|
6 |
+
delete_option('wc_pwb_admin_tab_section_title');
|
7 |
+
delete_option('wc_pwb_admin_tab_slug');
|
8 |
+
delete_option('wc_pwb_admin_tab_brand_logo_size');
|
9 |
+
delete_option('wc_pwb_admin_tab_brand_single_position');
|
10 |
+
delete_option('wc_pwb_admin_tab_brand_desc');
|
11 |
+
delete_option('wc_pwb_admin_tab_section_end');
|
12 |
+
delete_option('wc_pwb_notice_plugin_review');
|
13 |
+
|
14 |
+
//update permalinks and clean cache
|
15 |
+
flush_rewrite_rules();
|
16 |
+
wp_cache_flush();
|