Version Description
- Feature (Widget): Filter products by brand
- Feature (Option): Show brand logo in product loop
- Feature: Brand microdata added to product page
- Feature (Tool): Migrate brands from "YITH WooCommerce Brands Add-on"
Download this release
Release Info
Developer | titodevera |
Plugin | Perfect Brands for WooCommerce |
Version | 1.4.3 |
Comparing to | |
See all releases |
Code changes from version 1.4.2 to 1.4.3
- assets/css/styles-admin.css +26 -0
- assets/js/pwb_admin_functions.js +36 -0
- assets/js/pwb_frontend_functions.js +66 -0
- classes/class-perfect-woocommerce-brands.php +185 -22
- classes/class-pwb-admin-tab.php +66 -25
- classes/shortcodes/{class-pwb-all-brands-shortcode.php → class-pwb-all-brands.php} +4 -4
- classes/shortcodes/{class-pwb-brand-shortcode.php → class-pwb-brand.php} +2 -2
- classes/shortcodes/{class-pwb-carousel-shortcode.php → class-pwb-carousel.php} +3 -3
- classes/shortcodes/{class-pwb-product-carousel-shortcode.php → class-pwb-product-carousel.php} +4 -4
- classes/widgets/{class-pwb-dropdown-widget.php → class-pwb-dropdown.php} +5 -5
- classes/widgets/class-pwb-filter-by-brand.php +122 -0
- classes/widgets/{class-pwb-list-widget.php → class-pwb-list.php} +4 -4
- lang/perfect-woocommerce-brands-es_ES.mo +0 -0
- lang/perfect-woocommerce-brands-es_ES.po +157 -89
- main.php +36 -24
- readme.txt +13 -5
assets/css/styles-admin.css
CHANGED
@@ -15,3 +15,29 @@
|
|
15 |
}
|
16 |
}
|
17 |
/* ----------------------- /Taxonomy pwb-brand ----------------------- */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
16 |
}
|
17 |
/* ----------------------- /Taxonomy pwb-brand ----------------------- */
|
18 |
+
|
19 |
+
.pwb-modal{
|
20 |
+
position: fixed;
|
21 |
+
top: 0;
|
22 |
+
right: 0;
|
23 |
+
bottom: 0;
|
24 |
+
left: 0;
|
25 |
+
z-index: 99999999999;
|
26 |
+
line-height: 1;
|
27 |
+
background: rgba(0,0,0,0.9);
|
28 |
+
font-size: 2em;
|
29 |
+
padding-top: 20px;
|
30 |
+
text-align: center;
|
31 |
+
}
|
32 |
+
.pwb-modal-inner {
|
33 |
+
max-width: 70%;
|
34 |
+
margin: 0 auto;
|
35 |
+
animation: pwbblinkkf 3s linear infinite;
|
36 |
+
color: #fff;
|
37 |
+
}
|
38 |
+
.pwb-modal-inner p{
|
39 |
+
font-size: 2em;
|
40 |
+
}
|
41 |
+
@keyframes pwbblinkkf {
|
42 |
+
50% { opacity: 0; }
|
43 |
+
}
|
assets/js/pwb_admin_functions.js
CHANGED
@@ -39,4 +39,40 @@ jQuery(document).ready(function( $ ) {
|
|
39 |
open_media_uploader_image(event);
|
40 |
});
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
});
|
39 |
open_media_uploader_image(event);
|
40 |
});
|
41 |
|
42 |
+
|
43 |
+
/* ····························· Settings tab ····························· */
|
44 |
+
|
45 |
+
$('#wc_pwb_admin_tab_tools_migrate').on( 'change', function(){
|
46 |
+
|
47 |
+
if( $(this).val() != '-' ){
|
48 |
+
|
49 |
+
if( confirm(ajax_object.translations.migrate_notice) ){
|
50 |
+
|
51 |
+
$('html').append('<div class="pwb-modal"><div class="pwb-modal-inner"></div></div>');
|
52 |
+
$('.pwb-modal-inner').html('<p>'+ajax_object.translations.migrating+'</p>');
|
53 |
+
|
54 |
+
var data = {
|
55 |
+
'action': 'pwb_admin_migrate_brands',
|
56 |
+
'from': $(this).val()
|
57 |
+
};
|
58 |
+
jQuery.post(ajax_object.ajax_url, data, function(response) {
|
59 |
+
|
60 |
+
setTimeout( function(){
|
61 |
+
location.href = ajax_object.brands_url;
|
62 |
+
}, 1000 );
|
63 |
+
|
64 |
+
});
|
65 |
+
|
66 |
+
}else{
|
67 |
+
|
68 |
+
}
|
69 |
+
|
70 |
+
}
|
71 |
+
|
72 |
+
$(this).val('-');//reset to default value
|
73 |
+
|
74 |
+
} );
|
75 |
+
|
76 |
+
/* ····························· /Settings tab ····························· */
|
77 |
+
|
78 |
});
|
assets/js/pwb_frontend_functions.js
CHANGED
@@ -73,4 +73,70 @@ jQuery(document).ready(function( $ ) {
|
|
73 |
}
|
74 |
]
|
75 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
@@ -6,35 +6,153 @@
|
|
6 |
class Perfect_Woocommerce_Brands{
|
7 |
|
8 |
function __construct(){
|
9 |
-
add_action('
|
10 |
-
add_action('
|
11 |
-
add_action('
|
12 |
-
add_action('pwb-
|
13 |
-
add_action('
|
14 |
-
add_action('
|
15 |
-
|
16 |
-
add_filter('
|
17 |
-
|
18 |
-
add_action('admin_enqueue_scripts', array($this,'register_admin_scripts'));
|
19 |
$this->brand_logo_position();
|
20 |
-
add_action('woocommerce_before_shop_loop', array($this,'archive_page_banner'), 9);
|
21 |
-
add_action('woocommerce_before_shop_loop', array($this,'show_brand_description'), 9);
|
22 |
-
add_action('
|
23 |
-
|
24 |
if ( !is_admin() ) {
|
25 |
-
add_action('init', array($this,'register_frontend_scripts'));
|
26 |
}
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
add_shortcode( 'pwb-brand', array('\Perfect_Woocommerce_Brands\Pwb_Brand_Shortcode','brand_shortcode') );
|
31 |
if(is_plugin_active('js_composer/js_composer.php')){
|
32 |
-
add_action('vc_before_init', array($this,'vc_map_shortcodes') );
|
33 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
}
|
35 |
|
36 |
-
public function
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
39 |
|
40 |
public function show_brand_description(){
|
@@ -47,6 +165,39 @@
|
|
47 |
}
|
48 |
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
/**
|
51 |
* woocommerce_single_product_summary hook.
|
52 |
*
|
@@ -344,6 +495,18 @@
|
|
344 |
wp_enqueue_style('pwb_styles_brands');
|
345 |
wp_enqueue_media();
|
346 |
wp_enqueue_script('pwb_brands_js');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
347 |
}else{
|
348 |
return;
|
349 |
}
|
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 |
+
|
35 |
+
add_action( 'woocommerce_after_single_product_summary' , array( $this, 'product_microdata' ), 40 );
|
36 |
+
|
37 |
+
add_action( 'wp_ajax_pwb_admin_migrate_brands', array( $this, 'migrate_brands' ) );
|
38 |
+
|
39 |
+
add_action( 'pre_get_posts', array( $this, 'pwb_brand_filter' ) );
|
40 |
+
|
41 |
}
|
42 |
|
43 |
+
public function pwb_brand_filter( $query ){
|
44 |
+
|
45 |
+
if( !empty($_GET['pwb-brand-filter']) ){
|
46 |
+
|
47 |
+
$terms_array = explode(',',$_GET['pwb-brand-filter']);
|
48 |
+
|
49 |
+
//remove invalid terms (security)
|
50 |
+
for ($i=0; $i < count($terms_array); $i++) {
|
51 |
+
if( !term_exists( $terms_array[$i], 'pwb-brand' ) ){
|
52 |
+
unset($terms_array[$i]);
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
if ( !is_admin() && is_post_type_archive( 'product' ) && $query->is_main_query() ) {
|
57 |
+
|
58 |
+
$query->set('tax_query', array(
|
59 |
+
array (
|
60 |
+
'taxonomy' => 'pwb-brand',
|
61 |
+
'field' => 'slug',
|
62 |
+
'terms' => $terms_array
|
63 |
+
)
|
64 |
+
));
|
65 |
+
|
66 |
+
}
|
67 |
+
|
68 |
+
}
|
69 |
+
|
70 |
+
}
|
71 |
+
|
72 |
+
public function migrate_brands(){
|
73 |
+
|
74 |
+
if( isset( $_POST['from'] ) ){
|
75 |
+
|
76 |
+
switch ($_POST['from']) {
|
77 |
+
case 'yith':
|
78 |
+
|
79 |
+
$terms = get_terms( 'yith_product_brand', array(
|
80 |
+
'hide_empty' => false
|
81 |
+
) );
|
82 |
+
|
83 |
+
foreach ($terms as $term) {
|
84 |
+
|
85 |
+
global $wpdb;
|
86 |
+
|
87 |
+
//change taxonomy
|
88 |
+
$wpdb->update(
|
89 |
+
$wpdb->prefix . 'term_taxonomy',
|
90 |
+
array(
|
91 |
+
'taxonomy' => 'pwb-brand'
|
92 |
+
),
|
93 |
+
array(
|
94 |
+
'term_id' => $term->term_id
|
95 |
+
)
|
96 |
+
);
|
97 |
+
|
98 |
+
//update term meta
|
99 |
+
$wpdb->update(
|
100 |
+
$wpdb->prefix . 'termmeta',
|
101 |
+
array(
|
102 |
+
'meta_key' => 'pwb_brand_image'
|
103 |
+
),
|
104 |
+
array(
|
105 |
+
'meta_key' => 'thumbnail_id',
|
106 |
+
'term_id' => $term->term_id
|
107 |
+
)
|
108 |
+
);
|
109 |
+
|
110 |
+
}
|
111 |
+
|
112 |
+
break;
|
113 |
+
}
|
114 |
+
|
115 |
+
}
|
116 |
+
|
117 |
+
wp_die();
|
118 |
+
}
|
119 |
+
|
120 |
+
/*
|
121 |
+
* Adds microdata (brands) to single products
|
122 |
+
*/
|
123 |
+
public function product_microdata(){
|
124 |
+
global $product;
|
125 |
+
$brands = wp_get_post_terms( $product->id, 'pwb-brand');
|
126 |
+
|
127 |
+
foreach ($brands as $brand) {
|
128 |
+
echo '<meta itemprop="brand" content="'.$brand->name.'">';
|
129 |
+
}
|
130 |
+
|
131 |
+
}
|
132 |
+
|
133 |
+
public function add_shortcodes(){
|
134 |
+
add_shortcode( 'pwb-carousel', array(
|
135 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Carousel_Shortcode',
|
136 |
+
'carousel_shortcode'
|
137 |
+
) );
|
138 |
+
add_shortcode( 'pwb-product-carousel', array(
|
139 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Product_Carousel_Shortcode',
|
140 |
+
'product_carousel_shortcode'
|
141 |
+
) );
|
142 |
+
add_shortcode( 'pwb-all-brands', array(
|
143 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_All_Brands_Shortcode',
|
144 |
+
'all_brands_shortcode'
|
145 |
+
) );
|
146 |
+
add_shortcode( 'pwb-brand', array(
|
147 |
+
'\Perfect_Woocommerce_Brands\Shortcodes\PWB_Brand_Shortcode',
|
148 |
+
'brand_shortcode'
|
149 |
+
) );
|
150 |
+
}
|
151 |
+
|
152 |
+
public function register_widgets(){
|
153 |
+
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_List_Widget' );
|
154 |
+
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_Dropdown_Widget' );
|
155 |
+
register_widget( '\Perfect_Woocommerce_Brands\Widgets\PWB_Filter_By_Brand_Widget' );
|
156 |
}
|
157 |
|
158 |
public function show_brand_description(){
|
165 |
}
|
166 |
}
|
167 |
|
168 |
+
public function show_brands_in_loop(){
|
169 |
+
|
170 |
+
$brands_in_loop = get_option('wc_pwb_admin_tab_brands_in_loop');
|
171 |
+
|
172 |
+
if( $brands_in_loop == 'brand_link' || $brands_in_loop == 'brand_image' ){
|
173 |
+
|
174 |
+
global $product;
|
175 |
+
$product_id = $product->id;
|
176 |
+
$product_brands = wp_get_post_terms($product_id, 'pwb-brand');
|
177 |
+
if(!empty($product_brands)){
|
178 |
+
echo '<div class="pwb-brands-in-loop">';
|
179 |
+
foreach ($product_brands as $brand) {
|
180 |
+
|
181 |
+
echo '<span>';
|
182 |
+
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
183 |
+
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
184 |
+
|
185 |
+
$attachment_html = wp_get_attachment_image( $attachment_id, 'thumbnail' );
|
186 |
+
if( !empty($attachment_html) && $brands_in_loop == 'brand_image' ){
|
187 |
+
echo '<a href="'.$brand_link.'">'.$attachment_html.'</a>';
|
188 |
+
}else{
|
189 |
+
echo '<a href="'.$brand_link.'">'.$brand->name.'</a>';
|
190 |
+
}
|
191 |
+
echo '</span>';
|
192 |
+
|
193 |
+
}
|
194 |
+
echo '</div>';
|
195 |
+
}
|
196 |
+
|
197 |
+
}
|
198 |
+
|
199 |
+
}
|
200 |
+
|
201 |
/**
|
202 |
* woocommerce_single_product_summary hook.
|
203 |
*
|
495 |
wp_enqueue_style('pwb_styles_brands');
|
496 |
wp_enqueue_media();
|
497 |
wp_enqueue_script('pwb_brands_js');
|
498 |
+
}elseif( $hook == 'woocommerce_page_wc-settings' && isset($_GET['tab']) && $_GET['tab']=='pwb_admin_tab' ){
|
499 |
+
//settings tab page
|
500 |
+
wp_enqueue_style( 'pwb_styles_brands' );
|
501 |
+
wp_enqueue_script( 'pwb_brands_js' );
|
502 |
+
wp_localize_script( 'pwb_brands_js', 'ajax_object', array(
|
503 |
+
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
504 |
+
'brands_url' => admin_url( 'edit-tags.php?taxonomy=pwb-brand&post_type=product' ),
|
505 |
+
'translations' => array(
|
506 |
+
'migrate_notice' => __('¿Start migration?','perfect-woocommerce-brands'),
|
507 |
+
'migrating' => __('We are migrating the product brands. ¡Don´t close this window until the process is finished!','perfect-woocommerce-brands')
|
508 |
+
)
|
509 |
+
) );
|
510 |
}else{
|
511 |
return;
|
512 |
}
|
classes/class-pwb-admin-tab.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
@@ -11,7 +11,6 @@
|
|
11 |
add_action( 'woocommerce_update_options_pwb_admin_tab', __CLASS__ . '::update_settings' );
|
12 |
}
|
13 |
|
14 |
-
|
15 |
/**
|
16 |
* Add a new settings tab to the WooCommerce settings tabs array.
|
17 |
*
|
@@ -32,6 +31,7 @@
|
|
32 |
*/
|
33 |
public static function settings_tab() {
|
34 |
woocommerce_admin_fields( self::get_settings() );
|
|
|
35 |
}
|
36 |
|
37 |
|
@@ -69,23 +69,23 @@
|
|
69 |
|
70 |
$settings = array(
|
71 |
'section_title' => array(
|
72 |
-
'name'
|
73 |
-
'type'
|
74 |
-
'desc'
|
75 |
-
'id'
|
76 |
),
|
77 |
'slug' => array(
|
78 |
-
'name'
|
79 |
-
'type'
|
80 |
-
'desc'
|
81 |
-
'id'
|
82 |
'placeholder' => get_taxonomy('pwb-brand')->rewrite['slug']
|
83 |
),
|
84 |
'brand_logo_size' => array(
|
85 |
-
'name'
|
86 |
-
'type'
|
87 |
-
'desc'
|
88 |
-
'id'
|
89 |
'options' => $available_image_sizes_adapted
|
90 |
),
|
91 |
'brand_single_position' => array(
|
@@ -94,29 +94,70 @@
|
|
94 |
'desc' => __( 'For single product', 'perfect-woocommerce-brands' ),
|
95 |
'id' => 'wc_pwb_admin_tab_brand_single_position',
|
96 |
'options' => array(
|
97 |
-
'before_title'
|
98 |
-
'after_title'
|
99 |
-
'after_price'
|
100 |
-
'after_excerpt'
|
101 |
'after_add_to_cart' => __( 'After add to cart', 'perfect-woocommerce-brands' ),
|
102 |
-
'after_meta'
|
103 |
-
'after_sharing'
|
104 |
)
|
105 |
),
|
106 |
'brand_description' => array(
|
107 |
-
'name'
|
108 |
-
'type'
|
109 |
'default' => 'yes',
|
110 |
-
'desc'
|
111 |
-
'id'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
),
|
113 |
'section_end' => array(
|
114 |
'type' => 'sectionend',
|
115 |
-
'id'
|
116 |
)
|
117 |
);
|
118 |
|
119 |
return apply_filters( 'wc_pwb_admin_tab_settings', $settings );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
}
|
121 |
|
122 |
}
|
1 |
<?php
|
2 |
+
namespace Perfect_Woocommerce_Brands\Admin;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
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 |
*
|
31 |
*/
|
32 |
public static function settings_tab() {
|
33 |
woocommerce_admin_fields( self::get_settings() );
|
34 |
+
woocommerce_admin_fields( self::get_tools() );
|
35 |
}
|
36 |
|
37 |
|
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_logo_size' => array(
|
85 |
+
'name' => __( 'Brand logo size', 'perfect-woocommerce-brands' ),
|
86 |
+
'type' => 'select',
|
87 |
+
'desc' => __( 'Brand logo size for single product view', 'perfect-woocommerce-brands' ),
|
88 |
+
'id' => 'wc_pwb_admin_tab_brand_logo_size',
|
89 |
'options' => $available_image_sizes_adapted
|
90 |
),
|
91 |
'brand_single_position' => array(
|
94 |
'desc' => __( 'For single product', 'perfect-woocommerce-brands' ),
|
95 |
'id' => 'wc_pwb_admin_tab_brand_single_position',
|
96 |
'options' => array(
|
97 |
+
'before_title' => __( 'Before title', 'perfect-woocommerce-brands' ),
|
98 |
+
'after_title' => __( 'After title', 'perfect-woocommerce-brands' ),
|
99 |
+
'after_price' => __( 'After price', 'perfect-woocommerce-brands' ),
|
100 |
+
'after_excerpt' => __( 'After excerpt', 'perfect-woocommerce-brands' ),
|
101 |
'after_add_to_cart' => __( 'After add to cart', 'perfect-woocommerce-brands' ),
|
102 |
+
'after_meta' => __( 'After meta', 'perfect-woocommerce-brands' ),
|
103 |
+
'after_sharing' => __( 'After sharing', 'perfect-woocommerce-brands' )
|
104 |
)
|
105 |
),
|
106 |
'brand_description' => array(
|
107 |
+
'name' => __( 'Show brand description', 'perfect-woocommerce-brands' ),
|
108 |
+
'type' => 'checkbox',
|
109 |
'default' => 'yes',
|
110 |
+
'desc' => __( 'Show brand description (if is set) on brand archive page', 'perfect-woocommerce-brands' ),
|
111 |
+
'id' => 'wc_pwb_admin_tab_brand_desc'
|
112 |
+
),
|
113 |
+
'show_brand_on_loop' => array(
|
114 |
+
'name' => __( 'Show brands in loop', 'perfect-woocommerce-brands' ),
|
115 |
+
'type' => 'select',
|
116 |
+
'desc' => __( 'Show brand logo (or name) in product loop', 'perfect-woocommerce-brands' ),
|
117 |
+
'id' => 'wc_pwb_admin_tab_brands_in_loop',
|
118 |
+
'options' => array(
|
119 |
+
'no' => __( 'No', 'perfect-woocommerce-brands' ),
|
120 |
+
'brand_link' => __( 'Show brand link', 'perfect-woocommerce-brands' ),
|
121 |
+
'brand_image' => __( 'Show brand image (if is set)', 'perfect-woocommerce-brands' )
|
122 |
+
)
|
123 |
),
|
124 |
'section_end' => array(
|
125 |
'type' => 'sectionend',
|
126 |
+
'id' => 'wc_pwb_admin_tab_section_end'
|
127 |
)
|
128 |
);
|
129 |
|
130 |
return apply_filters( 'wc_pwb_admin_tab_settings', $settings );
|
131 |
+
|
132 |
+
}
|
133 |
+
|
134 |
+
public static function get_tools() {
|
135 |
+
|
136 |
+
$tools = array(
|
137 |
+
'section_title' => array(
|
138 |
+
'name' => __( 'Tools', 'perfect-woocommerce-brands' ),
|
139 |
+
'type' => 'title',
|
140 |
+
'desc' => '',
|
141 |
+
'id' => 'wc_pwb_admin_tab_section_tools_title'
|
142 |
+
),
|
143 |
+
'slug' => array(
|
144 |
+
'name' => __( 'Import brands', 'perfect-woocommerce-brands' ),
|
145 |
+
'type' => 'select',
|
146 |
+
'desc' => __( 'Import brands from old plugin installation', 'perfect-woocommerce-brands' ),
|
147 |
+
'id' => 'wc_pwb_admin_tab_tools_migrate',
|
148 |
+
'options' => array(
|
149 |
+
'-' => __( '-', 'perfect-woocommerce-brands' ),
|
150 |
+
'yith' => __( 'YITH WooCommerce Brands Add-On', 'perfect-woocommerce-brands' )
|
151 |
+
)
|
152 |
+
),
|
153 |
+
'section_end' => array(
|
154 |
+
'type' => 'sectionend',
|
155 |
+
'id' => 'wc_pwb_admin_tab_section_tools_end'
|
156 |
+
)
|
157 |
+
);
|
158 |
+
|
159 |
+
return apply_filters( 'wc_pwb_admin_tab_tools_settings', $tools );
|
160 |
+
|
161 |
}
|
162 |
|
163 |
}
|
classes/shortcodes/{class-pwb-all-brands-shortcode.php → class-pwb-all-brands.php}
RENAMED
@@ -1,11 +1,12 @@
|
|
1 |
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
6 |
-
class
|
7 |
|
8 |
public static function all_brands_shortcode( $atts ) {
|
|
|
9 |
$atts = shortcode_atts( array(
|
10 |
'per_page' => "10",
|
11 |
'image_size' => "thumbnail"
|
@@ -13,8 +14,7 @@
|
|
13 |
|
14 |
ob_start();
|
15 |
|
16 |
-
$brands = Perfect_Woocommerce_Brands::get_brands();
|
17 |
-
|
18 |
?>
|
19 |
<div class="pwb-all-brands">
|
20 |
<?php static::pagination($brands, $atts['per_page'], $atts['image_size']);?>
|
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"
|
14 |
|
15 |
ob_start();
|
16 |
|
17 |
+
$brands = \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_brands();
|
|
|
18 |
?>
|
19 |
<div class="pwb-all-brands">
|
20 |
<?php static::pagination($brands, $atts['per_page'], $atts['image_size']);?>
|
classes/shortcodes/{class-pwb-brand-shortcode.php → class-pwb-brand.php}
RENAMED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
6 |
-
class
|
7 |
|
8 |
public static function brand_shortcode( $atts ) {
|
9 |
$atts = shortcode_atts( array(
|
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(
|
classes/shortcodes/{class-pwb-carousel-shortcode.php → class-pwb-carousel.php}
RENAMED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
6 |
-
class
|
7 |
|
8 |
public static function carousel_shortcode( $atts ) {
|
9 |
$atts = shortcode_atts( array(
|
@@ -24,7 +24,7 @@
|
|
24 |
}
|
25 |
|
26 |
?><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;?>}'><?php
|
27 |
-
foreach(Perfect_Woocommerce_Brands::get_brands() as $brand){
|
28 |
if($foreach_iterator>=(int)$atts['items']){
|
29 |
break;
|
30 |
}
|
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(
|
24 |
}
|
25 |
|
26 |
?><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;?>}'><?php
|
27 |
+
foreach(\Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_brands() as $brand){
|
28 |
if($foreach_iterator>=(int)$atts['items']){
|
29 |
break;
|
30 |
}
|
classes/shortcodes/{class-pwb-product-carousel-shortcode.php → class-pwb-product-carousel.php}
RENAMED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
6 |
-
class
|
7 |
|
8 |
public static function product_carousel_shortcode( $atts ) {
|
9 |
$atts = shortcode_atts( array(
|
@@ -26,9 +26,9 @@
|
|
26 |
?>
|
27 |
|
28 |
<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;?>}'>
|
29 |
-
<?php echo Perfect_Woocommerce_Brands::get_products_by_brand($atts['brand'], (int)$atts['products']); ?>
|
30 |
</div>
|
31 |
-
|
32 |
<?php
|
33 |
return ob_get_clean();
|
34 |
}
|
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(
|
26 |
?>
|
27 |
|
28 |
<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;?>}'>
|
29 |
+
<?php echo \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands::get_products_by_brand($atts['brand'], (int)$atts['products']); ?>
|
30 |
</div>
|
31 |
+
|
32 |
<?php
|
33 |
return ob_get_clean();
|
34 |
}
|
classes/widgets/{class-pwb-dropdown-widget.php → class-pwb-dropdown.php}
RENAMED
@@ -1,16 +1,16 @@
|
|
1 |
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
6 |
-
class
|
7 |
|
8 |
function __construct(){
|
9 |
$params = array(
|
10 |
'description' => __( 'Adds a brands dropdown to your site', 'perfect-woocommerce-brands' ),
|
11 |
'name' => __( 'Brands dropdown', 'perfect-woocommerce-brands' )
|
12 |
);
|
13 |
-
parent::__construct('
|
14 |
}
|
15 |
|
16 |
public function form($instance){
|
@@ -25,7 +25,7 @@
|
|
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 |
|
30 |
<?php
|
31 |
}
|
@@ -66,4 +66,4 @@
|
|
66 |
|
67 |
}
|
68 |
|
69 |
-
}
|
1 |
<?php
|
2 |
+
namespace Perfect_Woocommerce_Brands\Widgets;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
6 |
+
class PWB_Dropdown_Widget extends \WP_Widget {
|
7 |
|
8 |
function __construct(){
|
9 |
$params = array(
|
10 |
'description' => __( 'Adds a brands dropdown to your site', 'perfect-woocommerce-brands' ),
|
11 |
'name' => __( 'Brands dropdown', 'perfect-woocommerce-brands' )
|
12 |
);
|
13 |
+
parent::__construct('PWB_Dropdown_Widget', '', $params);
|
14 |
}
|
15 |
|
16 |
public function form($instance){
|
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 |
|
30 |
<?php
|
31 |
}
|
66 |
|
67 |
}
|
68 |
|
69 |
+
}
|
classes/widgets/class-pwb-filter-by-brand.php
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace Perfect_Woocommerce_Brands\Widgets;
|
3 |
+
|
4 |
+
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
+
|
6 |
+
class PWB_Filter_By_Brand_Widget extends \WP_Widget {
|
7 |
+
|
8 |
+
function __construct() {
|
9 |
+
$params = array(
|
10 |
+
'description' => __( 'Recommended for product categories or shop page', 'perfect-woocommerce-brands' ),
|
11 |
+
'name' => __( 'Filter products by brand', 'perfect-woocommerce-brands' )
|
12 |
+
);
|
13 |
+
parent::__construct('PWB_Filter_By_Brand_Widget', '', $params);
|
14 |
+
}
|
15 |
+
|
16 |
+
public function form( $instance ) {
|
17 |
+
if ( isset( $instance[ 'title' ] ) ) {
|
18 |
+
$title = $instance[ 'title' ];
|
19 |
+
}else {
|
20 |
+
$title = 'Marcas';
|
21 |
+
}
|
22 |
+
?>
|
23 |
+
<p>
|
24 |
+
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
|
25 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
|
26 |
+
</p>
|
27 |
+
<?php
|
28 |
+
}
|
29 |
+
|
30 |
+
public function widget( $args, $instance ) {
|
31 |
+
|
32 |
+
$title = apply_filters( 'widget_title', $instance['title'] );
|
33 |
+
|
34 |
+
echo $args['before_widget'];
|
35 |
+
if ( ! empty( $title ) )
|
36 |
+
echo $args['before_title'] . $title . $args['after_title'];
|
37 |
+
$this->render_widget();
|
38 |
+
echo $args['after_widget'];
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
public function render_widget(){
|
43 |
+
|
44 |
+
$brands = get_terms('pwb-brand',array(
|
45 |
+
'hide_empty' => false
|
46 |
+
));
|
47 |
+
$brands_ids = array();
|
48 |
+
foreach ($brands as $brand) {
|
49 |
+
$brands_ids[] = $brand->term_id;
|
50 |
+
}
|
51 |
+
|
52 |
+
$cat = get_queried_object();
|
53 |
+
|
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();
|
61 |
+
$args = array(
|
62 |
+
'posts_per_page' => -1,
|
63 |
+
'post_type' => 'product',
|
64 |
+
'tax_query' => array(
|
65 |
+
'relation' => 'AND',
|
66 |
+
array(
|
67 |
+
'taxonomy' => 'product_cat',
|
68 |
+
'field' => 'term_id',
|
69 |
+
'terms' => $cat_id_array
|
70 |
+
),
|
71 |
+
array(
|
72 |
+
'taxonomy' => 'pwb-brand',
|
73 |
+
'field' => 'term_id',
|
74 |
+
'terms' => $brands_ids
|
75 |
+
)
|
76 |
+
)
|
77 |
+
);
|
78 |
+
|
79 |
+
$the_query = new \WP_Query($args);
|
80 |
+
if ( $the_query->have_posts() ) {
|
81 |
+
while ( $the_query->have_posts() ) {
|
82 |
+
$the_query->the_post();
|
83 |
+
|
84 |
+
$product_brands = wp_get_post_terms(get_the_ID(), 'pwb-brand');
|
85 |
+
|
86 |
+
foreach ($product_brands as $brand) {
|
87 |
+
$result_brands[] = $brand->term_id;
|
88 |
+
}
|
89 |
+
|
90 |
+
}
|
91 |
+
} else {
|
92 |
+
// no posts found
|
93 |
+
}
|
94 |
+
wp_reset_postdata();
|
95 |
+
|
96 |
+
$cate = get_queried_object();
|
97 |
+
$cateID = $cate->term_id;
|
98 |
+
$cate_url = get_term_link($cateID);
|
99 |
+
|
100 |
+
}else{
|
101 |
+
//no product category
|
102 |
+
$cate_url = get_permalink( woocommerce_get_page_id( 'shop' ));
|
103 |
+
shuffle($brands_ids);
|
104 |
+
$result_brands = array_slice($brands_ids, 0, 20);
|
105 |
+
}
|
106 |
+
|
107 |
+
global $wp;
|
108 |
+
$current_url = home_url(add_query_arg(array(),$wp->request));
|
109 |
+
|
110 |
+
echo '<div class="pwb-filter-products" data-cat-url="'.$cate_url.'">';
|
111 |
+
echo '<ul>';
|
112 |
+
foreach (array_unique($result_brands) as $brand) {
|
113 |
+
$term = get_term($brand);
|
114 |
+
echo '<li><input type="checkbox" data-brand="'.$brand.'" value="'.$term->slug.'">' . $term->name . '</li>';
|
115 |
+
}
|
116 |
+
echo '</ul>';
|
117 |
+
echo '<button>'.__('Apply filter','perfect-woocommerce-brands').'</button>';
|
118 |
+
echo '</div>';
|
119 |
+
|
120 |
+
}
|
121 |
+
|
122 |
+
}
|
classes/widgets/{class-pwb-list-widget.php → class-pwb-list.php}
RENAMED
@@ -1,16 +1,16 @@
|
|
1 |
<?php
|
2 |
-
namespace Perfect_Woocommerce_Brands;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
6 |
-
class
|
7 |
|
8 |
function __construct(){
|
9 |
$params = array(
|
10 |
'description' => __( 'Adds a brands list to your site', 'perfect-woocommerce-brands' ),
|
11 |
'name' => __( 'Brands list', 'perfect-woocommerce-brands' )
|
12 |
);
|
13 |
-
parent::__construct('
|
14 |
}
|
15 |
|
16 |
public function form($instance){
|
@@ -67,4 +67,4 @@
|
|
67 |
|
68 |
}
|
69 |
|
70 |
-
}
|
1 |
<?php
|
2 |
+
namespace Perfect_Woocommerce_Brands\Widgets;
|
3 |
|
4 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
5 |
|
6 |
+
class PWB_List_Widget extends \WP_Widget {
|
7 |
|
8 |
function __construct(){
|
9 |
$params = array(
|
10 |
'description' => __( 'Adds a brands list to your site', 'perfect-woocommerce-brands' ),
|
11 |
'name' => __( 'Brands list', 'perfect-woocommerce-brands' )
|
12 |
);
|
13 |
+
parent::__construct('PWB_List_Widget', '', $params);
|
14 |
}
|
15 |
|
16 |
public function form($instance){
|
67 |
|
68 |
}
|
69 |
|
70 |
+
}
|
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: 2016-
|
5 |
-
"PO-Revision-Date: 2016-
|
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,233 +20,245 @@ 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:85
|
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
|
144 |
-
#: classes/shortcodes/class-pwb-brand
|
145 |
-
#: classes/shortcodes/class-pwb-
|
|
|
146 |
msgid "View brand"
|
147 |
msgstr "Ver marca"
|
148 |
|
149 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
150 |
-
|
151 |
-
|
152 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
msgid "Brands"
|
154 |
msgstr "Marcas"
|
155 |
|
156 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
157 |
msgid "All Brands"
|
158 |
msgstr "Todas las marcas"
|
159 |
|
160 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
161 |
msgid "Edit Brand"
|
162 |
msgstr "Editar marca"
|
163 |
|
164 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
165 |
msgid "View Brand"
|
166 |
msgstr "Ver marca"
|
167 |
|
168 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
169 |
msgid "Update Brand"
|
170 |
msgstr "Actualizar marca"
|
171 |
|
172 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
173 |
msgid "Add New Brand"
|
174 |
msgstr "Añadir nueva marca"
|
175 |
|
176 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
177 |
msgid "New Brand Name"
|
178 |
msgstr "Nuevo nombre de marca"
|
179 |
|
180 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
181 |
msgid "Parent Brand"
|
182 |
msgstr "Marca Padre"
|
183 |
|
184 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
185 |
msgid "Parent Brand:"
|
186 |
msgstr "Marca Padre:"
|
187 |
|
188 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
189 |
msgid "Search Brands"
|
190 |
msgstr "Buscar Marcas"
|
191 |
|
192 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
193 |
msgid "Popular Brands"
|
194 |
msgstr "Marcas Populares"
|
195 |
|
196 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
197 |
msgid "Separate brands with commas"
|
198 |
msgstr "Separar marcas con comas"
|
199 |
|
200 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
201 |
msgid "Add or remove brands"
|
202 |
msgstr "Añadir o eliminar marcas"
|
203 |
|
204 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
205 |
msgid "Choose from the most used brands"
|
206 |
msgstr "Seleccionar de las marcas más utilizadas"
|
207 |
|
208 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
209 |
msgid "No brands found"
|
210 |
msgstr "No se han encontrado marcas"
|
211 |
|
212 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
213 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
214 |
msgid "Brand logo"
|
215 |
msgstr "Logo de la marca"
|
216 |
|
217 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
218 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
219 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
220 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
221 |
msgid "Select image"
|
222 |
msgstr "Seleccionar imagen"
|
223 |
|
224 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
225 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
226 |
msgid "Brand banner"
|
227 |
msgstr "Banner de la marca"
|
228 |
|
229 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
230 |
msgid "This image will be shown on brand page"
|
231 |
msgstr "Esta imagen se mostrará en la página de la marca"
|
232 |
|
233 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
234 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
235 |
msgid "Brand banner link"
|
236 |
msgstr "Enlace para el banner de la marca"
|
237 |
|
238 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
239 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
240 |
msgid "This link should be relative to site url. Example: product/product-name"
|
241 |
msgstr ""
|
242 |
"Este enlace ha de ser relativo a la url del sitio web. Ejemplo: producto/"
|
243 |
"nombre-del-producto"
|
244 |
|
245 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
246 |
msgid "Logo"
|
247 |
msgstr "Logo"
|
248 |
|
249 |
-
#: classes/class-perfect-woocommerce-brands.php:
|
250 |
msgid "No products found"
|
251 |
msgstr "No se han encontrado productos"
|
252 |
|
@@ -310,57 +322,113 @@ msgstr "Mostrar descripción de la marca"
|
|
310 |
msgid "Show brand description (if is set) on brand archive page"
|
311 |
msgstr "Mostrar descripción de la marca en la página de archivo"
|
312 |
|
313 |
-
#: classes/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
314 |
msgid "First page"
|
315 |
msgstr "Primera página"
|
316 |
|
317 |
-
#: classes/shortcodes/class-pwb-all-brands
|
318 |
msgid "Previous page"
|
319 |
msgstr "Página anterior"
|
320 |
|
321 |
-
#: classes/shortcodes/class-pwb-all-brands
|
322 |
msgid "Next page"
|
323 |
msgstr "Siguiente página"
|
324 |
|
325 |
-
#: classes/shortcodes/class-pwb-all-brands
|
326 |
msgid "Last page"
|
327 |
msgstr "Última página"
|
328 |
|
329 |
-
#: classes/shortcodes/class-pwb-all-brands
|
330 |
msgid "No results"
|
331 |
msgstr "No se han encontrado resultados"
|
332 |
|
333 |
-
#: classes/widgets/class-pwb-dropdown
|
334 |
msgid "Adds a brands dropdown to your site"
|
335 |
msgstr "Añade un desplegable con las marcas a tu sitio"
|
336 |
|
337 |
-
#: classes/widgets/class-pwb-dropdown
|
338 |
msgid "Brands dropdown"
|
339 |
msgstr "Desplegable de marcas"
|
340 |
|
341 |
-
#: classes/widgets/class-pwb-dropdown
|
342 |
-
#: classes/widgets/class-pwb-list
|
343 |
msgid "Title"
|
344 |
msgstr "Título"
|
345 |
|
346 |
-
#: classes/widgets/class-pwb-dropdown
|
347 |
-
#: classes/widgets/class-pwb-list
|
348 |
msgid "There is not available brands"
|
349 |
msgstr "No se encuentran marcas disponibles"
|
350 |
|
351 |
-
#: classes/widgets/class-pwb-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
352 |
msgid "Adds a brands list to your site"
|
353 |
msgstr "Añade una lista de marcas a tu sitio"
|
354 |
|
355 |
-
#: classes/widgets/class-pwb-list
|
356 |
msgid "Brands list"
|
357 |
msgstr "Lista de marcas"
|
358 |
|
359 |
-
#: classes/widgets/class-pwb-list
|
360 |
msgid "Go to"
|
361 |
msgstr "Ir a"
|
362 |
|
363 |
-
#: main.php:
|
364 |
msgid ""
|
365 |
"Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
|
366 |
"active WooCommerce plugin."
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: Perfect WooCommerce Brands\n"
|
4 |
+
"POT-Creation-Date: 2016-11-26 19:26+0100\n"
|
5 |
+
"PO-Revision-Date: 2016-11-26 19:26+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.11\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:261
|
24 |
msgid "PWB Product carousel"
|
25 |
msgstr "PWB Carrusel de productos"
|
26 |
|
27 |
+
#: classes/class-perfect-woocommerce-brands.php:262
|
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:270
|
32 |
+
#: classes/class-perfect-woocommerce-brands.php:519
|
33 |
msgid "Brand"
|
34 |
msgstr "Marca"
|
35 |
|
36 |
+
#: classes/class-perfect-woocommerce-brands.php:278
|
37 |
msgid "Products"
|
38 |
msgstr "Productos"
|
39 |
|
40 |
+
#: classes/class-perfect-woocommerce-brands.php:281
|
41 |
msgid "Number of products to load"
|
42 |
msgstr "Número de productos que cargar"
|
43 |
|
44 |
+
#: classes/class-perfect-woocommerce-brands.php:286
|
45 |
msgid "Products to show"
|
46 |
msgstr "Productos a mostrar"
|
47 |
|
48 |
+
#: classes/class-perfect-woocommerce-brands.php:289
|
49 |
msgid "Number of products to show"
|
50 |
msgstr "Número de productos que mostrar"
|
51 |
|
52 |
+
#: classes/class-perfect-woocommerce-brands.php:294
|
53 |
msgid "Products to scroll"
|
54 |
msgstr "Número de productos por scroll"
|
55 |
|
56 |
+
#: classes/class-perfect-woocommerce-brands.php:297
|
57 |
msgid "Number of products to scroll"
|
58 |
msgstr "Número de productos por cada scroll"
|
59 |
|
60 |
+
#: classes/class-perfect-woocommerce-brands.php:302
|
61 |
+
#: classes/class-perfect-woocommerce-brands.php:346
|
62 |
msgid "Autoplay"
|
63 |
msgstr "Modo automático"
|
64 |
|
65 |
+
#: classes/class-perfect-woocommerce-brands.php:304
|
66 |
+
#: classes/class-perfect-woocommerce-brands.php:348
|
67 |
msgid "Autoplay carousel"
|
68 |
msgstr "Modo automático para el carrusel"
|
69 |
|
70 |
+
#: classes/class-perfect-woocommerce-brands.php:312
|
71 |
msgid "PWB Brands carousel"
|
72 |
msgstr "PWB Carrusel de marcas"
|
73 |
|
74 |
+
#: classes/class-perfect-woocommerce-brands.php:313
|
75 |
msgid "Brands carousel"
|
76 |
msgstr "Carrusel de marcas"
|
77 |
|
78 |
+
#: classes/class-perfect-woocommerce-brands.php:322
|
79 |
msgid "Items"
|
80 |
msgstr "Elementos"
|
81 |
|
82 |
+
#: classes/class-perfect-woocommerce-brands.php:325
|
83 |
msgid "Number of items to load"
|
84 |
msgstr "Número de elementos que cargar"
|
85 |
|
86 |
+
#: classes/class-perfect-woocommerce-brands.php:330
|
87 |
msgid "Items to show"
|
88 |
msgstr "Elementos a mostrar"
|
89 |
|
90 |
+
#: classes/class-perfect-woocommerce-brands.php:333
|
91 |
msgid "Number of items to show"
|
92 |
msgstr "Número de elementos a mostrar"
|
93 |
|
94 |
+
#: classes/class-perfect-woocommerce-brands.php:338
|
95 |
msgid "Items to scroll"
|
96 |
msgstr "Número de elementos por scroll"
|
97 |
|
98 |
+
#: classes/class-perfect-woocommerce-brands.php:341
|
99 |
msgid "Number of items to scroll"
|
100 |
msgstr "Número de elementos por cada scroll"
|
101 |
|
102 |
+
#: classes/class-perfect-woocommerce-brands.php:352
|
103 |
+
#: classes/class-perfect-woocommerce-brands.php:381
|
104 |
+
#: classes/class-perfect-woocommerce-brands.php:410
|
105 |
#: classes/class-pwb-admin-tab.php:85
|
106 |
msgid "Brand logo size"
|
107 |
msgstr "Tamaño del logo de la marca"
|
108 |
|
109 |
+
#: classes/class-perfect-woocommerce-brands.php:363
|
110 |
msgid "PWB All brands"
|
111 |
msgstr "PWB Todas las marcas"
|
112 |
|
113 |
+
#: classes/class-perfect-woocommerce-brands.php:364
|
114 |
msgid "Show all brands"
|
115 |
msgstr "Mostrar todas las marcas"
|
116 |
|
117 |
+
#: classes/class-perfect-woocommerce-brands.php:374
|
118 |
msgid "Brands per page"
|
119 |
msgstr "Marcas por página"
|
120 |
|
121 |
+
#: classes/class-perfect-woocommerce-brands.php:377
|
122 |
msgid "Show x brands per page"
|
123 |
msgstr "Mostrar x marcas por página"
|
124 |
|
125 |
+
#: classes/class-perfect-woocommerce-brands.php:392
|
126 |
msgid "PWB brand"
|
127 |
msgstr "PWB Marca"
|
128 |
|
129 |
+
#: classes/class-perfect-woocommerce-brands.php:393
|
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:403
|
134 |
msgid "Product id"
|
135 |
msgstr "Id del producto"
|
136 |
|
137 |
+
#: classes/class-perfect-woocommerce-brands.php:406
|
138 |
msgid "Product id (post id)"
|
139 |
msgstr "Id del producto (id del post)"
|
140 |
|
141 |
+
#: classes/class-perfect-woocommerce-brands.php:440
|
142 |
+
#: classes/class-perfect-woocommerce-brands.php:442
|
143 |
+
#: classes/shortcodes/class-pwb-all-brands.php:70
|
144 |
+
#: classes/shortcodes/class-pwb-brand.php:29
|
145 |
+
#: classes/shortcodes/class-pwb-brand.php:31
|
146 |
+
#: classes/shortcodes/class-pwb-carousel.php:42
|
147 |
msgid "View brand"
|
148 |
msgstr "Ver marca"
|
149 |
|
150 |
+
#: classes/class-perfect-woocommerce-brands.php:506
|
151 |
+
msgid "¿Start migration?"
|
152 |
+
msgstr "¿Comenzar la migración?"
|
153 |
+
|
154 |
+
#: classes/class-perfect-woocommerce-brands.php:507
|
155 |
+
msgid ""
|
156 |
+
"We are migrating the product brands. ¡Don´t close this window until the "
|
157 |
+
"process is finished!"
|
158 |
+
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:518
|
163 |
+
#: classes/class-perfect-woocommerce-brands.php:520
|
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:521
|
169 |
msgid "All Brands"
|
170 |
msgstr "Todas las marcas"
|
171 |
|
172 |
+
#: classes/class-perfect-woocommerce-brands.php:522
|
173 |
msgid "Edit Brand"
|
174 |
msgstr "Editar marca"
|
175 |
|
176 |
+
#: classes/class-perfect-woocommerce-brands.php:523
|
177 |
msgid "View Brand"
|
178 |
msgstr "Ver marca"
|
179 |
|
180 |
+
#: classes/class-perfect-woocommerce-brands.php:524
|
181 |
msgid "Update Brand"
|
182 |
msgstr "Actualizar marca"
|
183 |
|
184 |
+
#: classes/class-perfect-woocommerce-brands.php:525
|
185 |
msgid "Add New Brand"
|
186 |
msgstr "Añadir nueva marca"
|
187 |
|
188 |
+
#: classes/class-perfect-woocommerce-brands.php:526
|
189 |
msgid "New Brand Name"
|
190 |
msgstr "Nuevo nombre de marca"
|
191 |
|
192 |
+
#: classes/class-perfect-woocommerce-brands.php:527
|
193 |
msgid "Parent Brand"
|
194 |
msgstr "Marca Padre"
|
195 |
|
196 |
+
#: classes/class-perfect-woocommerce-brands.php:528
|
197 |
msgid "Parent Brand:"
|
198 |
msgstr "Marca Padre:"
|
199 |
|
200 |
+
#: classes/class-perfect-woocommerce-brands.php:529
|
201 |
msgid "Search Brands"
|
202 |
msgstr "Buscar Marcas"
|
203 |
|
204 |
+
#: classes/class-perfect-woocommerce-brands.php:530
|
205 |
msgid "Popular Brands"
|
206 |
msgstr "Marcas Populares"
|
207 |
|
208 |
+
#: classes/class-perfect-woocommerce-brands.php:531
|
209 |
msgid "Separate brands with commas"
|
210 |
msgstr "Separar marcas con comas"
|
211 |
|
212 |
+
#: classes/class-perfect-woocommerce-brands.php:532
|
213 |
msgid "Add or remove brands"
|
214 |
msgstr "Añadir o eliminar marcas"
|
215 |
|
216 |
+
#: classes/class-perfect-woocommerce-brands.php:533
|
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:534
|
221 |
msgid "No brands found"
|
222 |
msgstr "No se han encontrado marcas"
|
223 |
|
224 |
+
#: classes/class-perfect-woocommerce-brands.php:578
|
225 |
+
#: classes/class-perfect-woocommerce-brands.php:611
|
226 |
msgid "Brand logo"
|
227 |
msgstr "Logo de la marca"
|
228 |
|
229 |
+
#: classes/class-perfect-woocommerce-brands.php:580
|
230 |
+
#: classes/class-perfect-woocommerce-brands.php:587
|
231 |
+
#: classes/class-perfect-woocommerce-brands.php:615
|
232 |
+
#: classes/class-perfect-woocommerce-brands.php:626
|
233 |
msgid "Select image"
|
234 |
msgstr "Seleccionar imagen"
|
235 |
|
236 |
+
#: classes/class-perfect-woocommerce-brands.php:585
|
237 |
+
#: classes/class-perfect-woocommerce-brands.php:622
|
238 |
msgid "Brand banner"
|
239 |
msgstr "Banner de la marca"
|
240 |
|
241 |
+
#: classes/class-perfect-woocommerce-brands.php:588
|
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:593
|
246 |
+
#: classes/class-perfect-woocommerce-brands.php:633
|
247 |
msgid "Brand banner link"
|
248 |
msgstr "Enlace para el banner de la marca"
|
249 |
|
250 |
+
#: classes/class-perfect-woocommerce-brands.php:595
|
251 |
+
#: classes/class-perfect-woocommerce-brands.php:637
|
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:695
|
258 |
msgid "Logo"
|
259 |
msgstr "Logo"
|
260 |
|
261 |
+
#: classes/class-perfect-woocommerce-brands.php:785
|
262 |
msgid "No products found"
|
263 |
msgstr "No se han encontrado productos"
|
264 |
|
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:144
|
350 |
+
msgid "Import brands"
|
351 |
+
msgstr "Importar marcas"
|
352 |
+
|
353 |
+
#: classes/class-pwb-admin-tab.php:146
|
354 |
+
msgid "Import brands from old plugin installation"
|
355 |
+
msgstr "Importar marcas de otro plugin"
|
356 |
+
|
357 |
+
#: classes/class-pwb-admin-tab.php:149
|
358 |
+
msgid "-"
|
359 |
+
msgstr "-"
|
360 |
+
|
361 |
+
#: classes/class-pwb-admin-tab.php:150
|
362 |
+
msgid "YITH WooCommerce Brands Add-On"
|
363 |
+
msgstr "YITH WooCommerce Brands Add-On"
|
364 |
+
|
365 |
+
#: classes/shortcodes/class-pwb-all-brands.php:83
|
366 |
msgid "First page"
|
367 |
msgstr "Primera página"
|
368 |
|
369 |
+
#: classes/shortcodes/class-pwb-all-brands.php:86
|
370 |
msgid "Previous page"
|
371 |
msgstr "Página anterior"
|
372 |
|
373 |
+
#: classes/shortcodes/class-pwb-all-brands.php:90
|
374 |
msgid "Next page"
|
375 |
msgstr "Siguiente página"
|
376 |
|
377 |
+
#: classes/shortcodes/class-pwb-all-brands.php:93
|
378 |
msgid "Last page"
|
379 |
msgstr "Última página"
|
380 |
|
381 |
+
#: classes/shortcodes/class-pwb-all-brands.php:98
|
382 |
msgid "No results"
|
383 |
msgstr "No se han encontrado resultados"
|
384 |
|
385 |
+
#: classes/widgets/class-pwb-dropdown.php:10
|
386 |
msgid "Adds a brands dropdown to your site"
|
387 |
msgstr "Añade un desplegable con las marcas a tu sitio"
|
388 |
|
389 |
+
#: classes/widgets/class-pwb-dropdown.php:11
|
390 |
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:65
|
400 |
msgid "There is not available brands"
|
401 |
msgstr "No se encuentran marcas disponibles"
|
402 |
|
403 |
+
#: classes/widgets/class-pwb-filter-by-brand.php:10
|
404 |
+
msgid "Recommended for product categories or shop page"
|
405 |
+
msgstr "Recomendado para las categorías de producto y la página de la tienda"
|
406 |
+
|
407 |
+
#: classes/widgets/class-pwb-filter-by-brand.php:11
|
408 |
+
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 |
+
|
415 |
+
#: classes/widgets/class-pwb-filter-by-brand.php:117
|
416 |
+
msgid "Apply filter"
|
417 |
+
msgstr "Filtrar"
|
418 |
+
|
419 |
+
#: classes/widgets/class-pwb-list.php:10
|
420 |
msgid "Adds a brands list to your site"
|
421 |
msgstr "Añade una lista de marcas a tu sitio"
|
422 |
|
423 |
+
#: classes/widgets/class-pwb-list.php:11
|
424 |
msgid "Brands list"
|
425 |
msgstr "Lista de marcas"
|
426 |
|
427 |
+
#: classes/widgets/class-pwb-list.php:60
|
428 |
msgid "Go to"
|
429 |
msgstr "Ir a"
|
430 |
|
431 |
+
#: main.php:67
|
432 |
msgid ""
|
433 |
"Perfect WooCommerce Brands needs WooCommerce to run. Please, install and "
|
434 |
"active WooCommerce plugin."
|
main.php
CHANGED
@@ -3,14 +3,14 @@
|
|
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
|
@@ -31,29 +31,41 @@ namespace Perfect_Woocommerce_Brands;
|
|
31 |
|
32 |
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
33 |
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
37 |
-
if(is_plugin_active('woocommerce/woocommerce.php')){
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
});
|
58 |
|
59 |
}
|
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.3
|
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.3, 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
|
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_VERSION', '1.4.3');
|
38 |
+
|
39 |
+
//clean brands slug on plugin deactivation
|
40 |
+
register_deactivation_hook( __FILE__, function(){
|
41 |
+
update_option( 'old_wc_pwb_admin_tab_slug', 'null' );
|
42 |
+
} );
|
43 |
+
|
44 |
+
//loads textdomain for the translations
|
45 |
+
add_action( 'plugins_loaded', function(){
|
46 |
+
load_plugin_textdomain( 'perfect-woocommerce-brands', false, PWB_PLUGIN_PATH . '/lang' );
|
47 |
+
} );
|
48 |
|
49 |
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
50 |
+
if( is_plugin_active( 'woocommerce/woocommerce.php' ) ){
|
51 |
+
|
52 |
+
require 'classes/widgets/class-pwb-dropdown.php';
|
53 |
+
require 'classes/widgets/class-pwb-list.php';
|
54 |
+
require 'classes/widgets/class-pwb-filter-by-brand.php';
|
55 |
+
require 'classes/shortcodes/class-pwb-product-carousel.php';
|
56 |
+
require 'classes/shortcodes/class-pwb-carousel.php';
|
57 |
+
require 'classes/shortcodes/class-pwb-all-brands.php';
|
58 |
+
require 'classes/shortcodes/class-pwb-brand.php';
|
59 |
+
require 'classes/class-perfect-woocommerce-brands.php';
|
60 |
+
require 'classes/class-pwb-admin-tab.php';
|
61 |
+
|
62 |
+
new \Perfect_Woocommerce_Brands\Perfect_Woocommerce_Brands();
|
63 |
+
|
64 |
+
}elseif( is_admin() ){
|
65 |
+
|
66 |
+
add_action( 'admin_notices', function() {
|
67 |
+
$message = __( 'Perfect WooCommerce Brands needs WooCommerce to run. Please, install and active WooCommerce plugin.', 'perfect-woocommerce-brands' );
|
68 |
+
printf( '<div class="%1$s"><p>%2$s</p></div>', 'notice notice-error', $message );
|
69 |
+
});
|
|
|
70 |
|
71 |
}
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: titodevera
|
|
3 |
Donate link: mailto:albertodeverasevilla@gmail.com
|
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 |
|
@@ -33,9 +33,12 @@ With this extension you can add product brands to your WooCommerce site.
|
|
33 |
> * Visual Composer support
|
34 |
> * Widget: Display brands as dropdown
|
35 |
> * Widget: Display brands as list
|
|
|
|
|
36 |
> * Minimalist design and fully responsive
|
37 |
> * Very lightweight
|
38 |
> * Customizable brands slug
|
|
|
39 |
|
40 |
|
41 |
== Installation ==
|
@@ -51,11 +54,11 @@ Yes, of course. This plugin is 100% free. No ads, no premium version exists.
|
|
51 |
Go to `WooCommerce/Settings/` and click on `Brands` tab
|
52 |
|
53 |
= How can i use the available shortcodes without Visual Composer? =
|
54 |
-
There are
|
55 |
> * Display all brands: [pwb-all-brands per_page="10" image_size="thumbnail"]
|
56 |
-
> * Display brands carousel: [pwb-carousel items="10" items_to_show="5" items_to_scroll="1" image_size="thumbnail" autoplay="true"]
|
|
|
57 |
> * Display brands for a specific product: [pwb-brand product_id="5" image_size="thumbnail"]
|
58 |
-
> * 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"]
|
59 |
|
60 |
|
61 |
== Screenshots ==
|
@@ -66,6 +69,11 @@ There are three shortcodes available:
|
|
66 |
|
67 |
|
68 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
69 |
= 1.4.2 =
|
70 |
* Fix: Table collapses in "Admin > Products > Brands" (thanks eljkmw)
|
71 |
* Fix: "pwb-brand" shortcode does not display the brand when it has not a logo assigned
|
3 |
Donate link: mailto:albertodeverasevilla@gmail.com
|
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.6.1
|
7 |
+
Stable tag: 1.4.3
|
8 |
License: GPL3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
|
10 |
|
33 |
> * Visual Composer support
|
34 |
> * Widget: Display brands as dropdown
|
35 |
> * Widget: Display brands as list
|
36 |
+
> * Widget: Filter products by brand **NEW!**
|
37 |
+
> * Import brands from other brands plugins **NEW!**
|
38 |
> * Minimalist design and fully responsive
|
39 |
> * Very lightweight
|
40 |
> * Customizable brands slug
|
41 |
+
> * And much more!
|
42 |
|
43 |
|
44 |
== Installation ==
|
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 ==
|
69 |
|
70 |
|
71 |
== Changelog ==
|
72 |
+
= 1.4.3 =
|
73 |
+
* Feature (Widget): Filter products by brand
|
74 |
+
* Feature (Option): Show brand logo in product loop
|
75 |
+
* Feature: Brand microdata added to product page
|
76 |
+
* Feature (Tool): Migrate brands from "YITH WooCommerce Brands Add-on"
|
77 |
= 1.4.2 =
|
78 |
* Fix: Table collapses in "Admin > Products > Brands" (thanks eljkmw)
|
79 |
* Fix: "pwb-brand" shortcode does not display the brand when it has not a logo assigned
|