Version Description
- 09/04/2018 =
- Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Advanced: Price Filters Priority - Added to all hooks.
- Dev - PRICES & CURRENCIES - Prices and Currencies by Country - "Advanced: Price Filters Priority" option added.
- Dev - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - "Frontend Position" option added.
- Dev - CART & CHECKOUT - Mini Cart Custom Info - Admin settings restyled.
- Fix - SHIPPING & ORDERS - Left to Free Shipping -
wcj_get_left_to_free_shipping()
- WooCommerce below v3.3.0 compatibility issue fixed. - Dev - SHIPPING & ORDERS - Shipping Time - Admin settings - Description updated.
- Dev - Shortcodes - Code refactoring - "Cart" shortcodes moved to new
class-wcj-shortcodes-cart.php
file. - Dev - Shortcodes - Cart -
[wcj_cart_items_total_quantity]
- Code refactoring. - Dev - Shortcodes - Cart -
[wcj_cart_items_total_weight]
- Code refactoring. - Dev - Shortcodes - Cart -
[wcj_cart_discount_tax]
,[wcj_cart_discount_total]
shortcodes added. - Dev - Shortcodes - Cart -
[wcj_cart_fee_tax]
,[wcj_cart_fee_total]
shortcodes added. - Dev - Shortcodes - Cart -
[wcj_cart_function]
shortcode added. - Dev - Shortcodes - Cart -
[wcj_cart_shipping_total]
,[wcj_cart_shipping_tax]
shortcodes added. - Dev - Shortcodes - Cart -
[wcj_cart_subtotal]
,[wcj_cart_subtotal_tax]
shortcodes added. - Dev - Shortcodes - Cart -
[wcj_cart_tax]
,[wcj_cart_total_ex_tax]
shortcodes added. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
- Columns -item_product_input_fields_with_titles
column added.
Download this release
Release Info
Developer | algoritmika |
Plugin | Booster for WooCommerce |
Version | 3.5.1 |
Comparing to | |
See all releases |
Code changes from version 3.5.0 to 3.5.1
- includes/class-wcj-max-products-per-user.php +1 -1
- includes/class-wcj-multicurrency.php +6 -7
- includes/class-wcj-product-open-pricing.php +4 -3
- includes/core/wcj-shortcodes.php +2 -1
- includes/functions/wcj-functions-price-currency.php +3 -2
- includes/functions/wcj-functions-products.php +34 -6
- includes/functions/wcj-functions-shipping.php +5 -3
- includes/input-fields/class-wcj-product-input-fields-core.php +1 -0
- includes/price-by-country/class-wcj-price-by-country-core.php +7 -5
- includes/settings/wcj-settings-mini-cart.php +2 -4
- includes/settings/wcj-settings-price-by-country.php +9 -1
- includes/settings/wcj-settings-product-open-pricing.php +14 -1
- includes/settings/wcj-settings-shipping-time.php +2 -2
- includes/shortcodes/class-wcj-shortcodes-cart.php +272 -0
- includes/shortcodes/class-wcj-shortcodes-general.php +2 -46
- includes/shortcodes/class-wcj-shortcodes-order-items.php +5 -2
- readme.txt +19 -1
- woocommerce-jetpack.php +2 -2
includes/class-wcj-max-products-per-user.php
CHANGED
@@ -20,7 +20,7 @@ class WCJ_Max_products_Per_User extends WCJ_Module {
|
|
20 |
* @since 3.5.0
|
21 |
* @todo (maybe) JS
|
22 |
* @todo (maybe) zero quantity for "Guest"
|
23 |
-
* @todo (maybe) editable sales
|
24 |
*/
|
25 |
function __construct() {
|
26 |
|
20 |
* @since 3.5.0
|
21 |
* @todo (maybe) JS
|
22 |
* @todo (maybe) zero quantity for "Guest"
|
23 |
+
* @todo (maybe) editable sales data (i.e. change "Qty Bought" for product for user)
|
24 |
*/
|
25 |
function __construct() {
|
26 |
|
includes/class-wcj-multicurrency.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
|
4 |
*
|
5 |
-
* @version 3.5.
|
6 |
* @since 2.4.3
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -59,19 +59,18 @@ class WCJ_Multicurrency extends WCJ_Module {
|
|
59 |
/**
|
60 |
* add_hooks.
|
61 |
*
|
62 |
-
* @version 3.
|
63 |
-
* @todo (maybe) replace all `PHP_INT_MAX - 1` with `$this->price_hooks_priority` (especially for `woocommerce_currency_symbol` and `woocommerce_currency`)
|
64 |
*/
|
65 |
function add_hooks() {
|
66 |
if ( wcj_is_frontend() ) {
|
67 |
|
68 |
// Prices - Compatibility - "WooCommerce TM Extra Product Options" plugin
|
69 |
-
add_filter( 'woocommerce_tm_epo_price_on_cart', array( $this, 'change_price_by_currency_tm_extra_product_options_plugin_cart' ),
|
70 |
-
add_filter( 'wc_epo_price', array( $this, 'change_price_by_currency_tm_extra_product_options_plugin' ),
|
71 |
|
72 |
// Currency hooks
|
73 |
-
add_filter( 'woocommerce_currency_symbol', array( $this, 'change_currency_symbol' ),
|
74 |
-
add_filter( 'woocommerce_currency', array( $this, 'change_currency_code' ),
|
75 |
|
76 |
// Add "Change Price" hooks
|
77 |
wcj_add_change_price_hooks( $this, $this->price_hooks_priority );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Multicurrency (Currency Switcher)
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 2.4.3
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
59 |
/**
|
60 |
* add_hooks.
|
61 |
*
|
62 |
+
* @version 3.5.1
|
|
|
63 |
*/
|
64 |
function add_hooks() {
|
65 |
if ( wcj_is_frontend() ) {
|
66 |
|
67 |
// Prices - Compatibility - "WooCommerce TM Extra Product Options" plugin
|
68 |
+
add_filter( 'woocommerce_tm_epo_price_on_cart', array( $this, 'change_price_by_currency_tm_extra_product_options_plugin_cart' ), $this->price_hooks_priority, 1 );
|
69 |
+
add_filter( 'wc_epo_price', array( $this, 'change_price_by_currency_tm_extra_product_options_plugin' ), $this->price_hooks_priority, 3 );
|
70 |
|
71 |
// Currency hooks
|
72 |
+
add_filter( 'woocommerce_currency_symbol', array( $this, 'change_currency_symbol' ), $this->price_hooks_priority, 2 );
|
73 |
+
add_filter( 'woocommerce_currency', array( $this, 'change_currency_code' ), $this->price_hooks_priority, 1 );
|
74 |
|
75 |
// Add "Change Price" hooks
|
76 |
wcj_add_change_price_hooks( $this, $this->price_hooks_priority );
|
includes/class-wcj-product-open-pricing.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Open Pricing
|
4 |
*
|
5 |
-
* @version
|
6 |
* @since 2.4.8
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -16,7 +16,7 @@ class WCJ_Product_Open_Pricing extends WCJ_Module {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version
|
20 |
* @since 2.4.8
|
21 |
*/
|
22 |
function __construct() {
|
@@ -41,7 +41,8 @@ class WCJ_Product_Open_Pricing extends WCJ_Module {
|
|
41 |
add_filter( 'woocommerce_product_supports', array( $this, 'disable_add_to_cart_ajax' ), PHP_INT_MAX, 3 );
|
42 |
add_filter( 'woocommerce_product_add_to_cart_url', array( $this, 'add_to_cart_url' ), PHP_INT_MAX, 2 );
|
43 |
add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'add_to_cart_text' ), PHP_INT_MAX, 2 );
|
44 |
-
|
|
|
45 |
add_filter( 'woocommerce_add_to_cart_validation', array( $this, 'validate_open_price_on_add_to_cart' ), PHP_INT_MAX, 2 );
|
46 |
add_filter( 'woocommerce_add_cart_item_data', array( $this, 'add_open_price_to_cart_item_data' ), PHP_INT_MAX, 3 );
|
47 |
add_filter( 'woocommerce_add_cart_item', array( $this, 'add_open_price_to_cart_item' ), PHP_INT_MAX, 2 );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Open Pricing
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 2.4.8
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 3.5.1
|
20 |
* @since 2.4.8
|
21 |
*/
|
22 |
function __construct() {
|
41 |
add_filter( 'woocommerce_product_supports', array( $this, 'disable_add_to_cart_ajax' ), PHP_INT_MAX, 3 );
|
42 |
add_filter( 'woocommerce_product_add_to_cart_url', array( $this, 'add_to_cart_url' ), PHP_INT_MAX, 2 );
|
43 |
add_filter( 'woocommerce_product_add_to_cart_text', array( $this, 'add_to_cart_text' ), PHP_INT_MAX, 2 );
|
44 |
+
$position = get_option( 'wcj_product_open_price_position', 'woocommerce_before_add_to_cart_button' );
|
45 |
+
add_action( $position, array( $this, 'add_open_price_input_field_to_frontend' ), PHP_INT_MAX );
|
46 |
add_filter( 'woocommerce_add_to_cart_validation', array( $this, 'validate_open_price_on_add_to_cart' ), PHP_INT_MAX, 2 );
|
47 |
add_filter( 'woocommerce_add_cart_item_data', array( $this, 'add_open_price_to_cart_item_data' ), PHP_INT_MAX, 3 );
|
48 |
add_filter( 'woocommerce_add_cart_item', array( $this, 'add_open_price_to_cart_item' ), PHP_INT_MAX, 2 );
|
includes/core/wcj-shortcodes.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes
|
4 |
*
|
5 |
-
* @version 3.
|
6 |
* @since 3.2.4
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -15,6 +15,7 @@ if ( ! wcj_is_module_enabled( 'general' ) || ( wcj_is_module_enabled( 'general'
|
|
15 |
|
16 |
$wcj_shortcodes_files = array(
|
17 |
'general' => 'class-wcj-shortcodes-general.php',
|
|
|
18 |
'invoices' => 'class-wcj-shortcodes-invoices.php',
|
19 |
'orders' => 'class-wcj-shortcodes-orders.php',
|
20 |
'order_items' => 'class-wcj-shortcodes-order-items.php',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 3.2.4
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
15 |
|
16 |
$wcj_shortcodes_files = array(
|
17 |
'general' => 'class-wcj-shortcodes-general.php',
|
18 |
+
'cart' => 'class-wcj-shortcodes-cart.php',
|
19 |
'invoices' => 'class-wcj-shortcodes-invoices.php',
|
20 |
'orders' => 'class-wcj-shortcodes-orders.php',
|
21 |
'order_items' => 'class-wcj-shortcodes-order-items.php',
|
includes/functions/wcj-functions-price-currency.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Price and Currency
|
4 |
*
|
5 |
-
* @version 3.5.
|
6 |
* @since 2.7.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -26,12 +26,13 @@ if ( ! function_exists( 'wcj_get_module_price_hooks_priority' ) ) {
|
|
26 |
/**
|
27 |
* wcj_get_module_price_hooks_priority.
|
28 |
*
|
29 |
-
* @version 3.
|
30 |
* @since 3.2.2
|
31 |
* @todo add all corresponding modules
|
32 |
*/
|
33 |
function wcj_get_module_price_hooks_priority( $module_id ) {
|
34 |
$modules_priorities = array(
|
|
|
35 |
'multicurrency' => PHP_INT_MAX - 1,
|
36 |
'price_by_user_role' => PHP_INT_MAX - 200,
|
37 |
);
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Price and Currency
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 2.7.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
26 |
/**
|
27 |
* wcj_get_module_price_hooks_priority.
|
28 |
*
|
29 |
+
* @version 3.5.1
|
30 |
* @since 3.2.2
|
31 |
* @todo add all corresponding modules
|
32 |
*/
|
33 |
function wcj_get_module_price_hooks_priority( $module_id ) {
|
34 |
$modules_priorities = array(
|
35 |
+
'price_by_country' => PHP_INT_MAX - 1,
|
36 |
'multicurrency' => PHP_INT_MAX - 1,
|
37 |
'price_by_user_role' => PHP_INT_MAX - 200,
|
38 |
);
|
includes/functions/wcj-functions-products.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Products
|
4 |
*
|
5 |
-
* @version 3.5.
|
6 |
* @since 2.9.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -197,31 +197,59 @@ if ( ! function_exists( 'wcj_get_product_image_url' ) ) {
|
|
197 |
}
|
198 |
}
|
199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
if ( ! function_exists( 'wcj_get_product_input_fields' ) ) {
|
201 |
/*
|
202 |
* wcj_get_product_input_fields.
|
203 |
*
|
204 |
-
* @version 3.
|
205 |
* @since 2.4.4
|
206 |
* @return string
|
207 |
* @todo (maybe) better handle "file" type
|
208 |
*/
|
209 |
-
function wcj_get_product_input_fields( $item ) {
|
210 |
$product_input_fields = array();
|
211 |
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
212 |
foreach ( $item as $key => $value ) {
|
213 |
if ( false !== strpos( $key, 'wcj_product_input_fields_' ) ) {
|
214 |
-
$
|
|
|
215 |
}
|
216 |
}
|
217 |
} else {
|
218 |
foreach ( $item->get_meta_data() as $value ) {
|
219 |
if ( isset( $value->key ) && isset( $value->value ) && false !== strpos( $value->key, 'wcj_product_input_fields_' ) ) {
|
220 |
-
$
|
|
|
221 |
}
|
222 |
}
|
223 |
}
|
224 |
-
return ( ! empty( $product_input_fields ) ) ? implode(
|
225 |
}
|
226 |
}
|
227 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Products
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 2.9.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
197 |
}
|
198 |
}
|
199 |
|
200 |
+
if ( ! function_exists( 'wcj_get_product_input_field_value' ) ) {
|
201 |
+
/**
|
202 |
+
* wcj_get_product_input_field_value.
|
203 |
+
*
|
204 |
+
* @version 3.5.1
|
205 |
+
* @since 3.5.1
|
206 |
+
*/
|
207 |
+
function wcj_get_product_input_field_value( $item, $key, $field ) {
|
208 |
+
$key = explode( '_', str_replace( '_wcj_product_input_fields_', '', $key ) );
|
209 |
+
$scope = $key[0];
|
210 |
+
$option_name = 'wcj_product_input_fields_' . $field . '_' . $scope . '_' . $key[1];
|
211 |
+
$product_id = $item['product_id'];
|
212 |
+
$default = '';
|
213 |
+
if ( 'global' === $scope ) {
|
214 |
+
return get_option( $option_name, $default );
|
215 |
+
} else { // local
|
216 |
+
if ( '' != ( $options = get_post_meta( $product_id, '_' . 'wcj_product_input_fields', true ) ) ) {
|
217 |
+
$option_name = str_replace( 'wcj_product_input_fields_', '', $option_name );
|
218 |
+
return ( isset( $options[ $option_name ] ) ? $options[ $option_name ] : $default );
|
219 |
+
} else { // Booster version < 3.5.0
|
220 |
+
return get_post_meta( $product_id, '_' . $option_name, true );
|
221 |
+
}
|
222 |
+
}
|
223 |
+
}
|
224 |
+
}
|
225 |
+
|
226 |
if ( ! function_exists( 'wcj_get_product_input_fields' ) ) {
|
227 |
/*
|
228 |
* wcj_get_product_input_fields.
|
229 |
*
|
230 |
+
* @version 3.5.1
|
231 |
* @since 2.4.4
|
232 |
* @return string
|
233 |
* @todo (maybe) better handle "file" type
|
234 |
*/
|
235 |
+
function wcj_get_product_input_fields( $item, $do_add_titles = false, $sep = ', ' ) {
|
236 |
$product_input_fields = array();
|
237 |
if ( WCJ_IS_WC_VERSION_BELOW_3 ) {
|
238 |
foreach ( $item as $key => $value ) {
|
239 |
if ( false !== strpos( $key, 'wcj_product_input_fields_' ) ) {
|
240 |
+
$title = ( $do_add_titles ? wcj_get_product_input_field_value( $item, $key, 'title' ) . ': ' : '' );
|
241 |
+
$product_input_fields[] = $title . wcj_maybe_unserialize_and_implode( $value );
|
242 |
}
|
243 |
}
|
244 |
} else {
|
245 |
foreach ( $item->get_meta_data() as $value ) {
|
246 |
if ( isset( $value->key ) && isset( $value->value ) && false !== strpos( $value->key, 'wcj_product_input_fields_' ) ) {
|
247 |
+
$title = ( $do_add_titles ? wcj_get_product_input_field_value( $item, $value->key, 'title' ) . ': ' : '' );
|
248 |
+
$product_input_fields[] = $title . wcj_maybe_unserialize_and_implode( $value->value );
|
249 |
}
|
250 |
}
|
251 |
}
|
252 |
+
return ( ! empty( $product_input_fields ) ) ? implode( $sep, array_map( 'wcj_maybe_implode', $product_input_fields ) ) : '';
|
253 |
}
|
254 |
}
|
255 |
|
includes/functions/wcj-functions-shipping.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Shipping
|
4 |
*
|
5 |
-
* @version 3.5.
|
6 |
* @since 3.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -201,7 +201,7 @@ if ( ! function_exists( 'wcj_get_left_to_free_shipping' ) ) {
|
|
201 |
/*
|
202 |
* wcj_get_left_to_free_shipping.
|
203 |
*
|
204 |
-
* @version 3.5.
|
205 |
* @since 2.4.4
|
206 |
* @return string
|
207 |
*/
|
@@ -257,7 +257,9 @@ if ( ! function_exists( 'wcj_get_left_to_free_shipping' ) ) {
|
|
257 |
if ( isset( WC()->cart ) ) {
|
258 |
// Getting cart total
|
259 |
$total = WC()->cart->get_displayed_subtotal();
|
260 |
-
|
|
|
|
|
261 |
$total = round( $total - ( WC()->cart->get_discount_total() + WC()->cart->get_discount_tax() ), wc_get_price_decimals() );
|
262 |
} else {
|
263 |
$total = round( $total - WC()->cart->get_discount_total(), wc_get_price_decimals() );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Shipping
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 3.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
201 |
/*
|
202 |
* wcj_get_left_to_free_shipping.
|
203 |
*
|
204 |
+
* @version 3.5.1
|
205 |
* @since 2.4.4
|
206 |
* @return string
|
207 |
*/
|
257 |
if ( isset( WC()->cart ) ) {
|
258 |
// Getting cart total
|
259 |
$total = WC()->cart->get_displayed_subtotal();
|
260 |
+
$is_cart_display_prices_including_tax = ( WCJ_IS_WC_VERSION_BELOW_3_3_0 ?
|
261 |
+
( 'incl' === WC()->cart->tax_display_cart ) : WC()->cart->display_prices_including_tax() );
|
262 |
+
if ( $is_cart_display_prices_including_tax ) {
|
263 |
$total = round( $total - ( WC()->cart->get_discount_total() + WC()->cart->get_discount_tax() ), wc_get_price_decimals() );
|
264 |
} else {
|
265 |
$total = round( $total - WC()->cart->get_discount_total(), wc_get_price_decimals() );
|
includes/input-fields/class-wcj-product-input-fields-core.php
CHANGED
@@ -343,6 +343,7 @@ class WCJ_Product_Input_Fields_Core {
|
|
343 |
* get_value.
|
344 |
*
|
345 |
* @version 3.5.0
|
|
|
346 |
*/
|
347 |
function get_value( $option_name, $product_id, $default ) {
|
348 |
if ( 'global' === $this->scope ) {
|
343 |
* get_value.
|
344 |
*
|
345 |
* @version 3.5.0
|
346 |
+
* @todo `wcj_get_product_input_field_value()` is almost identical
|
347 |
*/
|
348 |
function get_value( $option_name, $product_id, $default ) {
|
349 |
if ( 'global' === $this->scope ) {
|
includes/price-by-country/class-wcj-price-by-country-core.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Price by Country - Core
|
4 |
*
|
5 |
-
* @version 3.5.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -70,7 +70,7 @@ class WCJ_Price_by_Country_Core {
|
|
70 |
/**
|
71 |
* add_hooks.
|
72 |
*
|
73 |
-
* @version
|
74 |
*/
|
75 |
function add_hooks() {
|
76 |
|
@@ -79,12 +79,14 @@ class WCJ_Price_by_Country_Core {
|
|
79 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_wselect_scripts' ) );
|
80 |
}
|
81 |
|
|
|
|
|
82 |
// Price hooks
|
83 |
-
wcj_add_change_price_hooks( $this,
|
84 |
|
85 |
// Currency hooks
|
86 |
-
add_filter( 'woocommerce_currency_symbol', array( $this, 'change_currency_symbol' ),
|
87 |
-
add_filter( 'woocommerce_currency', array( $this, 'change_currency_code' ),
|
88 |
|
89 |
// Price Filter Widget
|
90 |
if ( 'yes' === get_option( 'wcj_price_by_country_price_filter_widget_support_enabled', 'no' ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Price by Country - Core
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
70 |
/**
|
71 |
* add_hooks.
|
72 |
*
|
73 |
+
* @version 3.5.1
|
74 |
*/
|
75 |
function add_hooks() {
|
76 |
|
79 |
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_wselect_scripts' ) );
|
80 |
}
|
81 |
|
82 |
+
$this->price_hooks_priority = wcj_get_module_price_hooks_priority( 'price_by_country' );
|
83 |
+
|
84 |
// Price hooks
|
85 |
+
wcj_add_change_price_hooks( $this, $this->price_hooks_priority );
|
86 |
|
87 |
// Currency hooks
|
88 |
+
add_filter( 'woocommerce_currency_symbol', array( $this, 'change_currency_symbol' ), $this->price_hooks_priority, 2 );
|
89 |
+
add_filter( 'woocommerce_currency', array( $this, 'change_currency_code' ), $this->price_hooks_priority, 1 );
|
90 |
|
91 |
// Price Filter Widget
|
92 |
if ( 'yes' === get_option( 'wcj_price_by_country_price_filter_widget_support_enabled', 'no' ) ) {
|
includes/settings/wcj-settings-mini-cart.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Mini Cart Custom Info
|
4 |
*
|
5 |
-
* @version
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -40,7 +40,7 @@ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_mini_ca
|
|
40 |
'id' => 'wcj_mini_cart_custom_info_content_' . $i,
|
41 |
'default' => '[wcj_cart_items_total_weight before="Total weight: " after=" kg"]',
|
42 |
'type' => 'textarea',
|
43 |
-
'css' => 'width:
|
44 |
),
|
45 |
array(
|
46 |
'title' => __( 'Position', 'woocommerce-jetpack' ),
|
@@ -52,14 +52,12 @@ for ( $i = 1; $i <= apply_filters( 'booster_option', 1, get_option( 'wcj_mini_ca
|
|
52 |
'woocommerce_widget_shopping_cart_before_buttons' => __( 'Before buttons', 'woocommerce-jetpack' ),
|
53 |
'woocommerce_after_mini_cart' => __( 'After mini cart', 'woocommerce-jetpack' ),
|
54 |
),
|
55 |
-
'css' => 'width:250px;',
|
56 |
),
|
57 |
array(
|
58 |
'title' => __( 'Position Order (i.e. Priority)', 'woocommerce-jetpack' ),
|
59 |
'id' => 'wcj_mini_cart_custom_info_priority_' . $i,
|
60 |
'default' => 10,
|
61 |
'type' => 'number',
|
62 |
-
'css' => 'width:250px;',
|
63 |
),
|
64 |
array(
|
65 |
'type' => 'sectionend',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Mini Cart Custom Info
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
40 |
'id' => 'wcj_mini_cart_custom_info_content_' . $i,
|
41 |
'default' => '[wcj_cart_items_total_weight before="Total weight: " after=" kg"]',
|
42 |
'type' => 'textarea',
|
43 |
+
'css' => 'width:100%;height:100px;',
|
44 |
),
|
45 |
array(
|
46 |
'title' => __( 'Position', 'woocommerce-jetpack' ),
|
52 |
'woocommerce_widget_shopping_cart_before_buttons' => __( 'Before buttons', 'woocommerce-jetpack' ),
|
53 |
'woocommerce_after_mini_cart' => __( 'After mini cart', 'woocommerce-jetpack' ),
|
54 |
),
|
|
|
55 |
),
|
56 |
array(
|
57 |
'title' => __( 'Position Order (i.e. Priority)', 'woocommerce-jetpack' ),
|
58 |
'id' => 'wcj_mini_cart_custom_info_priority_' . $i,
|
59 |
'default' => 10,
|
60 |
'type' => 'number',
|
|
|
61 |
),
|
62 |
array(
|
63 |
'type' => 'sectionend',
|
includes/settings/wcj-settings-price-by-country.php
CHANGED
@@ -2,9 +2,10 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Prices and Currencies by Country
|
4 |
*
|
5 |
-
* @version 3.
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
|
|
8 |
*/
|
9 |
|
10 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
@@ -142,6 +143,13 @@ $settings = array(
|
|
142 |
'default' => 'no',
|
143 |
'type' => 'checkbox',
|
144 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
array(
|
146 |
'type' => 'sectionend',
|
147 |
'id' => 'wcj_price_by_country_options',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Prices and Currencies by Country
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
+
* @todo clean up
|
9 |
*/
|
10 |
|
11 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
143 |
'default' => 'no',
|
144 |
'type' => 'checkbox',
|
145 |
),
|
146 |
+
array(
|
147 |
+
'title' => __( 'Advanced: Price Filters Priority', 'woocommerce-jetpack' ),
|
148 |
+
'desc_tip' => __( 'Priority for all module\'s price filters. Set to zero to use default priority.' ),
|
149 |
+
'id' => 'wcj_price_by_country_advanced_price_hooks_priority',
|
150 |
+
'default' => 0,
|
151 |
+
'type' => 'number',
|
152 |
+
),
|
153 |
array(
|
154 |
'type' => 'sectionend',
|
155 |
'id' => 'wcj_price_by_country_options',
|
includes/settings/wcj-settings-product-open-pricing.php
CHANGED
@@ -2,15 +2,21 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Product Open Pricing
|
4 |
*
|
5 |
-
* @version 3.
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo set default for "wcj_product_open_price_enable_js_validation" to "yes"
|
|
|
|
|
9 |
*/
|
10 |
|
11 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
12 |
|
13 |
$default_price_step = 1 / pow( 10, absint( get_option( 'woocommerce_price_num_decimals', 2 ) ) );
|
|
|
|
|
|
|
|
|
14 |
return array(
|
15 |
array(
|
16 |
'title' => __( 'Options', 'woocommerce-jetpack' ),
|
@@ -54,6 +60,13 @@ return array(
|
|
54 |
'type' => 'number',
|
55 |
'custom_attributes' => array( 'step' => '0.0001', 'min' => '0.0001' ),
|
56 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
array(
|
58 |
'title' => __( 'Message on Empty Price', 'woocommerce-jetpack' ),
|
59 |
'id' => 'wcj_product_open_price_messages_required',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Product Open Pricing
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo set default for "wcj_product_open_price_enable_js_validation" to "yes"
|
9 |
+
* @todo (maybe) `$positions` - add `woocommerce_before_add_to_cart_quantity` and `woocommerce_after_add_to_cart_quantity` (on `! WCJ_IS_WC_VERSION_BELOW_3` and also recheck "Grouped product add to cart" template)
|
10 |
+
* @todo (maybe) `$positions` - add "Frontend Position Priority" option
|
11 |
*/
|
12 |
|
13 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
14 |
|
15 |
$default_price_step = 1 / pow( 10, absint( get_option( 'woocommerce_price_num_decimals', 2 ) ) );
|
16 |
+
$positions = array(
|
17 |
+
'woocommerce_before_add_to_cart_button' => __( 'Before add to cart button', 'woocommerce-jetpack' ), // since WC v2.1.0
|
18 |
+
'woocommerce_after_add_to_cart_button' => __( 'After add to cart button', 'woocommerce-jetpack' ), // since WC v2.1.0
|
19 |
+
);
|
20 |
return array(
|
21 |
array(
|
22 |
'title' => __( 'Options', 'woocommerce-jetpack' ),
|
60 |
'type' => 'number',
|
61 |
'custom_attributes' => array( 'step' => '0.0001', 'min' => '0.0001' ),
|
62 |
),
|
63 |
+
array(
|
64 |
+
'title' => __( 'Frontend Position', 'woocommerce-jetpack' ),
|
65 |
+
'id' => 'wcj_product_open_price_position',
|
66 |
+
'default' => 'woocommerce_before_add_to_cart_button',
|
67 |
+
'type' => 'select',
|
68 |
+
'options' => $positions,
|
69 |
+
),
|
70 |
array(
|
71 |
'title' => __( 'Message on Empty Price', 'woocommerce-jetpack' ),
|
72 |
'id' => 'wcj_product_open_price_messages_required',
|
includes/settings/wcj-settings-shipping-time.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Shipping Time
|
4 |
*
|
5 |
-
* @version 3.5.
|
6 |
* @since 3.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo estimated date calculation
|
@@ -36,7 +36,7 @@ $settings = array_merge( $settings, array(
|
|
36 |
'default' => 'no',
|
37 |
),
|
38 |
array(
|
39 |
-
'title' => __( 'Use Shipping Classes', 'woocommerce-jetpack' ),
|
40 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
41 |
'desc_tip' => __( 'Enable this if you want to set options for each shipping class separately.', 'woocommerce-jetpack' ) . ' ' .
|
42 |
__( 'Save changes after enabling this option.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Shipping Time
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @since 3.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo estimated date calculation
|
36 |
'default' => 'no',
|
37 |
),
|
38 |
array(
|
39 |
+
'title' => __( 'Use Product Shipping Classes', 'woocommerce-jetpack' ),
|
40 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
41 |
'desc_tip' => __( 'Enable this if you want to set options for each shipping class separately.', 'woocommerce-jetpack' ) . ' ' .
|
42 |
__( 'Save changes after enabling this option.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'booster_message', '', 'desc' ),
|
includes/shortcodes/class-wcj-shortcodes-cart.php
ADDED
@@ -0,0 +1,272 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Booster for WooCommerce - Shortcodes - Cart
|
4 |
+
*
|
5 |
+
* @version 3.5.1
|
6 |
+
* @since 3.5.1
|
7 |
+
* @author Algoritmika Ltd.
|
8 |
+
*/
|
9 |
+
|
10 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
11 |
+
|
12 |
+
if ( ! class_exists( 'WCJ_Cart_Shortcodes' ) ) :
|
13 |
+
|
14 |
+
class WCJ_Cart_Shortcodes extends WCJ_Shortcodes {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Constructor.
|
18 |
+
*
|
19 |
+
* @version 3.5.1
|
20 |
+
* @since 3.5.1
|
21 |
+
* @todo (maybe) add `$atts['multiply_by']` to (all) shortcodes
|
22 |
+
*/
|
23 |
+
function __construct() {
|
24 |
+
|
25 |
+
$this->the_shortcodes = array(
|
26 |
+
'wcj_cart_discount_tax',
|
27 |
+
'wcj_cart_discount_total',
|
28 |
+
'wcj_cart_items_total_quantity',
|
29 |
+
'wcj_cart_items_total_weight',
|
30 |
+
'wcj_cart_fee_tax',
|
31 |
+
'wcj_cart_fee_total',
|
32 |
+
'wcj_cart_function',
|
33 |
+
'wcj_cart_shipping_total',
|
34 |
+
'wcj_cart_shipping_tax',
|
35 |
+
'wcj_cart_subtotal',
|
36 |
+
'wcj_cart_subtotal_tax',
|
37 |
+
'wcj_cart_tax',
|
38 |
+
'wcj_cart_total',
|
39 |
+
'wcj_cart_total_ex_tax',
|
40 |
+
);
|
41 |
+
|
42 |
+
$this->the_atts = array(
|
43 |
+
'multiply_by' => 1,
|
44 |
+
);
|
45 |
+
|
46 |
+
parent::__construct();
|
47 |
+
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* wcj_cart_function.
|
52 |
+
*
|
53 |
+
* @version 3.5.1
|
54 |
+
* @since 3.5.1
|
55 |
+
* @todo add `$atts['function_args']`
|
56 |
+
*/
|
57 |
+
function wcj_cart_function( $atts ) {
|
58 |
+
if ( isset( $atts['function_name'] ) && '' != $atts['function_name'] && ( $_cart = WC()->cart ) ) {
|
59 |
+
return $_cart->{$atts['function_name']}();
|
60 |
+
}
|
61 |
+
return '';
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* wcj_cart_fee_tax.
|
66 |
+
*
|
67 |
+
* @version 3.5.1
|
68 |
+
* @since 3.5.1
|
69 |
+
*/
|
70 |
+
function wcj_cart_fee_tax( $atts ) {
|
71 |
+
if ( $_cart = WC()->cart ) {
|
72 |
+
return wc_price( $_cart->get_fee_tax() );
|
73 |
+
}
|
74 |
+
return '';
|
75 |
+
}
|
76 |
+
|
77 |
+
/**
|
78 |
+
* wcj_cart_fee_total.
|
79 |
+
*
|
80 |
+
* Get total fee amount.
|
81 |
+
*
|
82 |
+
* @version 3.5.1
|
83 |
+
* @since 3.5.1
|
84 |
+
*/
|
85 |
+
function wcj_cart_fee_total( $atts ) {
|
86 |
+
if ( $_cart = WC()->cart ) {
|
87 |
+
return wc_price( $_cart->get_fee_total() );
|
88 |
+
}
|
89 |
+
return '';
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* wcj_cart_discount_tax.
|
94 |
+
*
|
95 |
+
* Get discount_tax.
|
96 |
+
*
|
97 |
+
* @version 3.5.1
|
98 |
+
* @since 3.5.1
|
99 |
+
* @todo check `$_cart->get_cart_discount_tax_total( )` // Get the total of all cart tax discounts (used for discounts on tax inclusive prices).
|
100 |
+
*/
|
101 |
+
function wcj_cart_discount_tax( $atts ) {
|
102 |
+
if ( $_cart = WC()->cart ) {
|
103 |
+
return wc_price( $_cart->get_discount_tax() );
|
104 |
+
}
|
105 |
+
return '';
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* wcj_cart_discount_total.
|
110 |
+
*
|
111 |
+
* Get discount_total.
|
112 |
+
*
|
113 |
+
* @version 3.5.1
|
114 |
+
* @since 3.5.1
|
115 |
+
* @todo check `$_cart->get_cart_discount_total( )` // Get the total of all cart discounts.
|
116 |
+
*/
|
117 |
+
function wcj_cart_discount_total( $atts ) {
|
118 |
+
if ( $_cart = WC()->cart ) {
|
119 |
+
return wc_price( $_cart->get_discount_total() );
|
120 |
+
}
|
121 |
+
return '';
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* wcj_cart_items_total_quantity.
|
126 |
+
*
|
127 |
+
* @version 3.5.1
|
128 |
+
* @since 2.7.0
|
129 |
+
* @todo (maybe) add alias `[wcj_cart_contents_count]`
|
130 |
+
*/
|
131 |
+
function wcj_cart_items_total_quantity( $atts ) {
|
132 |
+
if ( $_cart = WC()->cart ) {
|
133 |
+
return $_cart->get_cart_contents_count();
|
134 |
+
}
|
135 |
+
return '';
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* wcj_cart_items_total_weight.
|
140 |
+
*
|
141 |
+
* @version 3.5.1
|
142 |
+
* @todo (maybe) add alias `[wcj_cart_contents_weight]`
|
143 |
+
*/
|
144 |
+
function wcj_cart_items_total_weight( $atts ) {
|
145 |
+
if ( $_cart = WC()->cart ) {
|
146 |
+
return $_cart->get_cart_contents_weight();
|
147 |
+
}
|
148 |
+
return '';
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* wcj_cart_total.
|
153 |
+
*
|
154 |
+
* Gets the cart contents total (after calculation).
|
155 |
+
*
|
156 |
+
* @version 3.5.0
|
157 |
+
* @since 2.8.0
|
158 |
+
* @todo ! check `$_cart->get_total( string $context = 'view' )` // Gets cart total after calculation.
|
159 |
+
*/
|
160 |
+
function wcj_cart_total( $atts ) {
|
161 |
+
if ( $_cart = WC()->cart ) {
|
162 |
+
if ( 1 != $atts['multiply_by'] ) {
|
163 |
+
// `get_cart_contents_total()` - Gets cart total. This is the total of items in the cart, but after discounts. Subtotal is before discounts.
|
164 |
+
$cart_total = wc_prices_include_tax() ? WC()->cart->get_cart_contents_total() + WC()->cart->get_cart_contents_tax() : WC()->cart->get_cart_contents_total();
|
165 |
+
return wc_price( $atts['multiply_by'] * $cart_total );
|
166 |
+
} else {
|
167 |
+
return $_cart->get_cart_total();
|
168 |
+
}
|
169 |
+
}
|
170 |
+
return '';
|
171 |
+
}
|
172 |
+
|
173 |
+
/**
|
174 |
+
* wcj_cart_subtotal.
|
175 |
+
*
|
176 |
+
* Gets the sub total (after calculation).
|
177 |
+
*
|
178 |
+
* @version 3.5.1
|
179 |
+
* @since 3.5.1
|
180 |
+
* @todo `get_cart_subtotal( boolean $compound = false )` (i.e. add `$atts['compound']`)
|
181 |
+
* @todo check `$_cart->get_displayed_subtotal()`
|
182 |
+
* @todo check `$_cart->get_subtotal()`
|
183 |
+
*/
|
184 |
+
function wcj_cart_subtotal( $atts ) {
|
185 |
+
if ( $_cart = WC()->cart ) {
|
186 |
+
return $_cart->get_cart_subtotal();
|
187 |
+
}
|
188 |
+
return '';
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* wcj_cart_subtotal_tax.
|
193 |
+
*
|
194 |
+
* @version 3.5.1
|
195 |
+
* @since 3.5.1
|
196 |
+
*/
|
197 |
+
function wcj_cart_subtotal_tax( $atts ) {
|
198 |
+
if ( $_cart = WC()->cart ) {
|
199 |
+
return wc_price( $_cart->get_subtotal_tax() );
|
200 |
+
}
|
201 |
+
return '';
|
202 |
+
}
|
203 |
+
|
204 |
+
/**
|
205 |
+
* wcj_cart_tax.
|
206 |
+
*
|
207 |
+
* Gets the cart tax (after calculation).
|
208 |
+
*
|
209 |
+
* @version 3.5.1
|
210 |
+
* @since 3.5.1
|
211 |
+
* @todo check `$_cart->get_total_tax()`
|
212 |
+
* @todo check `$_cart->get_cart_contents_tax()`
|
213 |
+
* @todo check `$_cart->get_tax_amount( string $tax_rate_id )` // Get a tax amount.
|
214 |
+
* @todo check `$_cart->get_taxes_total( boolean $compound = true, boolean $display = true )` // Get tax row amounts with or without compound taxes includes.
|
215 |
+
*/
|
216 |
+
function wcj_cart_tax( $atts ) {
|
217 |
+
if ( $_cart = WC()->cart ) {
|
218 |
+
return $_cart->get_cart_tax();
|
219 |
+
}
|
220 |
+
return '';
|
221 |
+
}
|
222 |
+
|
223 |
+
/**
|
224 |
+
* wcj_cart_total_ex_tax.
|
225 |
+
*
|
226 |
+
* Gets the total excluding taxes.
|
227 |
+
*
|
228 |
+
* @version 3.5.1
|
229 |
+
* @since 3.5.1
|
230 |
+
*/
|
231 |
+
function wcj_cart_total_ex_tax( $atts ) {
|
232 |
+
if ( $_cart = WC()->cart ) {
|
233 |
+
return $_cart->get_total_ex_tax();
|
234 |
+
}
|
235 |
+
return '';
|
236 |
+
}
|
237 |
+
|
238 |
+
/**
|
239 |
+
* wcj_cart_shipping_total.
|
240 |
+
*
|
241 |
+
* @version 3.5.1
|
242 |
+
* @since 3.5.1
|
243 |
+
* @todo check `$_cart->get_shipping_total()`
|
244 |
+
*/
|
245 |
+
function wcj_cart_shipping_total( $atts ) {
|
246 |
+
if ( $_cart = WC()->cart ) {
|
247 |
+
return $_cart->get_cart_shipping_total();
|
248 |
+
}
|
249 |
+
return '';
|
250 |
+
}
|
251 |
+
|
252 |
+
/**
|
253 |
+
* wcj_cart_shipping_tax.
|
254 |
+
*
|
255 |
+
* Get shipping_tax.
|
256 |
+
*
|
257 |
+
* @version 3.5.1
|
258 |
+
* @since 3.5.1
|
259 |
+
* @todo check `$_cart->get_shipping_tax_amount( string $tax_rate_id )` // Get a tax amount
|
260 |
+
*/
|
261 |
+
function wcj_cart_shipping_tax( $atts ) {
|
262 |
+
if ( $_cart = WC()->cart ) {
|
263 |
+
return wc_price( $_cart->get_shipping_tax() );
|
264 |
+
}
|
265 |
+
return '';
|
266 |
+
}
|
267 |
+
|
268 |
+
}
|
269 |
+
|
270 |
+
endif;
|
271 |
+
|
272 |
+
return new WCJ_Cart_Shortcodes();
|
includes/shortcodes/class-wcj-shortcodes-general.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - General
|
4 |
*
|
5 |
-
* @version 3.5.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,16 +15,13 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version 3.5.
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
22 |
$this->the_shortcodes = array(
|
23 |
'wcj_barcode',
|
24 |
'wcj_button_toggle_tax_display',
|
25 |
-
'wcj_cart_items_total_quantity',
|
26 |
-
'wcj_cart_items_total_weight',
|
27 |
-
'wcj_cart_total',
|
28 |
'wcj_country_select_drop_down_list',
|
29 |
'wcj_currency_exchange_rate',
|
30 |
'wcj_currency_exchange_rates_table',
|
@@ -847,47 +844,6 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
|
|
847 |
return $this->wcj_wpml( $atts, $content );
|
848 |
}
|
849 |
|
850 |
-
/**
|
851 |
-
* wcj_cart_items_total_quantity.
|
852 |
-
*
|
853 |
-
* @version 2.7.0
|
854 |
-
* @since 2.7.0
|
855 |
-
*/
|
856 |
-
function wcj_cart_items_total_quantity( $atts ) {
|
857 |
-
$total_quantity = 0;
|
858 |
-
$_items = WC()->cart->get_cart();
|
859 |
-
foreach( $_items as $_item ) {
|
860 |
-
$total_quantity += $_item['quantity'];
|
861 |
-
}
|
862 |
-
return $total_quantity;
|
863 |
-
}
|
864 |
-
|
865 |
-
/**
|
866 |
-
* wcj_cart_items_total_weight.
|
867 |
-
*/
|
868 |
-
function wcj_cart_items_total_weight( $atts ) {
|
869 |
-
$the_cart = WC()->cart;
|
870 |
-
return $the_cart->cart_contents_weight;
|
871 |
-
}
|
872 |
-
|
873 |
-
/**
|
874 |
-
* wcj_cart_total.
|
875 |
-
*
|
876 |
-
* @version 3.5.0
|
877 |
-
* @since 2.8.0
|
878 |
-
*/
|
879 |
-
function wcj_cart_total( $atts ) {
|
880 |
-
if ( $_cart = WC()->cart ) {
|
881 |
-
if ( 1 != $atts['multiply_by'] ) {
|
882 |
-
$cart_total = wc_prices_include_tax() ? WC()->cart->get_cart_contents_total() + WC()->cart->get_cart_contents_tax() : WC()->cart->get_cart_contents_total();
|
883 |
-
return wc_price( $atts['multiply_by'] * $cart_total );
|
884 |
-
} else {
|
885 |
-
return $_cart->get_cart_total();
|
886 |
-
}
|
887 |
-
}
|
888 |
-
return '';
|
889 |
-
}
|
890 |
-
|
891 |
/**
|
892 |
* wcj_current_date.
|
893 |
*
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - General
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 3.5.1
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
22 |
$this->the_shortcodes = array(
|
23 |
'wcj_barcode',
|
24 |
'wcj_button_toggle_tax_display',
|
|
|
|
|
|
|
25 |
'wcj_country_select_drop_down_list',
|
26 |
'wcj_currency_exchange_rate',
|
27 |
'wcj_currency_exchange_rates_table',
|
844 |
return $this->wcj_wpml( $atts, $content );
|
845 |
}
|
846 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
847 |
/**
|
848 |
* wcj_current_date.
|
849 |
*
|
includes/shortcodes/class-wcj-shortcodes-order-items.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Order Items
|
4 |
*
|
5 |
-
* @version 3.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -440,7 +440,7 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
440 |
/**
|
441 |
* get_cell.
|
442 |
*
|
443 |
-
* @version 3.
|
444 |
* @since 3.2.0
|
445 |
*/
|
446 |
function get_cell( $column, $column_param, $atts, $the_order, $columns, $item_counter, $item_id, $item, $the_product ) {
|
@@ -529,6 +529,9 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
529 |
case 'item_product_input_fields':
|
530 |
return wcj_get_product_input_fields( $item );
|
531 |
|
|
|
|
|
|
|
532 |
case 'item_product_addons':
|
533 |
return wcj_get_product_addons( $item, wcj_get_order_currency( $this->the_order ) );
|
534 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Order Items
|
4 |
*
|
5 |
+
* @version 3.5.1
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
440 |
/**
|
441 |
* get_cell.
|
442 |
*
|
443 |
+
* @version 3.5.1
|
444 |
* @since 3.2.0
|
445 |
*/
|
446 |
function get_cell( $column, $column_param, $atts, $the_order, $columns, $item_counter, $item_id, $item, $the_product ) {
|
529 |
case 'item_product_input_fields':
|
530 |
return wcj_get_product_input_fields( $item );
|
531 |
|
532 |
+
case 'item_product_input_fields_with_titles':
|
533 |
+
return wcj_get_product_input_fields( $item, true, ( '' != $column_param ? $column_param : ', ' ) );
|
534 |
+
|
535 |
case 'item_product_addons':
|
536 |
return wcj_get_product_addons( $item, wcj_get_order_currency( $this->the_order ) );
|
537 |
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: algoritmika, anbinder
|
|
3 |
Tags: woocommerce, booster for woocommerce, woocommerce jetpack
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 4.9
|
6 |
-
Stable tag: 3.5.
|
7 |
License: GNU General Public License v3.0
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -182,6 +182,24 @@ You can see the differences between versions in this [table](https://booster.io/
|
|
182 |
|
183 |
== Changelog ==
|
184 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
= 3.5.0 - 04/04/2018 =
|
186 |
* Dev - PRICES & CURRENCIES - Currency Exchange Rates - Exchange Rates Server - "Bank of England (BOE)" server added.
|
187 |
* Dev - PRICES & CURRENCIES - Currency Exchange Rates - Exchange Rates Server - "Google" server added.
|
3 |
Tags: woocommerce, booster for woocommerce, woocommerce jetpack
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 4.9
|
6 |
+
Stable tag: 3.5.1
|
7 |
License: GNU General Public License v3.0
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
182 |
|
183 |
== Changelog ==
|
184 |
|
185 |
+
= 3.5.1 - 09/04/2018 =
|
186 |
+
* Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Advanced: Price Filters Priority - Added to all hooks.
|
187 |
+
* Dev - PRICES & CURRENCIES - Prices and Currencies by Country - "Advanced: Price Filters Priority" option added.
|
188 |
+
* Dev - PRICES & CURRENCIES - Product Open Pricing (Name Your Price) - "Frontend Position" option added.
|
189 |
+
* Dev - CART & CHECKOUT - Mini Cart Custom Info - Admin settings restyled.
|
190 |
+
* Fix - SHIPPING & ORDERS - Left to Free Shipping - `wcj_get_left_to_free_shipping()` - WooCommerce below v3.3.0 compatibility issue fixed.
|
191 |
+
* Dev - SHIPPING & ORDERS - Shipping Time - Admin settings - Description updated.
|
192 |
+
* Dev - Shortcodes - Code refactoring - "Cart" shortcodes moved to new `class-wcj-shortcodes-cart.php` file.
|
193 |
+
* Dev - Shortcodes - Cart - `[wcj_cart_items_total_quantity]` - Code refactoring.
|
194 |
+
* Dev - Shortcodes - Cart - `[wcj_cart_items_total_weight]` - Code refactoring.
|
195 |
+
* Dev - Shortcodes - Cart - `[wcj_cart_discount_tax]`, `[wcj_cart_discount_total]` shortcodes added.
|
196 |
+
* Dev - Shortcodes - Cart - `[wcj_cart_fee_tax]`, `[wcj_cart_fee_total]` shortcodes added.
|
197 |
+
* Dev - Shortcodes - Cart - `[wcj_cart_function]` shortcode added.
|
198 |
+
* Dev - Shortcodes - Cart - `[wcj_cart_shipping_total]`, `[wcj_cart_shipping_tax]` shortcodes added.
|
199 |
+
* Dev - Shortcodes - Cart - `[wcj_cart_subtotal]`, `[wcj_cart_subtotal_tax]` shortcodes added.
|
200 |
+
* Dev - Shortcodes - Cart - `[wcj_cart_tax]`, `[wcj_cart_total_ex_tax]` shortcodes added.
|
201 |
+
* Dev - Shortcodes - Orders - `[wcj_order_items_table]` - Columns - `item_product_input_fields_with_titles` column added.
|
202 |
+
|
203 |
= 3.5.0 - 04/04/2018 =
|
204 |
* Dev - PRICES & CURRENCIES - Currency Exchange Rates - Exchange Rates Server - "Bank of England (BOE)" server added.
|
205 |
* Dev - PRICES & CURRENCIES - Currency Exchange Rates - Exchange Rates Server - "Google" server added.
|
woocommerce-jetpack.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Booster for WooCommerce
|
4 |
Plugin URI: https://booster.io
|
5 |
Description: Supercharge your WooCommerce site with these awesome powerful features.
|
6 |
-
Version: 3.5.
|
7 |
Author: Algoritmika Ltd
|
8 |
Author URI: https://booster.io
|
9 |
Text Domain: woocommerce-jetpack
|
@@ -57,7 +57,7 @@ final class WC_Jetpack {
|
|
57 |
* @var string
|
58 |
* @since 2.4.7
|
59 |
*/
|
60 |
-
public $version = '3.5.
|
61 |
|
62 |
/**
|
63 |
* @var WC_Jetpack The single instance of the class
|
3 |
Plugin Name: Booster for WooCommerce
|
4 |
Plugin URI: https://booster.io
|
5 |
Description: Supercharge your WooCommerce site with these awesome powerful features.
|
6 |
+
Version: 3.5.1
|
7 |
Author: Algoritmika Ltd
|
8 |
Author URI: https://booster.io
|
9 |
Text Domain: woocommerce-jetpack
|
57 |
* @var string
|
58 |
* @since 2.4.7
|
59 |
*/
|
60 |
+
public $version = '3.5.1';
|
61 |
|
62 |
/**
|
63 |
* @var WC_Jetpack The single instance of the class
|