Version Description
- Feature: Now is possible to use %pwb-brand% in the product URLs
- Fix: Fatal error in some themes (like Salient)
- Fix: Some php notices and warnings fixed
- Fix: Don't show brand description/banner in paged
Download this release
Release Info
Developer | titodevera |
Plugin | Perfect Brands for WooCommerce |
Version | 1.7.2 |
Comparing to | |
See all releases |
Code changes from version 1.7.1 to 1.7.2
- classes/class-perfect-woocommerce-brands.php +23 -18
- classes/class-pwb-api-support.php +3 -10
- classes/shortcodes/class-pwb-brand.php +29 -27
- main.php +9 -12
- readme.txt +22 -16
classes/class-perfect-woocommerce-brands.php
CHANGED
@@ -11,26 +11,20 @@ class Perfect_Woocommerce_Brands{
|
|
11 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
12 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
|
13 |
$this->brand_logo_position();
|
14 |
-
add_action( '
|
15 |
add_action( 'woocommerce_after_shop_loop_item_title', array( $this, 'show_brands_in_loop' ) );
|
16 |
$this->add_shortcodes();
|
17 |
if( is_plugin_active('js_composer/js_composer.php') || is_plugin_active('visual_composer/js_composer.php') ){
|
18 |
add_action( 'vc_before_init', array( $this,'vc_map_shortcodes' ) );
|
19 |
}
|
20 |
add_action( 'widgets_init', array( $this, 'register_widgets' ) );
|
21 |
-
|
22 |
-
if( defined('PWB_WC_VERSION') && version_compare( PWB_WC_VERSION, '3.0.0', '>=' ) ){
|
23 |
-
add_filter( 'woocommerce_structured_data_product', array( $this, 'product_microdata' ), 10, 2 );
|
24 |
-
}else{
|
25 |
-
add_action( 'wp_head' , array( $this, 'product_microdata_legacy' ), 40 );
|
26 |
-
}
|
27 |
-
|
28 |
add_action( 'pre_get_posts', array( $this, 'pwb_brand_filter' ) );
|
29 |
add_filter( 'plugin_action_links_' . PWB_PLUGIN_BASENAME, array( $this, 'plugin_action_links' ) );
|
30 |
add_action( 'wp_ajax_dismiss_pwb_notice', array( $this, 'dismiss_pwb_notice' ) );
|
31 |
add_action( 'admin_notices', array( $this, 'review_notice' ) );
|
32 |
|
33 |
-
add_action( '
|
34 |
if( is_tax('pwb-brand') )
|
35 |
remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
|
36 |
});
|
@@ -39,10 +33,21 @@ class Perfect_Woocommerce_Brands{
|
|
39 |
add_filter( 'woocommerce_get_breadcrumb', array( $this, 'breadcrumbs' ) );
|
40 |
|
41 |
add_filter( 'shortcode_atts_products', array( $this, 'extend_products_shortcode_atts' ), 10, 4 );
|
42 |
-
add_filter( 'woocommerce_shortcode_products_query', array( $this, 'extend_products_shortcode' ), 10,
|
43 |
|
44 |
add_filter( 'manage_edit-product_sortable_columns', array( $this, 'brands_column_sortable' ), 90 );
|
45 |
add_action( 'posts_clauses', array( $this, 'brands_column_sortable_posts' ), 10, 2 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
}
|
47 |
|
48 |
public function brands_column_sortable_posts( $clauses, $wp_query ) {
|
@@ -74,7 +79,7 @@ class Perfect_Woocommerce_Brands{
|
|
74 |
return $out;
|
75 |
}
|
76 |
|
77 |
-
public function extend_products_shortcode( $query_args, $atts
|
78 |
|
79 |
if( !empty( $atts['brands'] ) ){
|
80 |
global $wpdb;
|
@@ -319,7 +324,7 @@ class Perfect_Woocommerce_Brands{
|
|
319 |
|
320 |
public function brand_desc_position(){
|
321 |
|
322 |
-
if( is_tax('pwb-brand') ){
|
323 |
|
324 |
$show_banner = get_option('wc_pwb_admin_tab_brand_banner');
|
325 |
$show_desc = get_option('wc_pwb_admin_tab_brand_desc');
|
@@ -374,7 +379,7 @@ class Perfect_Woocommerce_Brands{
|
|
374 |
"base" => "pwb-product-carousel",
|
375 |
"class" => "",
|
376 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
377 |
-
"category" => "
|
378 |
"params" => array(
|
379 |
array(
|
380 |
"type" => "dropdown",
|
@@ -430,7 +435,7 @@ class Perfect_Woocommerce_Brands{
|
|
430 |
"base" => "pwb-carousel",
|
431 |
"class" => "",
|
432 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
433 |
-
"category" => "
|
434 |
"params" => array(
|
435 |
array(
|
436 |
"type" => "textfield",
|
@@ -488,7 +493,7 @@ class Perfect_Woocommerce_Brands{
|
|
488 |
"base" => "pwb-all-brands",
|
489 |
"class" => "",
|
490 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
491 |
-
"category" => "
|
492 |
"params" => array(
|
493 |
array(
|
494 |
"type" => "textfield",
|
@@ -558,7 +563,7 @@ class Perfect_Woocommerce_Brands{
|
|
558 |
"base" => "pwb-az-listing",
|
559 |
"class" => "",
|
560 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
561 |
-
"category" => "
|
562 |
"params" => array()
|
563 |
));
|
564 |
|
@@ -568,7 +573,7 @@ class Perfect_Woocommerce_Brands{
|
|
568 |
"base" => "pwb-brand",
|
569 |
"class" => "",
|
570 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
571 |
-
"category" => "
|
572 |
|
573 |
"params" => array(
|
574 |
array(
|
@@ -759,7 +764,7 @@ class Perfect_Woocommerce_Brands{
|
|
759 |
public static function get_brands( $hide_empty = false, $order_by = 'name', $order = 'ASC', $only_featured = false, $pwb_term = false ){
|
760 |
$result = array();
|
761 |
|
762 |
-
$brands_args = array( 'hide_empty' => $hide_empty, '
|
763 |
if( $only_featured ) $brands_args['meta_query'] = array( array( 'key' => 'pwb_featured_brand', 'value' => true ) );
|
764 |
|
765 |
$brands = get_terms('pwb-brand', $brands_args);
|
11 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
12 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
|
13 |
$this->brand_logo_position();
|
14 |
+
add_action( 'wp', array( $this, 'brand_desc_position' ) );
|
15 |
add_action( 'woocommerce_after_shop_loop_item_title', array( $this, 'show_brands_in_loop' ) );
|
16 |
$this->add_shortcodes();
|
17 |
if( is_plugin_active('js_composer/js_composer.php') || is_plugin_active('visual_composer/js_composer.php') ){
|
18 |
add_action( 'vc_before_init', array( $this,'vc_map_shortcodes' ) );
|
19 |
}
|
20 |
add_action( 'widgets_init', array( $this, 'register_widgets' ) );
|
21 |
+
add_filter( 'woocommerce_structured_data_product', array( $this, 'product_microdata' ), 10, 2 );
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
add_action( 'pre_get_posts', array( $this, 'pwb_brand_filter' ) );
|
23 |
add_filter( 'plugin_action_links_' . PWB_PLUGIN_BASENAME, array( $this, 'plugin_action_links' ) );
|
24 |
add_action( 'wp_ajax_dismiss_pwb_notice', array( $this, 'dismiss_pwb_notice' ) );
|
25 |
add_action( 'admin_notices', array( $this, 'review_notice' ) );
|
26 |
|
27 |
+
add_action( 'wp', function(){
|
28 |
if( is_tax('pwb-brand') )
|
29 |
remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description', 10 );
|
30 |
});
|
33 |
add_filter( 'woocommerce_get_breadcrumb', array( $this, 'breadcrumbs' ) );
|
34 |
|
35 |
add_filter( 'shortcode_atts_products', array( $this, 'extend_products_shortcode_atts' ), 10, 4 );
|
36 |
+
add_filter( 'woocommerce_shortcode_products_query', array( $this, 'extend_products_shortcode' ), 10, 2 );
|
37 |
|
38 |
add_filter( 'manage_edit-product_sortable_columns', array( $this, 'brands_column_sortable' ), 90 );
|
39 |
add_action( 'posts_clauses', array( $this, 'brands_column_sortable_posts' ), 10, 2 );
|
40 |
+
add_filter( 'post_type_link', array( $this, 'brand_name_in_url' ), 10, 2 );
|
41 |
+
}
|
42 |
+
|
43 |
+
public function brand_name_in_url( $permalink, $post ){
|
44 |
+
if( $post->post_type == 'product' ) {
|
45 |
+
$term = 'product';
|
46 |
+
$brands = wp_get_post_terms( $post->ID, 'pwb-brand' );
|
47 |
+
if( ! empty( $brands ) && ! is_wp_error( $brands ) ) $term = current( $brands )->slug;
|
48 |
+
$permalink = str_replace( '%pwb-brand%', $term, $permalink );
|
49 |
+
}
|
50 |
+
return $permalink;
|
51 |
}
|
52 |
|
53 |
public function brands_column_sortable_posts( $clauses, $wp_query ) {
|
79 |
return $out;
|
80 |
}
|
81 |
|
82 |
+
public function extend_products_shortcode( $query_args, $atts ){
|
83 |
|
84 |
if( !empty( $atts['brands'] ) ){
|
85 |
global $wpdb;
|
324 |
|
325 |
public function brand_desc_position(){
|
326 |
|
327 |
+
if( is_tax('pwb-brand') && !is_paged() ){
|
328 |
|
329 |
$show_banner = get_option('wc_pwb_admin_tab_brand_banner');
|
330 |
$show_desc = get_option('wc_pwb_admin_tab_brand_desc');
|
379 |
"base" => "pwb-product-carousel",
|
380 |
"class" => "",
|
381 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
382 |
+
"category" => "WooCommerce",
|
383 |
"params" => array(
|
384 |
array(
|
385 |
"type" => "dropdown",
|
435 |
"base" => "pwb-carousel",
|
436 |
"class" => "",
|
437 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
438 |
+
"category" => "WooCommerce",
|
439 |
"params" => array(
|
440 |
array(
|
441 |
"type" => "textfield",
|
493 |
"base" => "pwb-all-brands",
|
494 |
"class" => "",
|
495 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
496 |
+
"category" => "WooCommerce",
|
497 |
"params" => array(
|
498 |
array(
|
499 |
"type" => "textfield",
|
563 |
"base" => "pwb-az-listing",
|
564 |
"class" => "",
|
565 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
566 |
+
"category" => "WooCommerce",
|
567 |
"params" => array()
|
568 |
));
|
569 |
|
573 |
"base" => "pwb-brand",
|
574 |
"class" => "",
|
575 |
"icon" => PWB_PLUGIN.'/assets/img/icon_pwb.jpg',
|
576 |
+
"category" => "WooCommerce",
|
577 |
|
578 |
"params" => array(
|
579 |
array(
|
764 |
public static function get_brands( $hide_empty = false, $order_by = 'name', $order = 'ASC', $only_featured = false, $pwb_term = false ){
|
765 |
$result = array();
|
766 |
|
767 |
+
$brands_args = array( 'hide_empty' => $hide_empty, 'orderby' => $order_by, 'order' => $order );
|
768 |
if( $only_featured ) $brands_args['meta_query'] = array( array( 'key' => 'pwb_featured_brand', 'value' => true ) );
|
769 |
|
770 |
$brands = get_terms('pwb-brand', $brands_args);
|
classes/class-pwb-api-support.php
CHANGED
@@ -11,15 +11,8 @@ class PWB_API_Support{
|
|
11 |
private $base = 'brands';
|
12 |
|
13 |
function __construct(){
|
14 |
-
|
15 |
-
|
16 |
-
/**
|
17 |
-
* register_rest_field() was introduced in WordPress 4.7.0
|
18 |
-
*/
|
19 |
-
if (version_compare(PWB_WP_VERSION, '4.7.0', '>=')) {
|
20 |
-
add_action('rest_api_init', array($this, 'register_fields'));
|
21 |
-
}
|
22 |
-
|
23 |
}
|
24 |
|
25 |
/**
|
@@ -57,7 +50,7 @@ class PWB_API_Support{
|
|
57 |
}
|
58 |
|
59 |
public function create_brand( $request ){
|
60 |
-
$new_brand = wp_insert_term( $request['name'], 'pwb-brand', array( 'slug' => $request['slug'] ) );
|
61 |
if( !is_wp_error( $new_brand ) ){
|
62 |
return true;
|
63 |
}else{
|
11 |
private $base = 'brands';
|
12 |
|
13 |
function __construct(){
|
14 |
+
add_action('rest_api_init', array($this, 'register_endpoints'));
|
15 |
+
add_action('rest_api_init', array($this, 'register_fields'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
}
|
17 |
|
18 |
/**
|
50 |
}
|
51 |
|
52 |
public function create_brand( $request ){
|
53 |
+
$new_brand = wp_insert_term( $request['name'], 'pwb-brand', array( 'slug' => $request['slug'], 'description' => $request['description'] ) );
|
54 |
if( !is_wp_error( $new_brand ) ){
|
55 |
return true;
|
56 |
}else{
|
classes/shortcodes/class-pwb-brand.php
CHANGED
@@ -1,43 +1,45 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
|
4 |
-
|
5 |
|
6 |
-
|
7 |
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
|
14 |
-
|
15 |
|
16 |
-
|
17 |
|
18 |
-
|
19 |
|
20 |
-
|
21 |
|
22 |
-
|
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 |
-
|
|
|
|
|
27 |
|
28 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
-
|
38 |
|
39 |
-
|
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 |
+
if( !$atts['product_id'] && is_singular('product') ) $atts['product_id'] = get_the_ID();
|
17 |
|
18 |
+
$brands = wp_get_post_terms( $atts['product_id'], 'pwb-brand');
|
19 |
|
20 |
+
if( !is_wp_error($brands) && !empty($brands) ){
|
21 |
|
22 |
+
echo '<div class="pwb-brand-shortcode">';
|
|
|
|
|
23 |
|
24 |
+
foreach( $brands as $brand ){
|
25 |
+
$brand_link = get_term_link ( $brand->term_id, 'pwb-brand' );
|
26 |
+
$attachment_id = get_term_meta( $brand->term_id, 'pwb_brand_image', 1 );
|
27 |
|
28 |
+
$attachment_html = wp_get_attachment_image($attachment_id,$atts['image_size']);
|
|
|
|
|
|
|
|
|
|
|
29 |
|
30 |
+
if(!empty($attachment_html)){
|
31 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$attachment_html.'</a>';
|
32 |
+
}else{
|
33 |
+
echo '<a href="'.$brand_link.'" title="'.__( 'View brand', 'perfect-woocommerce-brands' ).'">'.$brand->name.'</a>';
|
34 |
+
}
|
35 |
+
}
|
36 |
|
37 |
+
echo '</div>';
|
38 |
|
39 |
+
}
|
40 |
|
41 |
+
return ob_get_clean();
|
42 |
|
43 |
+
}
|
44 |
+
|
45 |
+
}
|
main.php
CHANGED
@@ -3,13 +3,13 @@
|
|
3 |
* Plugin Name: Perfect WooCommerce Brands
|
4 |
* Plugin URI: https://wordpress.org/plugins/perfect-woocommerce-brands/
|
5 |
* Description: Perfect WooCommerce Brands allows you to show product brands in your WooCommerce based store.
|
6 |
-
* Version: 1.7.
|
7 |
* Author: Alberto de Vera Sevilla
|
8 |
* Author URI: https://profiles.wordpress.org/titodevera/
|
9 |
* Text Domain: perfect-woocommerce-brands
|
10 |
* Domain Path: /lang
|
11 |
* License: GPL3
|
12 |
-
* Perfect WooCommerce Brands version 1.7.
|
13 |
* Perfect WooCommerce Brands is free software: you can redistribute it and/or modify
|
14 |
* it under the terms of the GNU General Public License as published by
|
15 |
* the Free Software Foundation, either version 3 of the License, or
|
@@ -22,8 +22,8 @@
|
|
22 |
* You should have received a copy of the GNU General Public License
|
23 |
* along with Perfect WooCommerce Brands. If not, see <http://www.gnu.org/licenses/>.
|
24 |
*
|
25 |
-
* WC requires at least:
|
26 |
-
* WC tested up to: 3.
|
27 |
*/
|
28 |
|
29 |
namespace Perfect_Woocommerce_Brands;
|
@@ -34,7 +34,7 @@ defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
|
34 |
define( 'PWB_PLUGIN', plugins_url( '', __FILE__ ) );
|
35 |
define( 'PWB_PLUGIN_PATH', plugin_basename( dirname( __FILE__ ) ) );
|
36 |
define( 'PWB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
|
37 |
-
define( 'PWB_PLUGIN_VERSION', '1.7.
|
38 |
define( 'PWB_WP_VERSION', get_bloginfo( 'version' ) );
|
39 |
define( 'PWB_WC_VERSION', get_option( 'woocommerce_version' ) );
|
40 |
|
@@ -85,13 +85,10 @@ if( is_plugin_active( 'woocommerce/woocommerce.php' ) ){
|
|
85 |
new Admin\Brands_Custom_Fields();
|
86 |
require 'classes/admin/class-brands-exporter.php';
|
87 |
new Admin\Brands_Exporter();
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
require 'classes/admin/class-pwb-exporter-support.php';
|
93 |
-
new PWB_Exporter_Support();
|
94 |
-
}
|
95 |
|
96 |
}else{
|
97 |
include_once 'classes/class-pwb-product-tab.php';
|
3 |
* Plugin Name: Perfect WooCommerce Brands
|
4 |
* Plugin URI: https://wordpress.org/plugins/perfect-woocommerce-brands/
|
5 |
* Description: Perfect WooCommerce Brands allows you to show product brands in your WooCommerce based store.
|
6 |
+
* Version: 1.7.2
|
7 |
* Author: Alberto de Vera Sevilla
|
8 |
* Author URI: https://profiles.wordpress.org/titodevera/
|
9 |
* Text Domain: perfect-woocommerce-brands
|
10 |
* Domain Path: /lang
|
11 |
* License: GPL3
|
12 |
+
* Perfect WooCommerce Brands version 1.7.2, Copyright (C) 2019 Alberto de Vera Sevilla
|
13 |
* Perfect WooCommerce Brands is free software: you can redistribute it and/or modify
|
14 |
* it under the terms of the GNU General Public License as published by
|
15 |
* the Free Software Foundation, either version 3 of the License, or
|
22 |
* You should have received a copy of the GNU General Public License
|
23 |
* along with Perfect WooCommerce Brands. If not, see <http://www.gnu.org/licenses/>.
|
24 |
*
|
25 |
+
* WC requires at least: 3.1.0
|
26 |
+
* WC tested up to: 3.6
|
27 |
*/
|
28 |
|
29 |
namespace Perfect_Woocommerce_Brands;
|
34 |
define( 'PWB_PLUGIN', plugins_url( '', __FILE__ ) );
|
35 |
define( 'PWB_PLUGIN_PATH', plugin_basename( dirname( __FILE__ ) ) );
|
36 |
define( 'PWB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
|
37 |
+
define( 'PWB_PLUGIN_VERSION', '1.7.2' );
|
38 |
define( 'PWB_WP_VERSION', get_bloginfo( 'version' ) );
|
39 |
define( 'PWB_WC_VERSION', get_option( 'woocommerce_version' ) );
|
40 |
|
85 |
new Admin\Brands_Custom_Fields();
|
86 |
require 'classes/admin/class-brands-exporter.php';
|
87 |
new Admin\Brands_Exporter();
|
88 |
+
require 'classes/admin/class-pwb-importer-support.php';
|
89 |
+
new PWB_Importer_Support();
|
90 |
+
require 'classes/admin/class-pwb-exporter-support.php';
|
91 |
+
new PWB_Exporter_Support();
|
|
|
|
|
|
|
92 |
|
93 |
}else{
|
94 |
include_once 'classes/class-pwb-product-tab.php';
|
readme.txt
CHANGED
@@ -2,9 +2,10 @@
|
|
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.
|
6 |
-
Tested up to: 5.
|
7 |
-
|
|
|
8 |
License: GPL3
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
|
10 |
|
@@ -16,16 +17,16 @@ Is essential to work with product brands for increase sales and generate reliabi
|
|
16 |
With this extension you can add product brands to your WooCommerce site.
|
17 |
|
18 |
= Requirements =
|
19 |
-
> * PHP 5.
|
20 |
-
> * WordPress 4.
|
21 |
-
> * WooCommerce
|
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
|
29 |
> * Visual Composer support
|
30 |
> * Minimalist design and fully responsive
|
31 |
> * Very lightweight
|
@@ -42,7 +43,7 @@ With this extension you can add product brands to your WooCommerce site.
|
|
42 |
> * Import brands (migrate) from other brands plugins
|
43 |
> * Dummy data installer (logos by heroturko)
|
44 |
> * WooCommerce REST API support
|
45 |
-
> * WooCommerce built-in product importer/exporter support
|
46 |
> * Brand tab for single product page
|
47 |
> * Favorite brands
|
48 |
> * Brands json import/export
|
@@ -58,18 +59,18 @@ With this extension you can add product brands to your WooCommerce site.
|
|
58 |
= Is Perfect WooCommerce Brands free? =
|
59 |
Yes, of course. This plugin is 100% free. No ads, no premium version exists.
|
60 |
|
61 |
-
= Where are plugin settings? =
|
62 |
Go to `WooCommerce/Settings/` and click on `Brands` tab
|
63 |
|
64 |
-
=
|
65 |
-
|
66 |
|
67 |
-
=
|
68 |
-
[
|
69 |
-
|
70 |
-
= REST API docs =
|
71 |
-
[Click here](https://github.com/titodevera/perfect-woocommerce-brands/wiki/REST-API-docs)
|
72 |
|
|
|
|
|
73 |
|
74 |
== Screenshots ==
|
75 |
1. Brands carousel
|
@@ -80,6 +81,11 @@ Go to `WooCommerce/Settings/` and click on `Brands` tab
|
|
80 |
|
81 |
|
82 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
83 |
= 1.7.1 =
|
84 |
* Feature: Extends the [products] shortcode to allow 'brands' attribute
|
85 |
* Feature: The brands column is sortable now
|
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.7
|
6 |
+
Tested up to: 5.1
|
7 |
+
Requires PHP: 5.6
|
8 |
+
Stable tag: 1.7.2
|
9 |
License: GPL3
|
10 |
License URI: http://www.gnu.org/licenses/gpl-3.0.en.html
|
11 |
|
17 |
With this extension you can add product brands to your WooCommerce site.
|
18 |
|
19 |
= Requirements =
|
20 |
+
> * PHP 5.6 or higher (PHP7 recommended)
|
21 |
+
> * WordPress 4.7 or higher
|
22 |
+
> * WooCommerce 3.1.0 or higher
|
23 |
> * Visual Composer (recommended)
|
24 |
|
25 |
= Features =
|
26 |
> * Very easy to use, 100% free, no ads, no premium version exists
|
27 |
> * Assign brands to products
|
28 |
> * Associate a banner and a link to each brand
|
29 |
+
> * Translation-ready
|
30 |
> * Visual Composer support
|
31 |
> * Minimalist design and fully responsive
|
32 |
> * Very lightweight
|
43 |
> * Import brands (migrate) from other brands plugins
|
44 |
> * Dummy data installer (logos by heroturko)
|
45 |
> * WooCommerce REST API support
|
46 |
+
> * WooCommerce built-in product importer/exporter support
|
47 |
> * Brand tab for single product page
|
48 |
> * Favorite brands
|
49 |
> * Brands json import/export
|
59 |
= Is Perfect WooCommerce Brands free? =
|
60 |
Yes, of course. This plugin is 100% free. No ads, no premium version exists.
|
61 |
|
62 |
+
= Where are the plugin settings? =
|
63 |
Go to `WooCommerce/Settings/` and click on `Brands` tab
|
64 |
|
65 |
+
= 404 error on brand pages =
|
66 |
+
Go to `Settings/Permalinks` and click on `Save Changes` button to flush the permalinks
|
67 |
|
68 |
+
= PWB is awesome! Can I contribute? =
|
69 |
+
Yes you can! Join in on our [GitHub repository](https://github.com/titodevera/perfect-woocommerce-brands) 🙂
|
70 |
+
You can also contribute [translating the plugin](https://translate.wordpress.org/projects/wp-plugins/perfect-woocommerce-brands/)
|
|
|
|
|
71 |
|
72 |
+
= Developer Documentation =
|
73 |
+
[Click here](https://github.com/titodevera/perfect-woocommerce-brands/wiki)
|
74 |
|
75 |
== Screenshots ==
|
76 |
1. Brands carousel
|
81 |
|
82 |
|
83 |
== Changelog ==
|
84 |
+
= 1.7.2 =
|
85 |
+
* Feature: Now is possible to use %pwb-brand% in the product URLs
|
86 |
+
* Fix: Fatal error in some themes (like Salient)
|
87 |
+
* Fix: Some php notices and warnings fixed
|
88 |
+
* Fix: Don't show brand description/banner in paged
|
89 |
= 1.7.1 =
|
90 |
* Feature: Extends the [products] shortcode to allow 'brands' attribute
|
91 |
* Feature: The brands column is sortable now
|