Version Description
- 27/12/2019 =
- Fix - CART & CHECKOUT - Checkout Custom Fields - Preserve select field value when editing the order from admin.
- Fix - CART & CHECKOUT - EU VAT Number - Set the user agent explicitly, trying to avoid possible SoapClient errors.
- Fix - PAYMENT GATEWAYS - Gateways Min/Max Amounts - Notices keep being displayed after order is placed.
- Fix - PRODUCTS - Product Availability by Date - Fix wrong availabilities on non English languages by setting a default number format of 'm/d/Y' on 'wcj_product_by_date_direct_date' option and by improving description.
- Fix - PRODUCTS - Product Availability by Date - Fix wrong availabilities on non English languages by setting the date properly according to 'wcj_product_by_date_direct_date_format' option and timezone.
- Fix - PRODUCTS - Products per Page - Sanitize 'wcj_products_per_page' param.
- Fix - PRODUCTS - SKU - Sort variations in ascending order on
get_all_variations()
for better results with 'Variable Products Variations' option. - Fix - SHIPPING & ORDERS - Custom Shipping - Fix possible Fatal error "Class 'WC_Shipping_WCJ_Custom_Template' not found".
- Fix - Classes -
WCJ_Module_Product_By_Condition
-pre_get_posts
- Disables pre_get_posts query when exporting products. - Dev - PAYMENT GATEWAYS - Custom Gateways -
update_custom_payment_gateways_fields_order_meta()
now also expects an array as an input value. - Dev - PAYMENT GATEWAYS - Custom Gateways - Add 'name_array' as parameter on description replace preventing possible duplicated input fields names.
- Dev - PDF INVOICING & PACKING SLIPS - Advanced - Add option to set Internal Encoding with
mb_internal_encoding()
. - Dev - PRICES & CURRENCIES - Global Discount - Add 'WPML: Get Products in All Languages' option.
- Dev - PRICES & CURRENCIES - Global Discount - Add 'WPML: Get Terms in All Languages' option.
- Dev - PRICES & CURRENCIES - Wholesale Price - Add 'WPML: Get Products in All Languages' option.
- Dev - PRICES & CURRENCIES - Wholesale Price - Add 'WPML: Get Terms in All Languages' option.
- Dev - SHIPPING & ORDERS - Shipping by Cities - Improve postcode detection trying to read it from
WC()->customer->get_shipping_postcode
too. - Dev - PRODUCTS - Product Addons - Add option to export and import 'wcj_product_addons_per_productenable_by_variation_%' meta.
- Dev - PRODUCTS - Products per Page - Add option to control form method by POST or GET.
- Dev - PRODUCTS - SKU - Add option to automatically generate SKU for variations on product save.
- Dev - PRODUCTS - SKU - Add option to generate SKU using Hashids library.
- Dev - PRODUCTS - SKU - Add option to manage the numbers of characters on SKU using Hashids.
- Dev - PRODUCTS - SKU - Add option to control SKU format with numbers or letters using Hashids.
- Dev -
WCJ_Module
- Get products in all languages from ajax product search, if corresponding WPML option is enabled. - Dev -
WCJ_Module
- Moveremove_wpml_functions_before_get_terms
andrestore_wpml_functions_after_get_terms
from 'Price based on User Role' module making it more flexible to be appliable to any module. - Dev - Shortcodes -
[wcj_input_field]
Add 'data_attributes' param. - Dev - Shortcodes -
[wcj_input_field]
Add 'name_array' param, allowing the input name to be set as an array. e.g.[wcj_input_field name_array="parent" name="test"]
-><input name="parent[test][value]" />
. - Dev - Functions - General - Create
wcj_get_data_attributes_html()
function allowing to create a multiple data parameters likedata-param_a='value_a'
when receiving a associative array. - Dev - Functions - Date and Time - Add
wcj_timezone()
function to get timezone.wp_timezone()
already does it but as it was introduced only on version 5.3.0 this was a safer option. - Dev - Classes -
WCJ_Module_Product_By_Condition
-pre_get_posts
- Add 'wcj_product_by_condition_pre_get_posts_validation' filter to setup when the query should be disabled.
Download this release
Release Info
Developer | algoritmika |
Plugin | Booster for WooCommerce |
Version | 4.7.0 |
Comparing to | |
See all releases |
Code changes from version 4.6.1 to 4.7.0
- includes/class-wcj-checkout-custom-fields.php +5 -2
- includes/class-wcj-payment-gateways-min-max.php +64 -19
- includes/class-wcj-payment-gateways.php +20 -7
- includes/class-wcj-price-by-user-role.php +3 -43
- includes/class-wcj-product-addons.php +65 -2
- includes/class-wcj-product-by-date.php +11 -3
- includes/class-wcj-products-per-page.php +8 -8
- includes/class-wcj-shipping-by-cities.php +3 -3
- includes/class-wcj-shipping.php +6 -3
- includes/class-wcj-sku.php +174 -43
- includes/classes/class-wcj-module-product-by-condition.php +28 -4
- includes/classes/class-wcj-module.php +152 -1
- includes/classes/class-wcj-pdf-invoice.php +13 -5
- includes/functions/wcj-functions-date-time.php +29 -1
- includes/functions/wcj-functions-eu-vat.php +12 -6
- includes/functions/wcj-functions-general.php +60 -1
- includes/gateways/class-wc-gateway-wcj-custom.php +3 -3
- includes/lib/hashids/src/Hashids.php +420 -0
- includes/lib/hashids/src/HashidsException.php +24 -0
- includes/lib/hashids/src/HashidsInterface.php +57 -0
- includes/lib/hashids/src/Math/Bc.php +123 -0
- includes/lib/hashids/src/Math/Gmp.php +123 -0
- includes/lib/hashids/src/Math/MathInterface.php +99 -0
- includes/settings/meta-box/wcj-settings-meta-box-product-by-date.php +4 -3
- includes/settings/wcj-settings-global-discount.php +11 -4
- includes/settings/wcj-settings-pdf-invoicing-advanced.php +8 -1
- includes/settings/wcj-settings-price-by-user-role.php +4 -14
- includes/settings/wcj-settings-product-addons.php +22 -5
- includes/settings/wcj-settings-product-by-date.php +3 -3
- includes/settings/wcj-settings-products-per-page.php +10 -0
- includes/settings/wcj-settings-sku.php +45 -3
- includes/settings/wcj-settings-wholesale-price.php +8 -1
- includes/shortcodes/class-wcj-shortcodes-input-field.php +27 -5
- langs/woocommerce-jetpack.pot +433 -323
- readme.txt +34 -2
- woocommerce-jetpack.php +2 -2
includes/class-wcj-checkout-custom-fields.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Checkout Custom Fields
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -340,7 +340,7 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
|
|
340 |
/**
|
341 |
* add_woocommerce_admin_fields.
|
342 |
*
|
343 |
-
* @version 4.
|
344 |
* @todo converting from before version 2.3.0: section?
|
345 |
* @todo add alternative way of displaying fields (e.g. new meta box), so we have more control over displaying fields' values (e.g. line breaks)
|
346 |
*/
|
@@ -402,6 +402,9 @@ class WCJ_Checkout_Custom_Fields extends WCJ_Module {
|
|
402 |
'class' => $the_class,
|
403 |
'wrapper_class' => 'form-field-wide',
|
404 |
);
|
|
|
|
|
|
|
405 |
if ( isset( $options ) ) {
|
406 |
add_filter( "woocommerce_order_get__{$section}_{$the_key}", function ( $name ) use ( $options ) {
|
407 |
if ( isset( $options[ $name ] ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Checkout Custom Fields
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
340 |
/**
|
341 |
* add_woocommerce_admin_fields.
|
342 |
*
|
343 |
+
* @version 4.7.0
|
344 |
* @todo converting from before version 2.3.0: section?
|
345 |
* @todo add alternative way of displaying fields (e.g. new meta box), so we have more control over displaying fields' values (e.g. line breaks)
|
346 |
*/
|
402 |
'class' => $the_class,
|
403 |
'wrapper_class' => 'form-field-wide',
|
404 |
);
|
405 |
+
if ( ! empty( $the_meta ) && ! is_array( $the_meta ) ) {
|
406 |
+
$fields[ $the_key ]['value'] = $the_meta;
|
407 |
+
}
|
408 |
if ( isset( $options ) ) {
|
409 |
add_filter( "woocommerce_order_get__{$section}_{$the_key}", function ( $name ) use ( $options ) {
|
410 |
if ( isset( $options[ $name ] ) ) {
|
includes/class-wcj-payment-gateways-min-max.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Gateways Min/Max Amounts
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.4.1
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -13,10 +13,17 @@ if ( ! class_exists( 'WCJ_Payment_Gateways_Min_Max' ) ) :
|
|
13 |
|
14 |
class WCJ_Payment_Gateways_Min_Max extends WCJ_Module {
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version
|
20 |
* @since 2.4.1
|
21 |
*/
|
22 |
function __construct() {
|
@@ -29,27 +36,56 @@ class WCJ_Payment_Gateways_Min_Max extends WCJ_Module {
|
|
29 |
|
30 |
if ( $this->is_enabled() ) {
|
31 |
add_filter( 'woocommerce_available_payment_gateways', array( $this, 'available_payment_gateways' ), PHP_INT_MAX, 1 );
|
|
|
32 |
}
|
33 |
}
|
34 |
|
35 |
/**
|
36 |
-
*
|
37 |
*
|
38 |
-
* @version 4.
|
39 |
-
* @since
|
40 |
-
* @todo (maybe) `wc_clear_notices()`
|
41 |
*/
|
42 |
-
function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
if ( ! function_exists( 'WC' ) || ! isset( WC()->cart ) ) {
|
44 |
-
return
|
|
|
|
|
|
|
45 |
}
|
46 |
$total_in_cart = WC()->cart->cart_contents_total;
|
47 |
if ( 'no' === get_option( 'wcj_payment_gateways_min_max_exclude_shipping', 'no' ) ) {
|
48 |
$total_in_cart += WC()->cart->shipping_total;
|
49 |
}
|
50 |
-
$notices
|
51 |
-
$notices_template_min = get_option( 'wcj_payment_gateways_min_max_notices_template_min', __( 'Minimum amount for %gateway_title% is %min_amount%', 'woocommerce-jetpack') );
|
52 |
-
$notices_template_max = get_option( 'wcj_payment_gateways_min_max_notices_template_max', __( 'Maximum amount for %gateway_title% is %max_amount%', 'woocommerce-jetpack') );
|
53 |
foreach ( $_available_gateways as $key => $gateway ) {
|
54 |
$min = get_option( 'wcj_payment_gateways_min_' . $key, 0 );
|
55 |
$max = get_option( 'wcj_payment_gateways_max_' . $key, 0 );
|
@@ -73,14 +109,23 @@ class WCJ_Payment_Gateways_Min_Max extends WCJ_Module {
|
|
73 |
continue;
|
74 |
}
|
75 |
}
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
return $_available_gateways;
|
85 |
}
|
86 |
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Gateways Min/Max Amounts
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.4.1
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
13 |
|
14 |
class WCJ_Payment_Gateways_Min_Max extends WCJ_Module {
|
15 |
|
16 |
+
/**
|
17 |
+
* @version 4.7.0
|
18 |
+
*
|
19 |
+
* @var array
|
20 |
+
*/
|
21 |
+
private $notices = array();
|
22 |
+
|
23 |
/**
|
24 |
* Constructor.
|
25 |
*
|
26 |
+
* @version 4.7.0
|
27 |
* @since 2.4.1
|
28 |
*/
|
29 |
function __construct() {
|
36 |
|
37 |
if ( $this->is_enabled() ) {
|
38 |
add_filter( 'woocommerce_available_payment_gateways', array( $this, 'available_payment_gateways' ), PHP_INT_MAX, 1 );
|
39 |
+
add_filter( 'woocommerce_before_checkout_form', array( $this, 'add_notices' ), 1 );
|
40 |
}
|
41 |
}
|
42 |
|
43 |
/**
|
44 |
+
* add_notices.
|
45 |
*
|
46 |
+
* @version 4.7.0
|
47 |
+
* @since 4.7.0
|
|
|
48 |
*/
|
49 |
+
function add_notices() {
|
50 |
+
if ( ! function_exists( 'WC' ) ) {
|
51 |
+
return;
|
52 |
+
}
|
53 |
+
WC()->payment_gateways->get_available_payment_gateways();
|
54 |
+
$notices = $this->notices;
|
55 |
+
if ( function_exists( 'is_checkout' ) && is_checkout() && 'yes' === get_option( 'wcj_payment_gateways_min_max_notices_enable', 'yes' ) && ! empty( $notices ) ) {
|
56 |
+
$notice_type = get_option( 'wcj_payment_gateways_min_max_notices_type', 'notice' );
|
57 |
+
foreach ( $notices as $notice ) {
|
58 |
+
if ( ! wc_has_notice( $notice, $notice_type ) ) {
|
59 |
+
wc_add_notice( $notice, $notice_type );
|
60 |
+
}
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* remove_payment_gateways.
|
67 |
+
*
|
68 |
+
* @version 4.7.0
|
69 |
+
* @since 4.7.0
|
70 |
+
*
|
71 |
+
* @param $_available_gateways
|
72 |
+
*
|
73 |
+
* @return array
|
74 |
+
*/
|
75 |
+
function remove_payment_gateways( $_available_gateways ) {
|
76 |
if ( ! function_exists( 'WC' ) || ! isset( WC()->cart ) ) {
|
77 |
+
return array(
|
78 |
+
'gateways' => $_available_gateways,
|
79 |
+
'notices' => null,
|
80 |
+
);
|
81 |
}
|
82 |
$total_in_cart = WC()->cart->cart_contents_total;
|
83 |
if ( 'no' === get_option( 'wcj_payment_gateways_min_max_exclude_shipping', 'no' ) ) {
|
84 |
$total_in_cart += WC()->cart->shipping_total;
|
85 |
}
|
86 |
+
$notices = array();
|
87 |
+
$notices_template_min = get_option( 'wcj_payment_gateways_min_max_notices_template_min', __( 'Minimum amount for %gateway_title% is %min_amount%', 'woocommerce-jetpack' ) );
|
88 |
+
$notices_template_max = get_option( 'wcj_payment_gateways_min_max_notices_template_max', __( 'Maximum amount for %gateway_title% is %max_amount%', 'woocommerce-jetpack' ) );
|
89 |
foreach ( $_available_gateways as $key => $gateway ) {
|
90 |
$min = get_option( 'wcj_payment_gateways_min_' . $key, 0 );
|
91 |
$max = get_option( 'wcj_payment_gateways_max_' . $key, 0 );
|
109 |
continue;
|
110 |
}
|
111 |
}
|
112 |
+
return array(
|
113 |
+
'gateways' => $_available_gateways,
|
114 |
+
'notices' => $notices,
|
115 |
+
);
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* available_payment_gateways.
|
120 |
+
*
|
121 |
+
* @version 4.7.0
|
122 |
+
* @since 2.4.1
|
123 |
+
* @todo (maybe) `wc_clear_notices()`
|
124 |
+
*/
|
125 |
+
function available_payment_gateways( $_available_gateways ) {
|
126 |
+
$remove_response = $this->remove_payment_gateways( $_available_gateways );
|
127 |
+
$_available_gateways = $remove_response['gateways'];
|
128 |
+
$this->notices = $remove_response['notices'];
|
129 |
return $_available_gateways;
|
130 |
}
|
131 |
|
includes/class-wcj-payment-gateways.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Gateways
|
4 |
*
|
5 |
-
* @version
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -122,7 +122,7 @@ class WCJ_Payment_Gateways extends WCJ_Module {
|
|
122 |
/**
|
123 |
* update_custom_payment_gateways_fields_order_meta.
|
124 |
*
|
125 |
-
* @version
|
126 |
* @since 2.5.2
|
127 |
*/
|
128 |
function update_custom_payment_gateways_fields_order_meta( $order_id, $posted ) {
|
@@ -131,11 +131,24 @@ class WCJ_Payment_Gateways extends WCJ_Module {
|
|
131 |
$input_fields = array();
|
132 |
foreach ( $_POST as $key => $value ) {
|
133 |
if ( 'wcj_input_field_' === substr( $key, 0, 16 ) ) {
|
134 |
-
if (
|
135 |
-
if ( isset( $_POST[ '
|
136 |
-
|
137 |
-
|
138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
}
|
140 |
}
|
141 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Gateways
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
122 |
/**
|
123 |
* update_custom_payment_gateways_fields_order_meta.
|
124 |
*
|
125 |
+
* @version 4.7.0
|
126 |
* @since 2.5.2
|
127 |
*/
|
128 |
function update_custom_payment_gateways_fields_order_meta( $order_id, $posted ) {
|
131 |
$input_fields = array();
|
132 |
foreach ( $_POST as $key => $value ) {
|
133 |
if ( 'wcj_input_field_' === substr( $key, 0, 16 ) ) {
|
134 |
+
if ( ! is_array( $value ) ) {
|
135 |
+
if ( isset( $_POST[ 'for_' . $key ] ) && $payment_method === $_POST[ 'for_' . $key ] ) {
|
136 |
+
if ( isset( $_POST[ 'label_for_' . $key ] ) ) {
|
137 |
+
$input_fields[ $_POST[ 'label_for_' . $key ] ] = $value;
|
138 |
+
} else {
|
139 |
+
$input_fields[ substr( $key, 16 ) ] = $value;
|
140 |
+
}
|
141 |
+
}
|
142 |
+
} else {
|
143 |
+
if ( $payment_method === substr( $key, 16 ) ) {
|
144 |
+
foreach ( $value as $input_name => $input_value ) {
|
145 |
+
$label_value = isset( $input_value['label'] ) ? $input_value['label'] : '';
|
146 |
+
if ( ! empty( $label_value ) ) {
|
147 |
+
$input_fields[ $label_value ] = $input_value['value'];
|
148 |
+
} else {
|
149 |
+
$input_fields[ $input_name ] = $input_value['value'];
|
150 |
+
}
|
151 |
+
}
|
152 |
}
|
153 |
}
|
154 |
}
|
includes/class-wcj-price-by-user-role.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Price based on User Role
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo Fix "Make Empty Price" option for variable products
|
@@ -17,7 +17,7 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 4.
|
21 |
* @since 2.5.0
|
22 |
*/
|
23 |
function __construct() {
|
@@ -47,48 +47,8 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
47 |
// Admin settings - "copy price" buttons
|
48 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_script' ) );
|
49 |
add_filter( 'woocommerce_hide_invisible_variations', array( $this, 'show_empty_price_variations' ) );
|
50 |
-
add_action('woocommerce_before_single_variation',array($this,'remove_single_variation_hooks'));
|
51 |
-
add_action('wcj_before_get_terms',array($this,'remove_wpml_functions_before_get_terms'));
|
52 |
-
add_action('wcj_after_get_terms',array($this,'remove_wpml_functions_after_get_terms'));
|
53 |
-
}
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* remove_wpml_functions_before_get_terms.
|
58 |
-
*
|
59 |
-
* @see https://wpml.org/forums/topic/get-all-terms-of-all-languages-outside-loop/
|
60 |
-
*
|
61 |
-
* @version 4.6.0
|
62 |
-
* @since 4.6.0
|
63 |
-
*/
|
64 |
-
function remove_wpml_functions_before_get_terms() {
|
65 |
-
if ( 'no' === get_option( 'wcj_price_by_user_role_wpml_get_terms_all_lang', 'no' ) ) {
|
66 |
-
return;
|
67 |
-
}
|
68 |
-
// remove WPML term filters
|
69 |
-
global $sitepress;
|
70 |
-
remove_filter( 'get_terms_args', array( $sitepress, 'get_terms_args_filter' ) );
|
71 |
-
remove_filter( 'get_term', array( $sitepress, 'get_term_adjust_id' ) );
|
72 |
-
remove_filter( 'terms_clauses', array( $sitepress, 'terms_clauses' ) );
|
73 |
-
}
|
74 |
-
|
75 |
-
/**
|
76 |
-
* remove_wpml_functions_after_get_terms
|
77 |
-
*
|
78 |
-
* @see http://support.themeblvd.com/forums/topic/wpml-sitepress-php-error-on-backend-due-to-layout-builder/
|
79 |
-
*
|
80 |
-
* @version 4.6.0
|
81 |
-
* @since 4.6.0
|
82 |
-
*/
|
83 |
-
function remove_wpml_functions_after_get_terms() {
|
84 |
-
if ( 'no' === get_option( 'wcj_price_by_user_role_wpml_get_terms_all_lang', 'no' ) ) {
|
85 |
-
return;
|
86 |
}
|
87 |
-
// restore WPML term filters
|
88 |
-
global $sitepress;
|
89 |
-
add_filter( 'terms_clauses', array( $sitepress, 'terms_clauses' ), 10, 3 );
|
90 |
-
add_filter( 'get_term', array( $sitepress, 'get_term_adjust_id' ) );
|
91 |
-
add_filter( 'get_terms_args', array( $sitepress, 'get_terms_args_filter' ), 10, 2 );
|
92 |
}
|
93 |
|
94 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Price based on User Role
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.5.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo Fix "Make Empty Price" option for variable products
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 4.7.0
|
21 |
* @since 2.5.0
|
22 |
*/
|
23 |
function __construct() {
|
47 |
// Admin settings - "copy price" buttons
|
48 |
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_script' ) );
|
49 |
add_filter( 'woocommerce_hide_invisible_variations', array( $this, 'show_empty_price_variations' ) );
|
50 |
+
add_action( 'woocommerce_before_single_variation', array( $this, 'remove_single_variation_hooks' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
}
|
|
|
|
|
|
|
|
|
|
|
52 |
}
|
53 |
|
54 |
/**
|
includes/class-wcj-product-addons.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Addons
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.5.3
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo admin order view (names)
|
@@ -18,7 +18,7 @@ class WCJ_Product_Addons extends WCJ_Module {
|
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
-
* @version 4.
|
22 |
* @since 2.5.3
|
23 |
* @todo (maybe) add "in progress" ajax message
|
24 |
* @todo (maybe) for variable products - show addons only if variation is selected (e.g. move to addons from `woocommerce_before_add_to_cart_button` to variation description)
|
@@ -91,7 +91,70 @@ class WCJ_Product_Addons extends WCJ_Module {
|
|
91 |
add_action( $qty_trigger, array( $this, 'maybe_reduce_addons_qty' ) );
|
92 |
}
|
93 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
}
|
|
|
|
|
95 |
}
|
96 |
|
97 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Addons
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.5.3
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo admin order view (names)
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
+
* @version 4.7.0
|
22 |
* @since 2.5.3
|
23 |
* @todo (maybe) add "in progress" ajax message
|
24 |
* @todo (maybe) for variable products - show addons only if variation is selected (e.g. move to addons from `woocommerce_before_add_to_cart_button` to variation description)
|
91 |
add_action( $qty_trigger, array( $this, 'maybe_reduce_addons_qty' ) );
|
92 |
}
|
93 |
}
|
94 |
+
|
95 |
+
// Export and import '_wcj_product_addons_per_product_enable_by_variation_%' meta
|
96 |
+
add_filter( 'woocommerce_product_export_meta_value', array( $this, 'export_enable_by_variation_meta' ), 10, 4 );
|
97 |
+
add_filter( 'woocommerce_product_importer_parsed_data', array( $this, 'import_enable_by_variation_meta' ), 10, 2 );
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* import_enable_by_variation_meta.
|
103 |
+
*
|
104 |
+
* @version 4.7.0
|
105 |
+
* @since 4.7.0
|
106 |
+
*
|
107 |
+
* @param $data
|
108 |
+
* @param $raw_data
|
109 |
+
*
|
110 |
+
* @return mixed
|
111 |
+
*/
|
112 |
+
function import_enable_by_variation_meta( $data, $raw_data ) {
|
113 |
+
if (
|
114 |
+
'no' === get_option( 'wcj_product_addons_enable_by_variation_export_import', 'no' ) ||
|
115 |
+
! isset( $data['meta_data'] ) ||
|
116 |
+
empty( $data['meta_data'] )
|
117 |
+
) {
|
118 |
+
return $data;
|
119 |
+
}
|
120 |
+
$meta_data_key = - 1;
|
121 |
+
foreach ( $data['meta_data'] as $key => $meta_data ) {
|
122 |
+
if ( false !== strpos( $meta_data['key'], '_wcj_product_addons_per_product_enable_by_variation_' ) ) {
|
123 |
+
$meta_data_key = $key;
|
124 |
+
break;
|
125 |
+
}
|
126 |
+
}
|
127 |
+
if ( - 1 != $meta_data_key ) {
|
128 |
+
$new_value = array_filter( preg_split( "/\r\n|\n|\r/", $data['meta_data'][ $meta_data_key ]['value'] ) );
|
129 |
+
if ( ! empty( $new_value ) ) {
|
130 |
+
$data['meta_data'][ $meta_data_key ]['value'] = $new_value;
|
131 |
+
}
|
132 |
+
}
|
133 |
+
return $data;
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* export_enable_by_variation_meta.
|
138 |
+
*
|
139 |
+
* @version 4.7.0
|
140 |
+
* @since 4.7.0
|
141 |
+
*
|
142 |
+
* @param $value
|
143 |
+
* @param $meta
|
144 |
+
* @param $product
|
145 |
+
* @param $row
|
146 |
+
*
|
147 |
+
* @return string
|
148 |
+
*/
|
149 |
+
function export_enable_by_variation_meta( $value, $meta, $product, $row ) {
|
150 |
+
if (
|
151 |
+
'no' === get_option( 'wcj_product_addons_enable_by_variation_export_import', 'no' ) ||
|
152 |
+
false === strpos( $meta->get_data()['key'], '_wcj_product_addons_per_product_enable_by_variation_' )
|
153 |
+
) {
|
154 |
+
return $value;
|
155 |
}
|
156 |
+
$value = implode( "\n", $value );
|
157 |
+
return $value;
|
158 |
}
|
159 |
|
160 |
/**
|
includes/class-wcj-product-by-date.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Availability by Date
|
4 |
*
|
5 |
-
* @version
|
6 |
* @since 2.9.1
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -147,14 +147,22 @@ class WCJ_Product_By_Date extends WCJ_Module {
|
|
147 |
/**
|
148 |
* check_is_purchasable_by_date.
|
149 |
*
|
150 |
-
* @version
|
151 |
* @since 2.9.1
|
152 |
* @todo validate `wcj_product_by_date_` option before checking (or even better earlier, when option is saved by admin)
|
153 |
*/
|
154 |
function check_is_purchasable_by_date( $purchasable, $_product ) {
|
155 |
if ( $purchasable ) {
|
156 |
if ( false !== ( $direct_date = $this->maybe_get_direct_date( wcj_get_product_id_or_variation_parent_id( $_product ) ) ) ) {
|
157 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
} else {
|
159 |
$_date = $this->get_product_availability_this_month( $_product );
|
160 |
if ( '-' === $_date ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product Availability by Date
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.9.1
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
147 |
/**
|
148 |
* check_is_purchasable_by_date.
|
149 |
*
|
150 |
+
* @version 4.7.0
|
151 |
* @since 2.9.1
|
152 |
* @todo validate `wcj_product_by_date_` option before checking (or even better earlier, when option is saved by admin)
|
153 |
*/
|
154 |
function check_is_purchasable_by_date( $purchasable, $_product ) {
|
155 |
if ( $purchasable ) {
|
156 |
if ( false !== ( $direct_date = $this->maybe_get_direct_date( wcj_get_product_id_or_variation_parent_id( $_product ) ) ) ) {
|
157 |
+
$timestamp = strtotime( $direct_date );
|
158 |
+
if ( false === $timestamp ) {
|
159 |
+
$date = DateTime::createFromFormat( get_option( 'wcj_product_by_date_direct_date_format', 'm/d/Y' ), $direct_date, wcj_timezone() );
|
160 |
+
if ( false === $date ) {
|
161 |
+
return false;
|
162 |
+
}
|
163 |
+
$timestamp = $date->getTimestamp();
|
164 |
+
}
|
165 |
+
return ( $this->time_now >= $timestamp );
|
166 |
} else {
|
167 |
$_date = $this->get_product_availability_this_month( $_product );
|
168 |
if ( '-' === $_date ) {
|
includes/class-wcj-products-per-page.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Products per Page
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.6.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -46,7 +46,7 @@ class WCJ_Products_Per_Page extends WCJ_Module {
|
|
46 |
/**
|
47 |
* add_products_per_page_form.
|
48 |
*
|
49 |
-
* @version
|
50 |
* @since 2.5.3
|
51 |
*/
|
52 |
function add_products_per_page_form() {
|
@@ -77,10 +77,10 @@ class WCJ_Products_Per_Page extends WCJ_Module {
|
|
77 |
}
|
78 |
}
|
79 |
$select_form .= '</select>';
|
80 |
-
|
81 |
$html = '';
|
82 |
$html .= get_option( 'wcj_products_per_page_text_before', '<div class="clearfix"></div><div>' );
|
83 |
-
$html .= '<form action="' . esc_url( remove_query_arg( 'paged' ) ) . '" method="
|
84 |
$_text = get_option( 'wcj_products_per_page_text',
|
85 |
__( 'Products <strong>%from% - %to%</strong> from <strong>%total%</strong>. Products on page %select_form%', 'woocommerce-jetpack' ) );
|
86 |
$html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $_text );
|
@@ -118,15 +118,15 @@ class WCJ_Products_Per_Page extends WCJ_Module {
|
|
118 |
/**
|
119 |
* get_current_products_per_page_number.
|
120 |
*
|
121 |
-
* @version
|
122 |
* @since 3.8.0
|
123 |
*/
|
124 |
function get_current_products_per_page_number( $do_save ) {
|
125 |
-
if ( isset( $_REQUEST['wcj_products_per_page'] ) ) {
|
126 |
if ( $do_save ) {
|
127 |
-
$this->save_products_per_page_number( $_REQUEST['wcj_products_per_page'] );
|
128 |
}
|
129 |
-
return $_REQUEST['wcj_products_per_page'];
|
130 |
} elseif ( $products_per_page = $this->get_saved_products_per_page_number() ) {
|
131 |
return $products_per_page;
|
132 |
} else {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Products per Page
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.6.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
46 |
/**
|
47 |
* add_products_per_page_form.
|
48 |
*
|
49 |
+
* @version 4.7.0
|
50 |
* @since 2.5.3
|
51 |
*/
|
52 |
function add_products_per_page_form() {
|
77 |
}
|
78 |
}
|
79 |
$select_form .= '</select>';
|
80 |
+
$form_method = get_option( 'wcj_products_per_page_form_method', 'post' );
|
81 |
$html = '';
|
82 |
$html .= get_option( 'wcj_products_per_page_text_before', '<div class="clearfix"></div><div>' );
|
83 |
+
$html .= '<form action="' . esc_url( remove_query_arg( 'paged' ) ) . '" method="' . $form_method . '">';
|
84 |
$_text = get_option( 'wcj_products_per_page_text',
|
85 |
__( 'Products <strong>%from% - %to%</strong> from <strong>%total%</strong>. Products on page %select_form%', 'woocommerce-jetpack' ) );
|
86 |
$html .= str_replace( array( '%from%', '%to%', '%total%', '%select_form%' ), array( $products_from, $products_to, $products_total, $select_form ), $_text );
|
118 |
/**
|
119 |
* get_current_products_per_page_number.
|
120 |
*
|
121 |
+
* @version 4.7.0
|
122 |
* @since 3.8.0
|
123 |
*/
|
124 |
function get_current_products_per_page_number( $do_save ) {
|
125 |
+
if ( isset( $_REQUEST['wcj_products_per_page'] ) && ! empty( $_REQUEST['wcj_products_per_page'] ) ) {
|
126 |
if ( $do_save ) {
|
127 |
+
$this->save_products_per_page_number( intval( sanitize_text_field( $_REQUEST['wcj_products_per_page'] ) ) );
|
128 |
}
|
129 |
+
return intval( sanitize_text_field( $_REQUEST['wcj_products_per_page'] ) );
|
130 |
} elseif ( $products_per_page = $this->get_saved_products_per_page_number() ) {
|
131 |
return $products_per_page;
|
132 |
} else {
|
includes/class-wcj-shipping-by-cities.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Shipping by Cities
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 3.6.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -51,7 +51,7 @@ class WCJ_Shipping_By_Cities extends WCJ_Module_Shipping_By_Condition {
|
|
51 |
/**
|
52 |
* check.
|
53 |
*
|
54 |
-
* @version 4.
|
55 |
* @since 3.6.0
|
56 |
* @todo `$_REQUEST['city']` (i.e. billing city)
|
57 |
* @todo `get_base_city()` - do we really need this?
|
@@ -63,7 +63,7 @@ class WCJ_Shipping_By_Cities extends WCJ_Module_Shipping_By_Condition {
|
|
63 |
$values = array_map( 'strtoupper', array_map( 'trim', explode( PHP_EOL, $values ) ) );
|
64 |
return in_array( $customer_city, $values );
|
65 |
case 'postcodes':
|
66 |
-
$customer_postcode
|
67 |
$postcodes = array_map( 'strtoupper', array_map( 'trim', explode( PHP_EOL, $values ) ) );
|
68 |
return wcj_check_postcode( $customer_postcode, $postcodes );
|
69 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Shipping by Cities
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 3.6.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
51 |
/**
|
52 |
* check.
|
53 |
*
|
54 |
+
* @version 4.7.0
|
55 |
* @since 3.6.0
|
56 |
* @todo `$_REQUEST['city']` (i.e. billing city)
|
57 |
* @todo `get_base_city()` - do we really need this?
|
63 |
$values = array_map( 'strtoupper', array_map( 'trim', explode( PHP_EOL, $values ) ) );
|
64 |
return in_array( $customer_city, $values );
|
65 |
case 'postcodes':
|
66 |
+
$customer_postcode = strtoupper( isset( $_REQUEST['s_postcode'] ) ? $_REQUEST['s_postcode'] : ( ! empty( $customer_shipping_postcode = WC()->customer->get_shipping_postcode() ) ? $customer_shipping_postcode : WC()->countries->get_base_postcode() ) );
|
67 |
$postcodes = array_map( 'strtoupper', array_map( 'trim', explode( PHP_EOL, $values ) ) );
|
68 |
return wcj_check_postcode( $customer_postcode, $postcodes );
|
69 |
}
|
includes/class-wcj-shipping.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Shipping
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -58,11 +58,14 @@ if ( ! class_exists( 'WCJ_Shipping' ) ) :
|
|
58 |
/*
|
59 |
* add_wc_shipping_wcj_custom_class.
|
60 |
*
|
61 |
-
* @version
|
62 |
*/
|
63 |
function add_wc_shipping_wcj_custom_class( $methods ) {
|
64 |
$total_number = get_option( 'wcj_shipping_custom_shipping_total_number', 1 );
|
65 |
-
|
|
|
|
|
|
|
66 |
$the_method = new WC_Shipping_WCJ_Custom_Template();
|
67 |
$the_method->init( $i );
|
68 |
$methods[ $the_method->id ] = $the_method;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Custom Shipping
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
58 |
/*
|
59 |
* add_wc_shipping_wcj_custom_class.
|
60 |
*
|
61 |
+
* @version 4.7.0
|
62 |
*/
|
63 |
function add_wc_shipping_wcj_custom_class( $methods ) {
|
64 |
$total_number = get_option( 'wcj_shipping_custom_shipping_total_number', 1 );
|
65 |
+
if ( ! class_exists( 'WC_Shipping_WCJ_Custom_Template' ) ) {
|
66 |
+
$this->init_template_class();
|
67 |
+
}
|
68 |
+
for ( $i = 1; $i <= $total_number; $i ++ ) {
|
69 |
$the_method = new WC_Shipping_WCJ_Custom_Template();
|
70 |
$the_method->init( $i );
|
71 |
$methods[ $the_method->id ] = $the_method;
|
includes/class-wcj-sku.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - SKU
|
4 |
*
|
5 |
-
* @version
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -15,7 +15,7 @@ class WCJ_SKU extends WCJ_Module {
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
-
* @version
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
@@ -61,7 +61,86 @@ class WCJ_SKU extends WCJ_Module {
|
|
61 |
if ( 'yes' === get_option( 'wcj_sku_disabled', 'no' ) ) {
|
62 |
add_filter( 'wc_product_sku_enabled', '__return_false', PHP_INT_MAX );
|
63 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
|
67 |
/**
|
@@ -132,7 +211,7 @@ class WCJ_SKU extends WCJ_Module {
|
|
132 |
/**
|
133 |
* get_all_variations.
|
134 |
*
|
135 |
-
* @version
|
136 |
* @since 2.4.8
|
137 |
*/
|
138 |
function get_all_variations( $_product ) {
|
@@ -142,6 +221,9 @@ class WCJ_SKU extends WCJ_Module {
|
|
142 |
$all_variations[] = $_product->get_available_variation( $variation );
|
143 |
}
|
144 |
}
|
|
|
|
|
|
|
145 |
return $all_variations;
|
146 |
}
|
147 |
|
@@ -171,26 +253,13 @@ class WCJ_SKU extends WCJ_Module {
|
|
171 |
/**
|
172 |
* set_sku_with_variable.
|
173 |
*
|
174 |
-
* @version
|
175 |
* @todo `as_variable_with_suffix` - handle cases with more than 26 variations
|
176 |
*/
|
177 |
function set_sku_with_variable( $product_id, $is_preview ) {
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
$sku_number = $this->get_sequential_counter( $product_id );
|
182 |
-
break;
|
183 |
-
case 'hash_crc32':
|
184 |
-
$sku_number = sprintf( "%u", crc32( $product_id ) );
|
185 |
-
break;
|
186 |
-
default: // 'product_id'
|
187 |
-
$sku_number = $product_id;
|
188 |
-
break;
|
189 |
-
}
|
190 |
-
|
191 |
-
$product = wc_get_product( $product_id );
|
192 |
-
|
193 |
-
$this->set_sku( $product_id, $sku_number, '', $is_preview, $product_id, $product );
|
194 |
|
195 |
// Handling variable products
|
196 |
$variation_handling = apply_filters( 'booster_option', 'as_variable', get_option( 'wcj_sku_variations_handling', 'as_variable' ) );
|
@@ -198,25 +267,28 @@ class WCJ_SKU extends WCJ_Module {
|
|
198 |
$variations = $this->get_all_variations( $product );
|
199 |
if ( 'as_variable' === $variation_handling ) {
|
200 |
foreach ( $variations as $variation ) {
|
201 |
-
$this->
|
|
|
202 |
}
|
203 |
} elseif ( 'as_variation' === $variation_handling ) {
|
204 |
foreach ( $variations as $variation ) {
|
205 |
-
|
206 |
-
|
207 |
-
} elseif ( 'hash_crc32' === apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
208 |
-
$sku_number = sprintf( "%u", crc32( $variation['variation_id'] ) );
|
209 |
-
} else { // if 'product_id'
|
210 |
-
$sku_number = $variation['variation_id'];
|
211 |
-
}
|
212 |
-
$this->set_sku( $variation['variation_id'], $sku_number, '', $is_preview, $product_id, wc_get_product( $variation['variation_id'] ) );
|
213 |
}
|
214 |
-
}
|
215 |
-
else if ( 'as_variable_with_suffix' === $variation_handling ) {
|
216 |
$variation_suffixes = 'abcdefghijklmnopqrstuvwxyz';
|
217 |
-
$abc
|
218 |
foreach ( $variations as $variation ) {
|
219 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
if ( 26 == $abc ) {
|
221 |
$abc = 0;
|
222 |
}
|
@@ -225,6 +297,22 @@ class WCJ_SKU extends WCJ_Module {
|
|
225 |
}
|
226 |
}
|
227 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
/**
|
229 |
* get_acronym.
|
230 |
*
|
@@ -300,15 +388,34 @@ class WCJ_SKU extends WCJ_Module {
|
|
300 |
}
|
301 |
|
302 |
/**
|
303 |
-
*
|
304 |
*
|
305 |
-
* @version
|
306 |
-
* @
|
307 |
-
*
|
308 |
-
* @
|
309 |
-
* @
|
|
|
|
|
|
|
|
|
|
|
310 |
*/
|
311 |
-
function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
|
313 |
$format_template = get_option( 'wcj_sku_template',
|
314 |
'{category_prefix}{prefix}{sku_number}{suffix}{category_suffix}{variation_suffix}' );
|
@@ -321,7 +428,7 @@ class WCJ_SKU extends WCJ_Module {
|
|
321 |
|
322 |
$parent_product = wc_get_product( $parent_product_id );
|
323 |
|
324 |
-
$old_sku = $
|
325 |
$do_generate_new_sku = ( 'no' === get_option( 'wcj_sku_generate_only_for_empty_sku', 'no' ) || '' === $old_sku );
|
326 |
|
327 |
// {category_prefix} & {category_suffix}
|
@@ -375,7 +482,7 @@ class WCJ_SKU extends WCJ_Module {
|
|
375 |
}
|
376 |
|
377 |
$replace_values = array(
|
378 |
-
'{parent_sku}' => $parent_product->get_sku(),
|
379 |
'{product_slug}' => $_product->get_slug(),
|
380 |
'{product_slug_acronym}' => $product_slug_acronym,
|
381 |
'{parent_product_slug}' => $parent_product->get_slug(),
|
@@ -398,11 +505,35 @@ class WCJ_SKU extends WCJ_Module {
|
|
398 |
$the_sku = $old_sku;
|
399 |
}
|
400 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
401 |
if ( $is_preview ) {
|
402 |
$this->preview_buffer .= '<tr>' .
|
403 |
'<td>' . $this->product_counter++ . '</td>' .
|
404 |
'<td>' . $product_id . '</td>' .
|
405 |
-
'<td>' . $
|
406 |
'<td>' . $product_cat . '</td>' .
|
407 |
'<td>' . $the_sku . '</td>' .
|
408 |
'<td>' . $old_sku . '</td>' .
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - SKU
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*
|
18 |
+
* @version 4.7.0
|
19 |
*/
|
20 |
function __construct() {
|
21 |
|
61 |
if ( 'yes' === get_option( 'wcj_sku_disabled', 'no' ) ) {
|
62 |
add_filter( 'wc_product_sku_enabled', '__return_false', PHP_INT_MAX );
|
63 |
}
|
64 |
+
// Generate sku on product save
|
65 |
+
add_action( 'save_post_product', array( $this, 'set_new_sku_on_save' ), PHP_INT_MAX );
|
66 |
+
|
67 |
+
// Generate default hashids lib salt
|
68 |
+
add_action( 'wcj_loaded', array( $this, 'generate_default_hashids_salt' ) );
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* generate_default_hashids_salt.
|
74 |
+
*
|
75 |
+
* @version 4.7.0
|
76 |
+
* @since 4.7.0
|
77 |
+
*/
|
78 |
+
function generate_default_hashids_salt(){
|
79 |
+
if (
|
80 |
+
isset( $_GET['page'] ) && 'wc-settings' === $_GET['page'] &&
|
81 |
+
isset( $_GET['tab'] ) && 'jetpack' === $_GET['tab'] &&
|
82 |
+
isset( $_GET['wcj-cat'] ) && 'products' === $_GET['wcj-cat'] &&
|
83 |
+
isset( $_GET['section'] ) && 'sku' === $_GET['section']
|
84 |
+
) {
|
85 |
+
if ( empty( get_option( 'wcj_sku_hashids_salt_default', '' ) ) ) {
|
86 |
+
$length = 24;
|
87 |
+
$random_string = substr( str_shuffle( str_repeat( $x = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil( $length / strlen( $x ) ) ) ), 1, $length );
|
88 |
+
update_option( 'wcj_sku_hashids_salt_default', $random_string );
|
89 |
+
}
|
90 |
+
}
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* load_hashids_lib.
|
95 |
+
*
|
96 |
+
* @version 4.7.0
|
97 |
+
* @since 4.7.0
|
98 |
+
*
|
99 |
+
* @return Hashids\Hashids
|
100 |
+
*/
|
101 |
+
function get_hashids_lib() {
|
102 |
+
if (
|
103 |
+
! is_admin() ||
|
104 |
+
'hashids' !== apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) )
|
105 |
+
) {
|
106 |
+
return;
|
107 |
+
}
|
108 |
+
if ( empty( $this->hashids ) ) {
|
109 |
+
require_once( wcj_plugin_path() . '/includes/lib/hashids/src/Hashids.php' );
|
110 |
+
$sku_format = get_option( 'wcj_sku_hashids_sku_format', 'letters_and_numbers' );
|
111 |
+
$characters_case = get_option( 'wcj_sku_characters_case', 'original' );
|
112 |
+
$letters = 'original' == $characters_case ? 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' : ( 'lower' == $characters_case ? 'abcdefghijklmnopqrstuvwxyz' : 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' );
|
113 |
+
switch ( $sku_format ) {
|
114 |
+
case 'only_numbers':
|
115 |
+
$alphabet = '1234567890';
|
116 |
+
break;
|
117 |
+
case 'only_letters':
|
118 |
+
$alphabet = $letters;
|
119 |
+
break;
|
120 |
+
default:
|
121 |
+
$alphabet = $letters . '1234567890';
|
122 |
+
break;
|
123 |
+
}
|
124 |
+
$this->hashids = new Hashids\Hashids( get_option( 'wcj_sku_hashids_salt', get_option( 'wcj_sku_hashids_salt_default', '' ) ), get_option( 'wcj_sku_hashids_sku_length', 6 ), $alphabet );
|
125 |
}
|
126 |
+
return $this->hashids;
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* set_new_sku_on_save.
|
131 |
+
*
|
132 |
+
* @version 4.7.0
|
133 |
+
* @since 4.7.0
|
134 |
+
*
|
135 |
+
* @param $post_id
|
136 |
+
*/
|
137 |
+
function set_new_sku_on_save( $post_id ) {
|
138 |
+
if ( 'no' === get_option( 'wcj_sku_generate_on_save', 'no' ) ) {
|
139 |
+
return;
|
140 |
+
}
|
141 |
+
$this->maybe_get_sequential_counters();
|
142 |
+
$this->set_sku_with_variable( $post_id, false );
|
143 |
+
$this->maybe_save_sequential_counters();
|
144 |
}
|
145 |
|
146 |
/**
|
211 |
/**
|
212 |
* get_all_variations.
|
213 |
*
|
214 |
+
* @version 4.7.0
|
215 |
* @since 2.4.8
|
216 |
*/
|
217 |
function get_all_variations( $_product ) {
|
221 |
$all_variations[] = $_product->get_available_variation( $variation );
|
222 |
}
|
223 |
}
|
224 |
+
usort( $all_variations, function ( $a, $b ) {
|
225 |
+
return $a['variation_id'] - $b['variation_id'];
|
226 |
+
} );
|
227 |
return $all_variations;
|
228 |
}
|
229 |
|
253 |
/**
|
254 |
* set_sku_with_variable.
|
255 |
*
|
256 |
+
* @version 4.7.0
|
257 |
* @todo `as_variable_with_suffix` - handle cases with more than 26 variations
|
258 |
*/
|
259 |
function set_sku_with_variable( $product_id, $is_preview ) {
|
260 |
+
$product = wc_get_product( $product_id );
|
261 |
+
$sku_object = $this->generate_sku( $product_id, '', $product_id, $product );
|
262 |
+
$this->set_sku( $product_id, $sku_object, $is_preview );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
|
264 |
// Handling variable products
|
265 |
$variation_handling = apply_filters( 'booster_option', 'as_variable', get_option( 'wcj_sku_variations_handling', 'as_variable' ) );
|
267 |
$variations = $this->get_all_variations( $product );
|
268 |
if ( 'as_variable' === $variation_handling ) {
|
269 |
foreach ( $variations as $variation ) {
|
270 |
+
$sku_object = $this->generate_sku( $variation['variation_id'], '', $product_id, wc_get_product( $variation['variation_id'] ) );
|
271 |
+
$this->set_sku( $variation['variation_id'], $sku_object, $is_preview );
|
272 |
}
|
273 |
} elseif ( 'as_variation' === $variation_handling ) {
|
274 |
foreach ( $variations as $variation ) {
|
275 |
+
$sku_object = $this->generate_sku( $variation['variation_id'], '', $product_id, wc_get_product( $variation['variation_id'] ), false );
|
276 |
+
$this->set_sku( $variation['variation_id'], $sku_object, $is_preview );
|
|
|
|
|
|
|
|
|
|
|
|
|
277 |
}
|
278 |
+
} else if ( 'as_variable_with_suffix' === $variation_handling ) {
|
|
|
279 |
$variation_suffixes = 'abcdefghijklmnopqrstuvwxyz';
|
280 |
+
$abc = 0;
|
281 |
foreach ( $variations as $variation ) {
|
282 |
+
$suffix = $variation_suffixes[ $abc ++ ];
|
283 |
+
$sku_object = $this->generate_sku( $variation['variation_id'], $suffix, $product_id, wc_get_product( $variation['variation_id'] ) );
|
284 |
+
$variation_id = $variation['variation_id'];
|
285 |
+
$variations_excluding_current = array_filter( $variations, function ( $v ) use ( $variation_id ) {
|
286 |
+
return $variation_id == $v['variation_id'] ? false : true;
|
287 |
+
} );
|
288 |
+
if ( $this->has_sku_been_used_in_variations( $sku_object['sku'], $variations_excluding_current ) ) {
|
289 |
+
$sku_object = $this->generate_sku( $variation['variation_id'], $suffix . '_' . sprintf( "%u", crc32( $variation['variation_id'] ) ), $product_id, wc_get_product( $variation['variation_id'] ) );
|
290 |
+
}
|
291 |
+
$this->set_sku( $variation['variation_id'], $sku_object, $is_preview );
|
292 |
if ( 26 == $abc ) {
|
293 |
$abc = 0;
|
294 |
}
|
297 |
}
|
298 |
}
|
299 |
|
300 |
+
/**
|
301 |
+
* has_sku_been_used_in_variations.
|
302 |
+
*
|
303 |
+
* @version 4.7.0
|
304 |
+
* @since 4.7.0
|
305 |
+
*
|
306 |
+
* @param $sku
|
307 |
+
* @param $variations
|
308 |
+
*
|
309 |
+
* @return bool
|
310 |
+
*/
|
311 |
+
function has_sku_been_used_in_variations( $sku, $variations ) {
|
312 |
+
$variations_skus = wp_list_pluck( $variations, 'sku' );
|
313 |
+
return in_array( $sku, $variations_skus );
|
314 |
+
}
|
315 |
+
|
316 |
/**
|
317 |
* get_acronym.
|
318 |
*
|
388 |
}
|
389 |
|
390 |
/**
|
391 |
+
* generate_sku.
|
392 |
*
|
393 |
+
* @version 4.7.0
|
394 |
+
* @since 4.7.0
|
395 |
+
*
|
396 |
+
* @param $product_id
|
397 |
+
* @param $variation_suffix
|
398 |
+
* @param $parent_product_id
|
399 |
+
* @param $_product
|
400 |
+
* @param boolean $get_sku_from_parent
|
401 |
+
*
|
402 |
+
* @return mixed|string
|
403 |
*/
|
404 |
+
function generate_sku( $product_id, $variation_suffix, $parent_product_id, $_product, $get_sku_from_parent = true ) {
|
405 |
+
switch ( apply_filters( 'booster_option', 'product_id', get_option( 'wcj_sku_number_generation', 'product_id' ) ) ) {
|
406 |
+
case 'sequential':
|
407 |
+
$sku_number = $this->get_sequential_counter( $parent_product_id );
|
408 |
+
break;
|
409 |
+
case 'hash_crc32':
|
410 |
+
$sku_number = sprintf( "%u", crc32( $get_sku_from_parent ? $parent_product_id : $product_id ) );
|
411 |
+
break;
|
412 |
+
case 'hashids':
|
413 |
+
$sku_number = $this->get_hashids_lib()->encode( $get_sku_from_parent ? $parent_product_id : $product_id );
|
414 |
+
break;
|
415 |
+
default: // 'product_id'
|
416 |
+
$sku_number = $get_sku_from_parent ? $parent_product_id : $product_id;
|
417 |
+
break;
|
418 |
+
}
|
419 |
|
420 |
$format_template = get_option( 'wcj_sku_template',
|
421 |
'{category_prefix}{prefix}{sku_number}{suffix}{category_suffix}{variation_suffix}' );
|
428 |
|
429 |
$parent_product = wc_get_product( $parent_product_id );
|
430 |
|
431 |
+
$old_sku = get_post_meta( $product_id, '_sku', true );
|
432 |
$do_generate_new_sku = ( 'no' === get_option( 'wcj_sku_generate_only_for_empty_sku', 'no' ) || '' === $old_sku );
|
433 |
|
434 |
// {category_prefix} & {category_suffix}
|
482 |
}
|
483 |
|
484 |
$replace_values = array(
|
485 |
+
'{parent_sku}' => empty( $parent_sku = get_post_meta( $parent_product_id, '_sku', true ) ) ? $parent_product->get_sku() : $parent_sku,
|
486 |
'{product_slug}' => $_product->get_slug(),
|
487 |
'{product_slug_acronym}' => $product_slug_acronym,
|
488 |
'{parent_product_slug}' => $parent_product->get_slug(),
|
505 |
$the_sku = $old_sku;
|
506 |
}
|
507 |
|
508 |
+
return array(
|
509 |
+
'sku' => $the_sku,
|
510 |
+
'old_sku' => $old_sku,
|
511 |
+
'product_cat' => $product_cat,
|
512 |
+
'product' => $_product,
|
513 |
+
'do_generate_new_sku' => $do_generate_new_sku
|
514 |
+
);
|
515 |
+
}
|
516 |
+
|
517 |
+
/**
|
518 |
+
* set_sku.
|
519 |
+
*
|
520 |
+
* @version 4.7.0
|
521 |
+
* @todo deprecate `{prefix}` and `{suffix}`
|
522 |
+
* @todo `{tag_prefix}`, `{tag_suffix}`
|
523 |
+
* @todo (maybe) remove some "replaced values" that can be replaced by Booster products shortcodes, e.g.: `[wcj_product_slug]` (and update description in settings)
|
524 |
+
* @todo (maybe) add option to disable shortcodes processing
|
525 |
+
*/
|
526 |
+
function set_sku( $product_id, $sku_object, $is_preview ) {
|
527 |
+
$old_sku = $sku_object['old_sku'];
|
528 |
+
$the_sku = $sku_object['sku'];
|
529 |
+
$product_cat = $sku_object['product_cat'];
|
530 |
+
$product = $sku_object['product'];
|
531 |
+
$do_generate_new_sku = $sku_object['do_generate_new_sku'];
|
532 |
if ( $is_preview ) {
|
533 |
$this->preview_buffer .= '<tr>' .
|
534 |
'<td>' . $this->product_counter++ . '</td>' .
|
535 |
'<td>' . $product_id . '</td>' .
|
536 |
+
'<td>' . $product->get_title() . '</td>' .
|
537 |
'<td>' . $product_cat . '</td>' .
|
538 |
'<td>' . $the_sku . '</td>' .
|
539 |
'<td>' . $old_sku . '</td>' .
|
includes/classes/class-wcj-module-product-by-condition.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product by Condition
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 3.6.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -16,7 +16,7 @@ abstract class WCJ_Module_Product_By_Condition extends WCJ_Module {
|
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
-
* @version
|
20 |
* @since 3.6.0
|
21 |
*/
|
22 |
function __construct( $type = 'module' ) {
|
@@ -61,7 +61,28 @@ abstract class WCJ_Module_Product_By_Condition extends WCJ_Module {
|
|
61 |
add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
|
62 |
add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_column' ), PHP_INT_MAX );
|
63 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
}
|
|
|
|
|
65 |
}
|
66 |
|
67 |
/**
|
@@ -212,12 +233,15 @@ abstract class WCJ_Module_Product_By_Condition extends WCJ_Module {
|
|
212 |
/**
|
213 |
* pre_get_posts.
|
214 |
*
|
215 |
-
* @version 4.
|
216 |
* @since 3.6.0
|
217 |
* @todo [dev] maybe move `if ( ! function_exists( 'is_user_logged_in' ) ) {`
|
218 |
*/
|
219 |
function pre_get_posts( $query ) {
|
220 |
-
if (
|
|
|
|
|
|
|
221 |
return;
|
222 |
}
|
223 |
if ( ! function_exists( 'is_user_logged_in' ) ) {
|
2 |
/**
|
3 |
* Booster for WooCommerce - Module - Product by Condition
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 3.6.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
16 |
/**
|
17 |
* Constructor.
|
18 |
*
|
19 |
+
* @version 4.7.0
|
20 |
* @since 3.6.0
|
21 |
*/
|
22 |
function __construct( $type = 'module' ) {
|
61 |
add_filter( 'manage_edit-product_columns', array( $this, 'add_product_columns' ), PHP_INT_MAX );
|
62 |
add_action( 'manage_product_posts_custom_column', array( $this, 'render_product_column' ), PHP_INT_MAX );
|
63 |
}
|
64 |
+
|
65 |
+
// Disable pre_get_posts query when exporting products
|
66 |
+
add_filter( 'wcj_product_by_condition_pre_get_posts_validation', array( $this, 'disable_pre_get_posts_on_export' ) );
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Disables pre_get_posts query when exporting products.
|
72 |
+
*
|
73 |
+
* @version 4.7.0
|
74 |
+
* @since 4.7.0
|
75 |
+
*
|
76 |
+
*/
|
77 |
+
function disable_pre_get_posts_on_export( $validation ) {
|
78 |
+
if (
|
79 |
+
! isset( $_REQUEST['action'] ) ||
|
80 |
+
'woocommerce_do_ajax_product_export' !== $_REQUEST['action']
|
81 |
+
) {
|
82 |
+
return $validation;
|
83 |
}
|
84 |
+
$validation = false;
|
85 |
+
return $validation;
|
86 |
}
|
87 |
|
88 |
/**
|
233 |
/**
|
234 |
* pre_get_posts.
|
235 |
*
|
236 |
+
* @version 4.7.0
|
237 |
* @since 3.6.0
|
238 |
* @todo [dev] maybe move `if ( ! function_exists( 'is_user_logged_in' ) ) {`
|
239 |
*/
|
240 |
function pre_get_posts( $query ) {
|
241 |
+
if (
|
242 |
+
( is_admin() && ! wp_doing_ajax() ) ||
|
243 |
+
false === apply_filters( 'wcj_product_by_condition_pre_get_posts_validation', true, $this, $query )
|
244 |
+
) {
|
245 |
return;
|
246 |
}
|
247 |
if ( ! function_exists( 'is_user_logged_in' ) ) {
|
includes/classes/class-wcj-module.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce Module
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo [dev] maybe should be `abstract` ?
|
@@ -62,6 +62,157 @@ class WCJ_Module {
|
|
62 |
$this->reset_settings();
|
63 |
}
|
64 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
|
67 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce Module
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.2.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo [dev] maybe should be `abstract` ?
|
62 |
$this->reset_settings();
|
63 |
}
|
64 |
}
|
65 |
+
|
66 |
+
// Handle WPML hooks
|
67 |
+
if ( $this->is_enabled() ) {
|
68 |
+
add_action( 'wcj_before_get_terms', array( $this, 'remove_wpml_functions_before_get_terms' ) );
|
69 |
+
add_action( 'wcj_after_get_terms', array( $this, 'restore_wpml_functions_after_get_terms' ) );
|
70 |
+
add_action( 'wcj_before_get_products', array( $this, 'add_wpml_args_on_get_products' ) );
|
71 |
+
add_action( 'wcj_after_get_products', array( $this, 'restore_wpml_args_on_get_products' ) );
|
72 |
+
add_action( 'admin_init', array( $this, 'remove_wpml_hooks' ) );
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* remove_wpml_hooks.
|
78 |
+
*
|
79 |
+
* @version 4.7.0
|
80 |
+
* @since 4.7.0
|
81 |
+
*/
|
82 |
+
function remove_wpml_hooks() {
|
83 |
+
if ( 'no' === get_option( 'wcj_' . $this->id . '_wpml_get_products_all_lang', 'no' ) ) {
|
84 |
+
return;
|
85 |
+
}
|
86 |
+
|
87 |
+
// Remove a WPML filter that filters products by language
|
88 |
+
wcj_remove_class_filter( 'woocommerce_json_search_found_products', 'WCML_Products', 'filter_wc_searched_products_on_admin' );
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* restore_wpml_args_on_get_products.
|
93 |
+
*
|
94 |
+
* @version 4.7.0
|
95 |
+
* @since 4.7.0
|
96 |
+
*
|
97 |
+
* @param null $module_id
|
98 |
+
*/
|
99 |
+
function restore_wpml_args_on_get_products( $module_id = null ){
|
100 |
+
if ( 'no' === get_option( 'wcj_' . $this->id . '_wpml_get_products_all_lang', 'no' ) ) {
|
101 |
+
return;
|
102 |
+
}
|
103 |
+
remove_action( 'pre_get_posts', array( $this, 'suppress_filters' ) );
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* add_wpml_args_on_get_products.
|
108 |
+
*
|
109 |
+
* @version 4.7.0
|
110 |
+
* @since 4.7.0
|
111 |
+
*
|
112 |
+
* It's necessary to take 2 steps:
|
113 |
+
* 1. Add `do_action('wcj_before_get_products', $this->id )` before get_product, wcj_get_products, or wp_query.
|
114 |
+
* 2. Add a setting using `$this->get_wpml_products_in_all_languages_setting()`
|
115 |
+
*
|
116 |
+
* @param null $module_id
|
117 |
+
*/
|
118 |
+
function add_wpml_args_on_get_products( $module_id = null ) {
|
119 |
+
if ( 'no' === get_option( 'wcj_' . $this->id . '_wpml_get_products_all_lang', 'no' ) ) {
|
120 |
+
return;
|
121 |
+
}
|
122 |
+
add_action( 'pre_get_posts', array( $this, 'suppress_filters' ) );
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* suppress_filters.
|
127 |
+
*
|
128 |
+
* @version 4.7.0
|
129 |
+
* @since 4.7.0
|
130 |
+
*
|
131 |
+
* @param $query
|
132 |
+
*/
|
133 |
+
function suppress_filters( $query ) {
|
134 |
+
$query->query_vars['suppress_filters'] = true;
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* get_wpml_terms_in_all_languages_setting.
|
139 |
+
*
|
140 |
+
* @see WCJ_Module::remove_wpml_functions_before_get_terms().
|
141 |
+
* @see WCJ_Module::restore_wpml_args_on_get_products().
|
142 |
+
*
|
143 |
+
* @version 4.7.0
|
144 |
+
* @since 4.7.0
|
145 |
+
*
|
146 |
+
* @return array
|
147 |
+
*/
|
148 |
+
function get_wpml_terms_in_all_languages_setting() {
|
149 |
+
return array(
|
150 |
+
'title' => __( 'WPML: Get Terms in All Languages', 'woocommerce-jetpack' ),
|
151 |
+
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
152 |
+
'desc_tip' => __( 'Get tags and taxonomies in all languages', 'woocommerce-jetpack' ),
|
153 |
+
'id' => 'wcj_' . $this->id . '_wpml_get_terms_all_lang',
|
154 |
+
'default' => 'no',
|
155 |
+
'type' => 'checkbox',
|
156 |
+
);
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* get_wpml_products_in_all_languages_setting.
|
161 |
+
*
|
162 |
+
* @see WCJ_Module::add_wpml_args_on_get_products().
|
163 |
+
*
|
164 |
+
* @version 4.7.0
|
165 |
+
* @since 4.7.0
|
166 |
+
*
|
167 |
+
* @return array
|
168 |
+
*/
|
169 |
+
function get_wpml_products_in_all_languages_setting() {
|
170 |
+
return array(
|
171 |
+
'title' => __( 'WPML: Get Products in All Languages', 'woocommerce-jetpack' ),
|
172 |
+
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
173 |
+
'desc_tip' => __( 'Get products in all languages', 'woocommerce-jetpack' ),
|
174 |
+
'id' => 'wcj_' . $this->id . '_wpml_get_products_all_lang',
|
175 |
+
'default' => 'no',
|
176 |
+
'type' => 'checkbox',
|
177 |
+
);
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* remove_wpml_functions_before_get_terms.
|
182 |
+
*
|
183 |
+
* It's necessary to take 2 steps:
|
184 |
+
* 1. Add `do_action('wcj_before_get_terms', $this->id )` before get_terms.
|
185 |
+
* 2. Add a setting using `$this->get_wpml_terms_in_all_languages_setting()`
|
186 |
+
*
|
187 |
+
* @see "settings/wcj-settings-global-discount.php"
|
188 |
+
*
|
189 |
+
* @version 4.7.0
|
190 |
+
* @since 4.6.0
|
191 |
+
*/
|
192 |
+
function remove_wpml_functions_before_get_terms( $module_id = null ) {
|
193 |
+
if ( 'no' === get_option( 'wcj_' . $this->id . '_wpml_get_terms_all_lang', 'no' ) ) {
|
194 |
+
return;
|
195 |
+
}
|
196 |
+
wcj_remove_wpml_terms_filters();
|
197 |
+
}
|
198 |
+
|
199 |
+
/**
|
200 |
+
* restore_wpml_functions_after_get_terms
|
201 |
+
*
|
202 |
+
* It's necessary to take 2 steps:
|
203 |
+
* 1. Add `do_action('wcj_after_get_terms', $this->id )` after get_terms.
|
204 |
+
* 2. Add a setting using `$this->get_wpml_terms_in_all_languages_setting()`
|
205 |
+
*
|
206 |
+
* @see "settings/wcj-settings-global-discount.php"
|
207 |
+
*
|
208 |
+
* @version 4.7.0
|
209 |
+
* @since 4.6.0
|
210 |
+
*/
|
211 |
+
function restore_wpml_functions_after_get_terms( $module_id = null ) {
|
212 |
+
if ( 'no' === get_option( 'wcj_' . $this->id . '_wpml_get_terms_all_lang', 'no' ) ) {
|
213 |
+
return;
|
214 |
+
}
|
215 |
+
wcj_add_wpml_terms_filters();
|
216 |
}
|
217 |
|
218 |
/**
|
includes/classes/class-wcj-pdf-invoice.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce PDF Invoice
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -12,6 +12,8 @@ if ( ! class_exists( 'WCJ_PDF_Invoice' ) ) :
|
|
12 |
|
13 |
class WCJ_PDF_Invoice extends WCJ_Invoice {
|
14 |
|
|
|
|
|
15 |
/**
|
16 |
* Constructor.
|
17 |
*/
|
@@ -176,19 +178,23 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
|
|
176 |
*
|
177 |
* Gets invoice content HTML.
|
178 |
*
|
179 |
-
* @version
|
180 |
* @since 3.5.0
|
181 |
* @todo [dev] pass other params (billing_country, payment_method) as global (same as user_id) instead of $_GET
|
182 |
* @todo [fix] `force_balance_tags()` - there are some bugs and performance issues, see http://wordpress.stackexchange.com/questions/89121/why-doesnt-default-wordpress-page-view-use-force-balance-tags
|
183 |
*/
|
184 |
function get_html( $order_id, $pdf ) {
|
|
|
|
|
|
|
|
|
185 |
$_GET['order_id'] = $order_id;
|
186 |
-
$the_order
|
187 |
if ( ! isset( $_GET['billing_country'] ) ) {
|
188 |
$_GET['billing_country'] = ( WCJ_IS_WC_VERSION_BELOW_3 ? $the_order->billing_country : $the_order->get_billing_country() );
|
189 |
}
|
190 |
if ( ! isset( $_GET['payment_method'] ) ) {
|
191 |
-
$_GET['payment_method']
|
192 |
}
|
193 |
global $wcj_pdf_invoice_data;
|
194 |
if ( ! isset( $wcj_pdf_invoice_data['user_id'] ) ) {
|
@@ -197,7 +203,9 @@ class WCJ_PDF_Invoice extends WCJ_Invoice {
|
|
197 |
$html = do_shortcode( get_option( 'wcj_invoicing_' . $this->invoice_type . '_template',
|
198 |
WCJ()->modules['pdf_invoicing_templates']->get_default_template( $this->invoice_type ) ) );
|
199 |
$html = $this->maybe_replace_tcpdf_method_params( $html, $pdf );
|
200 |
-
|
|
|
|
|
201 |
}
|
202 |
|
203 |
/**
|
2 |
/**
|
3 |
* Booster for WooCommerce PDF Invoice
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
12 |
|
13 |
class WCJ_PDF_Invoice extends WCJ_Invoice {
|
14 |
|
15 |
+
private $original_internal_coding = '';
|
16 |
+
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*/
|
178 |
*
|
179 |
* Gets invoice content HTML.
|
180 |
*
|
181 |
+
* @version 4.7.0
|
182 |
* @since 3.5.0
|
183 |
* @todo [dev] pass other params (billing_country, payment_method) as global (same as user_id) instead of $_GET
|
184 |
* @todo [fix] `force_balance_tags()` - there are some bugs and performance issues, see http://wordpress.stackexchange.com/questions/89121/why-doesnt-default-wordpress-page-view-use-force-balance-tags
|
185 |
*/
|
186 |
function get_html( $order_id, $pdf ) {
|
187 |
+
$this->original_internal_coding = mb_internal_encoding();
|
188 |
+
if ( ! empty( $internal_encoding = get_option( 'wcj_general_advanced_mb_internal_encoding', '' ) ) ) {
|
189 |
+
mb_internal_encoding( $internal_encoding );
|
190 |
+
}
|
191 |
$_GET['order_id'] = $order_id;
|
192 |
+
$the_order = wc_get_order( $order_id );
|
193 |
if ( ! isset( $_GET['billing_country'] ) ) {
|
194 |
$_GET['billing_country'] = ( WCJ_IS_WC_VERSION_BELOW_3 ? $the_order->billing_country : $the_order->get_billing_country() );
|
195 |
}
|
196 |
if ( ! isset( $_GET['payment_method'] ) ) {
|
197 |
+
$_GET['payment_method'] = wcj_order_get_payment_method( $the_order );
|
198 |
}
|
199 |
global $wcj_pdf_invoice_data;
|
200 |
if ( ! isset( $wcj_pdf_invoice_data['user_id'] ) ) {
|
203 |
$html = do_shortcode( get_option( 'wcj_invoicing_' . $this->invoice_type . '_template',
|
204 |
WCJ()->modules['pdf_invoicing_templates']->get_default_template( $this->invoice_type ) ) );
|
205 |
$html = $this->maybe_replace_tcpdf_method_params( $html, $pdf );
|
206 |
+
$html = force_balance_tags( $html );
|
207 |
+
mb_internal_encoding( $this->original_internal_coding );
|
208 |
+
return $html;
|
209 |
}
|
210 |
|
211 |
/**
|
includes/functions/wcj-functions-date-time.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Date and Time
|
4 |
*
|
5 |
-
* @version
|
6 |
* @since 2.9.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -234,3 +234,31 @@ if ( ! function_exists( 'wcj_date_format_php_to_js' ) ) {
|
|
234 |
return $jqueryui_format;
|
235 |
}
|
236 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - Date and Time
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.9.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
234 |
return $jqueryui_format;
|
235 |
}
|
236 |
}
|
237 |
+
|
238 |
+
if ( ! function_exists( 'wcj_timezone' ) ) {
|
239 |
+
/**
|
240 |
+
* wcj_timezone.
|
241 |
+
*
|
242 |
+
* @version 4.7.0
|
243 |
+
* @since 4.7.0
|
244 |
+
*
|
245 |
+
* @return DateTimeZone
|
246 |
+
*/
|
247 |
+
function wcj_timezone() {
|
248 |
+
global $wp_version;
|
249 |
+
if ( version_compare( $wp_version, '5.3.0', '>=' ) ) {
|
250 |
+
return wp_timezone();
|
251 |
+
}
|
252 |
+
$timezone = get_option( 'timezone_string' );
|
253 |
+
if ( ! $timezone ) {
|
254 |
+
$offset = (float) get_option( 'gmt_offset' );
|
255 |
+
$hours = (int) $offset;
|
256 |
+
$minutes = ( $offset - $hours );
|
257 |
+
$sign = ( $offset < 0 ) ? '-' : '+';
|
258 |
+
$abs_hour = abs( $hours );
|
259 |
+
$abs_mins = abs( $minutes * 60 );
|
260 |
+
$timezone = sprintf( '%s%02d:%02d', $sign, $abs_hour, $abs_mins );
|
261 |
+
}
|
262 |
+
return new DateTimeZone( $timezone );
|
263 |
+
}
|
264 |
+
}
|
includes/functions/wcj-functions-eu-vat.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - EU VAT
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.9.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -53,16 +53,22 @@ if ( ! function_exists( 'wcj_validate_vat_soap' ) ) {
|
|
53 |
/**
|
54 |
* wcj_validate_vat_soap.
|
55 |
*
|
56 |
-
* @version
|
57 |
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
58 |
*/
|
59 |
function wcj_validate_vat_soap( $country_code, $vat_number ) {
|
60 |
try {
|
61 |
if ( class_exists( 'SoapClient' ) ) {
|
62 |
-
$
|
63 |
-
'http
|
64 |
-
|
|
|
65 |
);
|
|
|
|
|
|
|
|
|
|
|
66 |
$result = $client->checkVat( array(
|
67 |
'countryCode' => $country_code,
|
68 |
'vatNumber' => $vat_number,
|
@@ -71,7 +77,7 @@ if ( ! function_exists( 'wcj_validate_vat_soap' ) ) {
|
|
71 |
} else {
|
72 |
return null;
|
73 |
}
|
74 |
-
} catch( Exception $exception ) {
|
75 |
return null;
|
76 |
}
|
77 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - EU VAT
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.9.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
53 |
/**
|
54 |
* wcj_validate_vat_soap.
|
55 |
*
|
56 |
+
* @version 4.7.0
|
57 |
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
58 |
*/
|
59 |
function wcj_validate_vat_soap( $country_code, $vat_number ) {
|
60 |
try {
|
61 |
if ( class_exists( 'SoapClient' ) ) {
|
62 |
+
$opts = array(
|
63 |
+
'http' => array(
|
64 |
+
'user_agent' => 'PHPSoapClient'
|
65 |
+
)
|
66 |
);
|
67 |
+
$client = new SoapClient( 'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl', array(
|
68 |
+
'exceptions' => true,
|
69 |
+
'stream_context' => stream_context_create( $opts ),
|
70 |
+
'cache_wsdl' => WSDL_CACHE_NONE
|
71 |
+
) );
|
72 |
$result = $client->checkVat( array(
|
73 |
'countryCode' => $country_code,
|
74 |
'vatNumber' => $vat_number,
|
77 |
} else {
|
78 |
return null;
|
79 |
}
|
80 |
+
} catch ( Exception $exception ) {
|
81 |
return null;
|
82 |
}
|
83 |
}
|
includes/functions/wcj-functions-general.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - General
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @author Algoritmika Ltd.
|
7 |
* @todo add `wcj_add_actions()` and `wcj_add_filters()`
|
8 |
*/
|
@@ -901,4 +901,63 @@ if ( ! function_exists( 'wcj_remove_class_filter' ) ) {
|
|
901 |
function wcj_remove_class_action( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
|
902 |
wcj_remove_class_filter( $tag, $class_name, $method_name, $priority );
|
903 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
904 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Functions - General
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
* @todo add `wcj_add_actions()` and `wcj_add_filters()`
|
8 |
*/
|
901 |
function wcj_remove_class_action( $tag, $class_name = '', $method_name = '', $priority = 10 ) {
|
902 |
wcj_remove_class_filter( $tag, $class_name, $method_name, $priority );
|
903 |
}
|
904 |
+
}
|
905 |
+
|
906 |
+
if ( ! function_exists( 'wcj_get_data_attributes_html' ) ) {
|
907 |
+
/**
|
908 |
+
* Get custom data attributes.
|
909 |
+
*
|
910 |
+
* Passing an associative array like ['param_a'="value_a"] will return a multiple data parameters like data-param_a="value_a".
|
911 |
+
*
|
912 |
+
* @version 4.7.0
|
913 |
+
* @since 4.7.0
|
914 |
+
*
|
915 |
+
* @param array $data Field data.
|
916 |
+
*
|
917 |
+
* @return string
|
918 |
+
*/
|
919 |
+
function wcj_get_data_attributes_html( $data ) {
|
920 |
+
$custom_attributes = array();
|
921 |
+
if ( ! empty( $data ) && is_array( $data ) ) {
|
922 |
+
foreach ( $data as $attribute => $attribute_value ) {
|
923 |
+
$custom_attributes[] = 'data-' . esc_attr( $attribute ) . '="' . esc_attr( $attribute_value ) . '"';
|
924 |
+
}
|
925 |
+
}
|
926 |
+
return implode( ' ', $custom_attributes );
|
927 |
+
}
|
928 |
+
}
|
929 |
+
|
930 |
+
if ( ! function_exists( 'wcj_remove_wpml_terms_filters' ) ) {
|
931 |
+
/**
|
932 |
+
* wcj_remove_wpml_terms_filters.
|
933 |
+
*
|
934 |
+
* @see https://wpml.org/forums/topic/get-all-terms-of-all-languages-outside-loop/
|
935 |
+
*
|
936 |
+
* @version 4.7.0
|
937 |
+
* @since 4.7.0
|
938 |
+
*/
|
939 |
+
function wcj_remove_wpml_terms_filters() {
|
940 |
+
global $sitepress;
|
941 |
+
remove_filter( 'get_terms_args', array( $sitepress, 'get_terms_args_filter' ) );
|
942 |
+
remove_filter( 'get_term', array( $sitepress, 'get_term_adjust_id' ) );
|
943 |
+
remove_filter( 'terms_clauses', array( $sitepress, 'terms_clauses' ) );
|
944 |
+
}
|
945 |
+
}
|
946 |
+
|
947 |
+
if ( ! function_exists( 'wcj_add_wpml_terms_filters' ) ) {
|
948 |
+
/**
|
949 |
+
* wcj_add_wpml_terms_filters.
|
950 |
+
*
|
951 |
+
* @see http://support.themeblvd.com/forums/topic/wpml-sitepress-php-error-on-backend-due-to-layout-builder/
|
952 |
+
*
|
953 |
+
* @version 4.7.0
|
954 |
+
* @since 4.7.0
|
955 |
+
*/
|
956 |
+
function wcj_add_wpml_terms_filters() {
|
957 |
+
// restore WPML term filters
|
958 |
+
global $sitepress;
|
959 |
+
add_filter( 'terms_clauses', array( $sitepress, 'terms_clauses' ), 10, 3 );
|
960 |
+
add_filter( 'get_term', array( $sitepress, 'get_term_adjust_id' ) );
|
961 |
+
add_filter( 'get_terms_args', array( $sitepress, 'get_terms_args_filter' ), 10, 2 );
|
962 |
+
}
|
963 |
}
|
includes/gateways/class-wc-gateway-wcj-custom.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Custom Payment Gateway
|
4 |
*
|
5 |
-
* @version
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
@@ -337,7 +337,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
337 |
/**
|
338 |
* init.
|
339 |
*
|
340 |
-
* @version
|
341 |
*/
|
342 |
function init( $id_count ) {
|
343 |
$this->id = ( 1 === $id_count ) ? 'jetpack_custom_gateway' : 'jetpack_custom_gateway_' . $id_count;
|
@@ -351,7 +351,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
351 |
$this->init_settings();
|
352 |
// Define user set variables
|
353 |
$this->title = $this->get_option( 'title' );
|
354 |
-
$this->description = do_shortcode( str_replace( '[wcj_input_field', '[wcj_input_field attach_to="' . $this->id . '"',
|
355 |
$this->get_option( 'description' ) ) );
|
356 |
$this->instructions = $this->get_option( 'instructions', '' );
|
357 |
$this->instructions_in_email = $this->get_option( 'instructions_in_email', '' );
|
2 |
/**
|
3 |
* Booster for WooCommerce - Custom Payment Gateway
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @author Algoritmika Ltd.
|
7 |
*/
|
8 |
|
337 |
/**
|
338 |
* init.
|
339 |
*
|
340 |
+
* @version 4.7.0
|
341 |
*/
|
342 |
function init( $id_count ) {
|
343 |
$this->id = ( 1 === $id_count ) ? 'jetpack_custom_gateway' : 'jetpack_custom_gateway_' . $id_count;
|
351 |
$this->init_settings();
|
352 |
// Define user set variables
|
353 |
$this->title = $this->get_option( 'title' );
|
354 |
+
$this->description = do_shortcode( str_replace( '[wcj_input_field', '[wcj_input_field name_array="' . $this->id . '" attach_to="' . $this->id . '"',
|
355 |
$this->get_option( 'description' ) ) );
|
356 |
$this->instructions = $this->get_option( 'instructions', '' );
|
357 |
$this->instructions_in_email = $this->get_option( 'instructions_in_email', '' );
|
includes/lib/hashids/src/Hashids.php
ADDED
@@ -0,0 +1,420 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of Hashids.
|
5 |
+
*
|
6 |
+
* (c) Ivan Akimov <ivan@barreleye.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
namespace Hashids;
|
13 |
+
|
14 |
+
use Hashids\Math\Bc;
|
15 |
+
use Hashids\Math\Gmp;
|
16 |
+
use RuntimeException;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* This is the hashids class.
|
20 |
+
*
|
21 |
+
* @author Ivan Akimov <ivan@barreleye.com>
|
22 |
+
* @author Vincent Klaiber <hello@vinkla.com>
|
23 |
+
* @author Johnson Page <jwpage@gmail.com>
|
24 |
+
*/
|
25 |
+
class Hashids implements HashidsInterface
|
26 |
+
{
|
27 |
+
/**
|
28 |
+
* The seps divider.
|
29 |
+
*
|
30 |
+
* @var float
|
31 |
+
*/
|
32 |
+
const SEP_DIV = 3.5;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* The guard divider.
|
36 |
+
*
|
37 |
+
* @var float
|
38 |
+
*/
|
39 |
+
const GUARD_DIV = 12;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* The alphabet string.
|
43 |
+
*
|
44 |
+
* @var string
|
45 |
+
*/
|
46 |
+
protected $alphabet;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Shuffled alphabets, referenced by alphabet and salt.
|
50 |
+
*
|
51 |
+
* @var array
|
52 |
+
*/
|
53 |
+
protected $shuffledAlphabets;
|
54 |
+
|
55 |
+
/**
|
56 |
+
* The seps string.
|
57 |
+
*
|
58 |
+
* @var string
|
59 |
+
*/
|
60 |
+
protected $seps = 'cfhistuCFHISTU';
|
61 |
+
|
62 |
+
/**
|
63 |
+
* The guards string.
|
64 |
+
*
|
65 |
+
* @var string
|
66 |
+
*/
|
67 |
+
protected $guards;
|
68 |
+
|
69 |
+
/**
|
70 |
+
* The minimum hash length.
|
71 |
+
*
|
72 |
+
* @var int
|
73 |
+
*/
|
74 |
+
protected $minHashLength;
|
75 |
+
|
76 |
+
/**
|
77 |
+
* The salt string.
|
78 |
+
*
|
79 |
+
* @var string
|
80 |
+
*/
|
81 |
+
protected $salt;
|
82 |
+
|
83 |
+
/**
|
84 |
+
* The math class.
|
85 |
+
*
|
86 |
+
* @var \Hashids\Math\MathInterface
|
87 |
+
*/
|
88 |
+
protected $math;
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Create a new hashids instance.
|
92 |
+
*
|
93 |
+
* @param string $salt
|
94 |
+
* @param int $minHashLength
|
95 |
+
* @param string $alphabet
|
96 |
+
*
|
97 |
+
* @throws \Hashids\HashidsException
|
98 |
+
*
|
99 |
+
* @return void
|
100 |
+
*/
|
101 |
+
public function __construct($salt = '', $minHashLength = 0, $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890')
|
102 |
+
{
|
103 |
+
$this->salt = $salt;
|
104 |
+
$this->minHashLength = $minHashLength;
|
105 |
+
$this->alphabet = implode('', array_unique(str_split($alphabet)));
|
106 |
+
$this->math = $this->getMathExtension();
|
107 |
+
|
108 |
+
if (strlen($this->alphabet) < 16) {
|
109 |
+
throw new HashidsException('Alphabet must contain at least 16 unique characters.');
|
110 |
+
}
|
111 |
+
|
112 |
+
if (strpos($this->alphabet, ' ') !== false) {
|
113 |
+
throw new HashidsException('Alphabet can\'t contain spaces.');
|
114 |
+
}
|
115 |
+
|
116 |
+
$alphabetArray = str_split($this->alphabet);
|
117 |
+
$sepsArray = str_split($this->seps);
|
118 |
+
|
119 |
+
$this->seps = implode('', array_intersect($sepsArray, $alphabetArray));
|
120 |
+
$this->alphabet = implode('', array_diff($alphabetArray, $sepsArray));
|
121 |
+
$this->seps = $this->shuffle($this->seps, $this->salt);
|
122 |
+
|
123 |
+
if (!$this->seps || (strlen($this->alphabet) / strlen($this->seps)) > self::SEP_DIV) {
|
124 |
+
$sepsLength = (int) ceil(strlen($this->alphabet) / self::SEP_DIV);
|
125 |
+
|
126 |
+
if ($sepsLength > strlen($this->seps)) {
|
127 |
+
$diff = $sepsLength - strlen($this->seps);
|
128 |
+
$this->seps .= substr($this->alphabet, 0, $diff);
|
129 |
+
$this->alphabet = substr($this->alphabet, $diff);
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
$this->alphabet = $this->shuffle($this->alphabet, $this->salt);
|
134 |
+
$guardCount = (int) ceil(strlen($this->alphabet) / self::GUARD_DIV);
|
135 |
+
|
136 |
+
if (strlen($this->alphabet) < 3) {
|
137 |
+
$this->guards = substr($this->seps, 0, $guardCount);
|
138 |
+
$this->seps = substr($this->seps, $guardCount);
|
139 |
+
} else {
|
140 |
+
$this->guards = substr($this->alphabet, 0, $guardCount);
|
141 |
+
$this->alphabet = substr($this->alphabet, $guardCount);
|
142 |
+
}
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Encode parameters to generate a hash.
|
147 |
+
*
|
148 |
+
* @param mixed $numbers
|
149 |
+
*
|
150 |
+
* @return string
|
151 |
+
*/
|
152 |
+
public function encode(...$numbers)
|
153 |
+
{
|
154 |
+
$ret = '';
|
155 |
+
|
156 |
+
if (1 === count($numbers) && is_array($numbers[0])) {
|
157 |
+
$numbers = $numbers[0];
|
158 |
+
}
|
159 |
+
|
160 |
+
if (!$numbers) {
|
161 |
+
return $ret;
|
162 |
+
}
|
163 |
+
|
164 |
+
foreach ($numbers as $number) {
|
165 |
+
$isNumber = ctype_digit((string) $number);
|
166 |
+
|
167 |
+
if (!$isNumber) {
|
168 |
+
return $ret;
|
169 |
+
}
|
170 |
+
}
|
171 |
+
|
172 |
+
$alphabet = $this->alphabet;
|
173 |
+
$numbersSize = count($numbers);
|
174 |
+
$numbersHashInt = 0;
|
175 |
+
|
176 |
+
foreach ($numbers as $i => $number) {
|
177 |
+
$numbersHashInt += $this->math->intval($this->math->mod($number, ($i + 100)));
|
178 |
+
}
|
179 |
+
|
180 |
+
$lottery = $ret = $alphabet[$numbersHashInt % strlen($alphabet)];
|
181 |
+
foreach ($numbers as $i => $number) {
|
182 |
+
$alphabet = $this->shuffle($alphabet, substr($lottery.$this->salt.$alphabet, 0, strlen($alphabet)));
|
183 |
+
$ret .= $last = $this->hash($number, $alphabet);
|
184 |
+
|
185 |
+
if ($i + 1 < $numbersSize) {
|
186 |
+
$number %= (ord($last) + $i);
|
187 |
+
$sepsIndex = $this->math->intval($this->math->mod($number, strlen($this->seps)));
|
188 |
+
$ret .= $this->seps[$sepsIndex];
|
189 |
+
}
|
190 |
+
}
|
191 |
+
|
192 |
+
if (strlen($ret) < $this->minHashLength) {
|
193 |
+
$guardIndex = ($numbersHashInt + ord($ret[0])) % strlen($this->guards);
|
194 |
+
|
195 |
+
$guard = $this->guards[$guardIndex];
|
196 |
+
$ret = $guard.$ret;
|
197 |
+
|
198 |
+
if (strlen($ret) < $this->minHashLength) {
|
199 |
+
$guardIndex = ($numbersHashInt + ord($ret[2])) % strlen($this->guards);
|
200 |
+
$guard = $this->guards[$guardIndex];
|
201 |
+
|
202 |
+
$ret .= $guard;
|
203 |
+
}
|
204 |
+
}
|
205 |
+
|
206 |
+
$halfLength = (int) (strlen($alphabet) / 2);
|
207 |
+
while (strlen($ret) < $this->minHashLength) {
|
208 |
+
$alphabet = $this->shuffle($alphabet, $alphabet);
|
209 |
+
$ret = substr($alphabet, $halfLength).$ret.substr($alphabet, 0, $halfLength);
|
210 |
+
|
211 |
+
$excess = strlen($ret) - $this->minHashLength;
|
212 |
+
if ($excess > 0) {
|
213 |
+
$ret = substr($ret, $excess / 2, $this->minHashLength);
|
214 |
+
}
|
215 |
+
}
|
216 |
+
|
217 |
+
return $ret;
|
218 |
+
}
|
219 |
+
|
220 |
+
/**
|
221 |
+
* Decode a hash to the original parameter values.
|
222 |
+
*
|
223 |
+
* @param string $hash
|
224 |
+
*
|
225 |
+
* @return array
|
226 |
+
*/
|
227 |
+
public function decode($hash)
|
228 |
+
{
|
229 |
+
$ret = [];
|
230 |
+
|
231 |
+
if (!is_string($hash) || !($hash = trim($hash))) {
|
232 |
+
return $ret;
|
233 |
+
}
|
234 |
+
|
235 |
+
$alphabet = $this->alphabet;
|
236 |
+
|
237 |
+
$ret = [];
|
238 |
+
|
239 |
+
$hashBreakdown = str_replace(str_split($this->guards), ' ', $hash);
|
240 |
+
$hashArray = explode(' ', $hashBreakdown);
|
241 |
+
|
242 |
+
$i = count($hashArray) == 3 || count($hashArray) == 2 ? 1 : 0;
|
243 |
+
|
244 |
+
$hashBreakdown = $hashArray[$i];
|
245 |
+
|
246 |
+
if (isset($hashBreakdown[0])) {
|
247 |
+
$lottery = $hashBreakdown[0];
|
248 |
+
$hashBreakdown = substr($hashBreakdown, 1);
|
249 |
+
|
250 |
+
$hashBreakdown = str_replace(str_split($this->seps), ' ', $hashBreakdown);
|
251 |
+
$hashArray = explode(' ', $hashBreakdown);
|
252 |
+
|
253 |
+
foreach ($hashArray as $subHash) {
|
254 |
+
$alphabet = $this->shuffle($alphabet, substr($lottery.$this->salt.$alphabet, 0, strlen($alphabet)));
|
255 |
+
$result = $this->unhash($subHash, $alphabet);
|
256 |
+
if ($this->math->greaterThan($result, PHP_INT_MAX)) {
|
257 |
+
$ret[] = $this->math->strval($result);
|
258 |
+
} else {
|
259 |
+
$ret[] = $this->math->intval($result);
|
260 |
+
}
|
261 |
+
}
|
262 |
+
|
263 |
+
if ($this->encode($ret) != $hash) {
|
264 |
+
$ret = [];
|
265 |
+
}
|
266 |
+
}
|
267 |
+
|
268 |
+
return $ret;
|
269 |
+
}
|
270 |
+
|
271 |
+
/**
|
272 |
+
* Encode hexadecimal values and generate a hash string.
|
273 |
+
*
|
274 |
+
* @param string $str
|
275 |
+
*
|
276 |
+
* @return string
|
277 |
+
*/
|
278 |
+
public function encodeHex($str)
|
279 |
+
{
|
280 |
+
if (!ctype_xdigit((string) $str)) {
|
281 |
+
return '';
|
282 |
+
}
|
283 |
+
|
284 |
+
$numbers = trim(chunk_split($str, 12, ' '));
|
285 |
+
$numbers = explode(' ', $numbers);
|
286 |
+
|
287 |
+
foreach ($numbers as $i => $number) {
|
288 |
+
$numbers[$i] = hexdec('1'.$number);
|
289 |
+
}
|
290 |
+
|
291 |
+
return call_user_func_array([$this, 'encode'], $numbers);
|
292 |
+
}
|
293 |
+
|
294 |
+
/**
|
295 |
+
* Decode a hexadecimal hash.
|
296 |
+
*
|
297 |
+
* @param string $hash
|
298 |
+
*
|
299 |
+
* @return string
|
300 |
+
*/
|
301 |
+
public function decodeHex($hash)
|
302 |
+
{
|
303 |
+
$ret = '';
|
304 |
+
$numbers = $this->decode($hash);
|
305 |
+
|
306 |
+
foreach ($numbers as $i => $number) {
|
307 |
+
$ret .= substr(dechex($number), 1);
|
308 |
+
}
|
309 |
+
|
310 |
+
return $ret;
|
311 |
+
}
|
312 |
+
|
313 |
+
/**
|
314 |
+
* Shuffle alphabet by given salt.
|
315 |
+
*
|
316 |
+
* @param string $alphabet
|
317 |
+
* @param string $salt
|
318 |
+
*
|
319 |
+
* @return string
|
320 |
+
*/
|
321 |
+
protected function shuffle($alphabet, $salt)
|
322 |
+
{
|
323 |
+
$key = $alphabet.' '.$salt;
|
324 |
+
|
325 |
+
if (isset($this->shuffledAlphabets[$key])) {
|
326 |
+
return $this->shuffledAlphabets[$key];
|
327 |
+
}
|
328 |
+
|
329 |
+
$saltLength = strlen($salt);
|
330 |
+
|
331 |
+
if (!$saltLength) {
|
332 |
+
return $alphabet;
|
333 |
+
}
|
334 |
+
|
335 |
+
for ($i = strlen($alphabet) - 1, $v = 0, $p = 0; $i > 0; $i--, $v++) {
|
336 |
+
$v %= $saltLength;
|
337 |
+
$p += $int = ord($salt[$v]);
|
338 |
+
$j = ($int + $v + $p) % $i;
|
339 |
+
|
340 |
+
$temp = $alphabet[$j];
|
341 |
+
$alphabet[$j] = $alphabet[$i];
|
342 |
+
$alphabet[$i] = $temp;
|
343 |
+
}
|
344 |
+
|
345 |
+
$this->shuffledAlphabets[$key] = $alphabet;
|
346 |
+
|
347 |
+
return $alphabet;
|
348 |
+
}
|
349 |
+
|
350 |
+
/**
|
351 |
+
* Hash given input value.
|
352 |
+
*
|
353 |
+
* @param string $input
|
354 |
+
* @param string $alphabet
|
355 |
+
*
|
356 |
+
* @return string
|
357 |
+
*/
|
358 |
+
protected function hash($input, $alphabet)
|
359 |
+
{
|
360 |
+
$hash = '';
|
361 |
+
$alphabetLength = strlen($alphabet);
|
362 |
+
|
363 |
+
do {
|
364 |
+
$hash = $alphabet[$this->math->intval($this->math->mod($input, $alphabetLength))].$hash;
|
365 |
+
|
366 |
+
$input = $this->math->divide($input, $alphabetLength);
|
367 |
+
} while ($this->math->greaterThan($input, 0));
|
368 |
+
|
369 |
+
return $hash;
|
370 |
+
}
|
371 |
+
|
372 |
+
/**
|
373 |
+
* Unhash given input value.
|
374 |
+
*
|
375 |
+
* @param string $input
|
376 |
+
* @param string $alphabet
|
377 |
+
*
|
378 |
+
* @return int
|
379 |
+
*/
|
380 |
+
protected function unhash($input, $alphabet)
|
381 |
+
{
|
382 |
+
$number = 0;
|
383 |
+
$inputLength = strlen($input);
|
384 |
+
|
385 |
+
if ($inputLength && $alphabet) {
|
386 |
+
$alphabetLength = strlen($alphabet);
|
387 |
+
$inputChars = str_split($input);
|
388 |
+
|
389 |
+
foreach ($inputChars as $char) {
|
390 |
+
$position = strpos($alphabet, $char);
|
391 |
+
$number = $this->math->multiply($number, $alphabetLength);
|
392 |
+
$number = $this->math->add($number, $position);
|
393 |
+
}
|
394 |
+
}
|
395 |
+
|
396 |
+
return $number;
|
397 |
+
}
|
398 |
+
|
399 |
+
/**
|
400 |
+
* Get BC Math or GMP extension.
|
401 |
+
*
|
402 |
+
* @codeCoverageIgnore
|
403 |
+
*
|
404 |
+
* @throws \RuntimeException
|
405 |
+
*
|
406 |
+
* @return \Hashids\Math\Bc|\Hashids\Math\Gmp
|
407 |
+
*/
|
408 |
+
protected function getMathExtension()
|
409 |
+
{
|
410 |
+
if (extension_loaded('gmp')) {
|
411 |
+
return new Gmp();
|
412 |
+
}
|
413 |
+
|
414 |
+
if (extension_loaded('bcmath')) {
|
415 |
+
return new Bc();
|
416 |
+
}
|
417 |
+
|
418 |
+
throw new RuntimeException('Missing BC Math or GMP extension.');
|
419 |
+
}
|
420 |
+
}
|
includes/lib/hashids/src/HashidsException.php
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of Hashids.
|
5 |
+
*
|
6 |
+
* (c) Ivan Akimov <ivan@barreleye.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
namespace Hashids;
|
13 |
+
|
14 |
+
use InvalidArgumentException;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* This is the hashids exception class.
|
18 |
+
*
|
19 |
+
* @author Vincent Klaiber <hello@vinkla.com>
|
20 |
+
*/
|
21 |
+
class HashidsException extends InvalidArgumentException
|
22 |
+
{
|
23 |
+
//
|
24 |
+
}
|
includes/lib/hashids/src/HashidsInterface.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of Hashids.
|
5 |
+
*
|
6 |
+
* (c) Ivan Akimov <ivan@barreleye.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
namespace Hashids;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* This is the hashids interface.
|
16 |
+
*
|
17 |
+
* @author Ivan Akimov <ivan@barreleye.com>
|
18 |
+
* @author Vincent Klaiber <hello@vinkla.com>
|
19 |
+
*/
|
20 |
+
interface HashidsInterface
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* Encode parameters to generate a hash.
|
24 |
+
*
|
25 |
+
* @param mixed $numbers
|
26 |
+
*
|
27 |
+
* @return string
|
28 |
+
*/
|
29 |
+
public function encode(...$numbers);
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Decode a hash to the original parameter values.
|
33 |
+
*
|
34 |
+
* @param string $hash
|
35 |
+
*
|
36 |
+
* @return array
|
37 |
+
*/
|
38 |
+
public function decode($hash);
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Encode hexadecimal values and generate a hash string.
|
42 |
+
*
|
43 |
+
* @param string $str
|
44 |
+
*
|
45 |
+
* @return string
|
46 |
+
*/
|
47 |
+
public function encodeHex($str);
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Decode a hexadecimal hash.
|
51 |
+
*
|
52 |
+
* @param string $hash
|
53 |
+
*
|
54 |
+
* @return string
|
55 |
+
*/
|
56 |
+
public function decodeHex($hash);
|
57 |
+
}
|
includes/lib/hashids/src/Math/Bc.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of Hashids.
|
5 |
+
*
|
6 |
+
* (c) Ivan Akimov <ivan@barreleye.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
namespace Hashids\Math;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* This is the Bc math class.
|
16 |
+
*
|
17 |
+
* @author Vincent Klaiber <hello@vinkla.com>
|
18 |
+
* @author Jakub Kramarz <lenwe@lenwe.net>
|
19 |
+
* @author Johnson Page <jwpage@gmail.com>
|
20 |
+
*/
|
21 |
+
class Bc implements MathInterface
|
22 |
+
{
|
23 |
+
/**
|
24 |
+
* Add two arbitrary-length integers.
|
25 |
+
*
|
26 |
+
* @param string $a
|
27 |
+
* @param string $b
|
28 |
+
*
|
29 |
+
* @return string
|
30 |
+
*/
|
31 |
+
public function add($a, $b)
|
32 |
+
{
|
33 |
+
return bcadd($a, $b, 0);
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Multiply two arbitrary-length integers.
|
38 |
+
*
|
39 |
+
* @param string $a
|
40 |
+
* @param string $b
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
public function multiply($a, $b)
|
45 |
+
{
|
46 |
+
return bcmul($a, $b, 0);
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Divide two arbitrary-length integers.
|
51 |
+
*
|
52 |
+
* @param string $a
|
53 |
+
* @param string $b
|
54 |
+
*
|
55 |
+
* @return string
|
56 |
+
*/
|
57 |
+
public function divide($a, $b)
|
58 |
+
{
|
59 |
+
return bcdiv($a, $b, 0);
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Compute arbitrary-length integer modulo.
|
64 |
+
*
|
65 |
+
* @param string $n
|
66 |
+
* @param string $d
|
67 |
+
*
|
68 |
+
* @return string
|
69 |
+
*/
|
70 |
+
public function mod($n, $d)
|
71 |
+
{
|
72 |
+
return bcmod($n, $d);
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Compares two arbitrary-length integers.
|
77 |
+
*
|
78 |
+
* @param string $a
|
79 |
+
* @param string $b
|
80 |
+
*
|
81 |
+
* @return bool
|
82 |
+
*/
|
83 |
+
public function greaterThan($a, $b)
|
84 |
+
{
|
85 |
+
return bccomp($a, $b, 0) > 0;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Converts arbitrary-length integer to PHP integer.
|
90 |
+
*
|
91 |
+
* @param string $a
|
92 |
+
*
|
93 |
+
* @return int
|
94 |
+
*/
|
95 |
+
public function intval($a)
|
96 |
+
{
|
97 |
+
return intval($a);
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Converts arbitrary-length integer to PHP string.
|
102 |
+
*
|
103 |
+
* @param string $a
|
104 |
+
*
|
105 |
+
* @return string
|
106 |
+
*/
|
107 |
+
public function strval($a)
|
108 |
+
{
|
109 |
+
return $a;
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Converts PHP integer to arbitrary-length integer.
|
114 |
+
*
|
115 |
+
* @param int $a
|
116 |
+
*
|
117 |
+
* @return string
|
118 |
+
*/
|
119 |
+
public function get($a)
|
120 |
+
{
|
121 |
+
return $a;
|
122 |
+
}
|
123 |
+
}
|
includes/lib/hashids/src/Math/Gmp.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of Hashids.
|
5 |
+
*
|
6 |
+
* (c) Ivan Akimov <ivan@barreleye.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
namespace Hashids\Math;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* This is the Gmp math class.
|
16 |
+
*
|
17 |
+
* @author Vincent Klaiber <hello@vinkla.com>
|
18 |
+
* @author Jakub Kramarz <lenwe@lenwe.net>
|
19 |
+
* @author Johnson Page <jwpage@gmail.com>
|
20 |
+
*/
|
21 |
+
class Gmp implements MathInterface
|
22 |
+
{
|
23 |
+
/**
|
24 |
+
* Add two arbitrary-length integers.
|
25 |
+
*
|
26 |
+
* @param string $a
|
27 |
+
* @param string $b
|
28 |
+
*
|
29 |
+
* @return string
|
30 |
+
*/
|
31 |
+
public function add($a, $b)
|
32 |
+
{
|
33 |
+
return gmp_add($a, $b);
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Multiply two arbitrary-length integers.
|
38 |
+
*
|
39 |
+
* @param string $a
|
40 |
+
* @param string $b
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
public function multiply($a, $b)
|
45 |
+
{
|
46 |
+
return gmp_mul($a, $b);
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Divide two arbitrary-length integers.
|
51 |
+
*
|
52 |
+
* @param string $a
|
53 |
+
* @param string $b
|
54 |
+
*
|
55 |
+
* @return string
|
56 |
+
*/
|
57 |
+
public function divide($a, $b)
|
58 |
+
{
|
59 |
+
return gmp_div_q($a, $b);
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Compute arbitrary-length integer modulo.
|
64 |
+
*
|
65 |
+
* @param string $n
|
66 |
+
* @param string $d
|
67 |
+
*
|
68 |
+
* @return string
|
69 |
+
*/
|
70 |
+
public function mod($n, $d)
|
71 |
+
{
|
72 |
+
return gmp_mod($n, $d);
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Compares two arbitrary-length integers.
|
77 |
+
*
|
78 |
+
* @param string $a
|
79 |
+
* @param string $b
|
80 |
+
*
|
81 |
+
* @return bool
|
82 |
+
*/
|
83 |
+
public function greaterThan($a, $b)
|
84 |
+
{
|
85 |
+
return gmp_cmp($a, $b) > 0;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Converts arbitrary-length integer to PHP integer.
|
90 |
+
*
|
91 |
+
* @param string $a
|
92 |
+
*
|
93 |
+
* @return int
|
94 |
+
*/
|
95 |
+
public function intval($a)
|
96 |
+
{
|
97 |
+
return gmp_intval($a);
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Converts arbitrary-length integer to PHP string.
|
102 |
+
*
|
103 |
+
* @param string $a
|
104 |
+
*
|
105 |
+
* @return string
|
106 |
+
*/
|
107 |
+
public function strval($a)
|
108 |
+
{
|
109 |
+
return gmp_strval($a);
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Converts PHP integer to arbitrary-length integer.
|
114 |
+
*
|
115 |
+
* @param int $a
|
116 |
+
*
|
117 |
+
* @return string
|
118 |
+
*/
|
119 |
+
public function get($a)
|
120 |
+
{
|
121 |
+
return gmp_init($a);
|
122 |
+
}
|
123 |
+
}
|
includes/lib/hashids/src/Math/MathInterface.php
ADDED
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* This file is part of Hashids.
|
5 |
+
*
|
6 |
+
* (c) Ivan Akimov <ivan@barreleye.com>
|
7 |
+
*
|
8 |
+
* For the full copyright and license information, please view the LICENSE
|
9 |
+
* file that was distributed with this source code.
|
10 |
+
*/
|
11 |
+
|
12 |
+
namespace Hashids\Math;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Interface for different math extensions.
|
16 |
+
*
|
17 |
+
* @author Vincent Klaiber <hello@vinkla.com>
|
18 |
+
* @author Jakub Kramarz <lenwe@lenwe.net>
|
19 |
+
* @author Johnson Page <jwpage@gmail.com>
|
20 |
+
*/
|
21 |
+
interface MathInterface
|
22 |
+
{
|
23 |
+
/**
|
24 |
+
* Add two arbitrary-length integers.
|
25 |
+
*
|
26 |
+
* @param string $a
|
27 |
+
* @param string $b
|
28 |
+
*
|
29 |
+
* @return string
|
30 |
+
*/
|
31 |
+
public function add($a, $b);
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Multiply two arbitrary-length integers.
|
35 |
+
*
|
36 |
+
* @param string $a
|
37 |
+
* @param string $b
|
38 |
+
*
|
39 |
+
* @return string
|
40 |
+
*/
|
41 |
+
public function multiply($a, $b);
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Divide two arbitrary-length integers.
|
45 |
+
*
|
46 |
+
* @param string $a
|
47 |
+
* @param string $b
|
48 |
+
*
|
49 |
+
* @return string
|
50 |
+
*/
|
51 |
+
public function divide($a, $b);
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Compute arbitrary-length integer modulo.
|
55 |
+
*
|
56 |
+
* @param string $n
|
57 |
+
* @param string $d
|
58 |
+
*
|
59 |
+
* @return string
|
60 |
+
*/
|
61 |
+
public function mod($n, $d);
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Compares two arbitrary-length integers.
|
65 |
+
*
|
66 |
+
* @param string $a
|
67 |
+
* @param string $b
|
68 |
+
*
|
69 |
+
* @return bool
|
70 |
+
*/
|
71 |
+
public function greaterThan($a, $b);
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Converts arbitrary-length integer to PHP integer.
|
75 |
+
*
|
76 |
+
* @param string $a
|
77 |
+
*
|
78 |
+
* @return int
|
79 |
+
*/
|
80 |
+
public function intval($a);
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Converts arbitrary-length integer to PHP string.
|
84 |
+
*
|
85 |
+
* @param string $a
|
86 |
+
*
|
87 |
+
* @return string
|
88 |
+
*/
|
89 |
+
public function strval($a);
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Converts PHP integer to arbitrary-length integer.
|
93 |
+
*
|
94 |
+
* @param int $a
|
95 |
+
*
|
96 |
+
* @return string
|
97 |
+
*/
|
98 |
+
public function get($a);
|
99 |
+
}
|
includes/settings/meta-box/wcj-settings-meta-box-product-by-date.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings Meta Box - Product Availability by Date
|
4 |
*
|
5 |
-
* @version
|
6 |
* @since 2.9.1
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo (maybe) Direct Date: all products
|
@@ -30,8 +30,9 @@ $settings = array(
|
|
30 |
'default' => '',
|
31 |
'type' => 'date',
|
32 |
'tooltip' => __( 'Fill this if you want to set one date from which the product will be available.', 'woocommerce-jetpack' ) . ' ' .
|
33 |
-
__( 'If this field is filled in, monthly settings fields are ignored.', 'woocommerce-jetpack' )
|
34 |
-
|
|
|
35 |
'dateformat="' . wcj_date_format_php_to_js( $format ) . '"' : '' ),
|
36 |
),
|
37 |
);
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings Meta Box - Product Availability by Date
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.9.1
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo (maybe) Direct Date: all products
|
30 |
'default' => '',
|
31 |
'type' => 'date',
|
32 |
'tooltip' => __( 'Fill this if you want to set one date from which the product will be available.', 'woocommerce-jetpack' ) . ' ' .
|
33 |
+
__( 'If this field is filled in, monthly settings fields are ignored.', 'woocommerce-jetpack' ) . '<br /><br />' .
|
34 |
+
__( 'If you are not using english, please set some numeric format like m/d/Y on "Direct Date Admin Input Date Format" option', 'woocommerce-jetpack' ),
|
35 |
+
'custom_attributes' => ( '' != ( $format = get_option( 'wcj_product_by_date_direct_date_format', 'm/d/Y' ) ) ?
|
36 |
'dateformat="' . wcj_date_format_php_to_js( $format ) . '"' : '' ),
|
37 |
),
|
38 |
);
|
includes/settings/wcj-settings-global-discount.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Global Discount
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -10,9 +10,14 @@
|
|
10 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
|
12 |
$is_multiselect_products = ( 'yes' === get_option( 'wcj_list_for_products', 'yes' ) );
|
13 |
-
|
14 |
-
|
15 |
-
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
$settings = array(
|
18 |
array(
|
@@ -191,6 +196,8 @@ $settings = array_merge( $settings, array(
|
|
191 |
'default' => 0,
|
192 |
'type' => 'number',
|
193 |
),
|
|
|
|
|
194 |
array(
|
195 |
'type' => 'sectionend',
|
196 |
'id' => 'wcj_global_discount_advanced_options',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Global Discount
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
10 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
|
12 |
$is_multiselect_products = ( 'yes' === get_option( 'wcj_list_for_products', 'yes' ) );
|
13 |
+
|
14 |
+
do_action( 'wcj_before_get_terms', $this->id );
|
15 |
+
do_action( 'wcj_before_get_products', $this->id );
|
16 |
+
$products = ( $is_multiselect_products ? wcj_get_products() : false );
|
17 |
+
do_action( 'wcj_after_get_products', $this->id );
|
18 |
+
$product_cats = wcj_get_terms( 'product_cat' );
|
19 |
+
$product_tags = wcj_get_terms( 'product_tag' );
|
20 |
+
do_action( 'wcj_after_get_terms', $this->id );
|
21 |
|
22 |
$settings = array(
|
23 |
array(
|
196 |
'default' => 0,
|
197 |
'type' => 'number',
|
198 |
),
|
199 |
+
$this->get_wpml_terms_in_all_languages_setting(),
|
200 |
+
$this->get_wpml_products_in_all_languages_setting(),
|
201 |
array(
|
202 |
'type' => 'sectionend',
|
203 |
'id' => 'wcj_global_discount_advanced_options',
|
includes/settings/wcj-settings-pdf-invoicing-advanced.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - PDF Invoicing - Advanced
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 3.3.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo (maybe) create "Tools (Options)" submodule
|
@@ -93,6 +93,13 @@ return array(
|
|
93 |
'default' => 'no',
|
94 |
'type' => 'checkbox',
|
95 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
array(
|
97 |
'type' => 'sectionend',
|
98 |
'id' => 'wcj_pdf_invoicing_advanced_options',
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - PDF Invoicing - Advanced
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 3.3.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo (maybe) create "Tools (Options)" submodule
|
93 |
'default' => 'no',
|
94 |
'type' => 'checkbox',
|
95 |
),
|
96 |
+
array(
|
97 |
+
'title' => __( 'Internal Encoding', 'woocommerce-jetpack' ),
|
98 |
+
'desc_tip' => __( 'Sets internal character encoding.', 'woocommerce-jetpack' ).'<br />'.__( 'e.g: UTF-8, iso-8859-1', 'woocommerce-jetpack' ),
|
99 |
+
'id' => 'wcj_general_advanced_mb_internal_encoding',
|
100 |
+
'default' => '',
|
101 |
+
'type' => 'text',
|
102 |
+
),
|
103 |
array(
|
104 |
'type' => 'sectionend',
|
105 |
'id' => 'wcj_pdf_invoicing_advanced_options',
|
includes/settings/wcj-settings-price-by-user-role.php
CHANGED
@@ -2,13 +2,12 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Price based on User Role
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
9 |
|
10 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
-
|
12 |
$settings = array(
|
13 |
array(
|
14 |
'title' => __( 'Options', 'woocommerce-jetpack' ),
|
@@ -114,20 +113,11 @@ $settings = array(
|
|
114 |
'default' => 'no',
|
115 |
'type' => 'checkbox',
|
116 |
),
|
117 |
-
|
118 |
-
'title' => __( 'WPML: Get Terms in All Languages', 'woocommerce-jetpack' ),
|
119 |
-
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
120 |
-
'desc_tip' => __( 'Get tags and taxonomies in all languages', 'woocommerce-jetpack' ),
|
121 |
-
'id' => 'wcj_price_by_user_role_wpml_get_terms_all_lang',
|
122 |
-
'default' => 'no',
|
123 |
-
'type' => 'checkbox',
|
124 |
-
),
|
125 |
array(
|
126 |
'type' => 'sectionend',
|
127 |
'id' => 'wcj_price_by_user_role_options_adv',
|
128 |
),
|
129 |
-
|
130 |
-
|
131 |
array(
|
132 |
'title' => __( 'Roles & Multipliers', 'woocommerce-jetpack' ),
|
133 |
'type' => 'title',
|
@@ -181,7 +171,7 @@ $taxonomies = array(
|
|
181 |
),
|
182 |
);
|
183 |
|
184 |
-
do_action('wcj_before_get_terms');
|
185 |
foreach ( $taxonomies as $taxonomy ) {
|
186 |
$product_taxonomies_options = array();
|
187 |
$product_taxonomies = get_terms( $taxonomy['id'], 'orderby=name&hide_empty=0' );
|
@@ -238,6 +228,6 @@ foreach ( $taxonomies as $taxonomy ) {
|
|
238 |
),
|
239 |
) );
|
240 |
}
|
241 |
-
do_action('wcj_after_get_terms');
|
242 |
|
243 |
return $settings;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Price based on User Role
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
9 |
|
10 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
|
|
11 |
$settings = array(
|
12 |
array(
|
13 |
'title' => __( 'Options', 'woocommerce-jetpack' ),
|
113 |
'default' => 'no',
|
114 |
'type' => 'checkbox',
|
115 |
),
|
116 |
+
$this->get_wpml_terms_in_all_languages_setting(),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
array(
|
118 |
'type' => 'sectionend',
|
119 |
'id' => 'wcj_price_by_user_role_options_adv',
|
120 |
),
|
|
|
|
|
121 |
array(
|
122 |
'title' => __( 'Roles & Multipliers', 'woocommerce-jetpack' ),
|
123 |
'type' => 'title',
|
171 |
),
|
172 |
);
|
173 |
|
174 |
+
do_action( 'wcj_before_get_terms', $this->id );
|
175 |
foreach ( $taxonomies as $taxonomy ) {
|
176 |
$product_taxonomies_options = array();
|
177 |
$product_taxonomies = get_terms( $taxonomy['id'], 'orderby=name&hide_empty=0' );
|
228 |
),
|
229 |
) );
|
230 |
}
|
231 |
+
do_action('wcj_after_get_terms', $this->id );
|
232 |
|
233 |
return $settings;
|
includes/settings/wcj-settings-product-addons.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Product Addons
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo (maybe) add `woocommerce_payment_complete` to `$qty_triggers` (also maybe add this trigger to "PDF Invoicing" module)
|
@@ -223,7 +223,16 @@ $settings = array_merge( $settings, array(
|
|
223 |
'type' => 'number',
|
224 |
),
|
225 |
array(
|
226 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
'id' => 'wcj_product_addons_apply_price_filters',
|
228 |
'default' => 'by_module',
|
229 |
'type' => 'select',
|
@@ -246,23 +255,31 @@ $settings = array_merge( $settings, array(
|
|
246 |
),
|
247 |
),
|
248 |
array(
|
249 |
-
'title' => __( '
|
250 |
'desc_tip' => __( 'Priority for all module\'s price filters. Set to zero to use default priority.' ),
|
251 |
'id' => 'wcj_product_addons_advanced_price_hooks_priority',
|
252 |
'default' => 0,
|
253 |
'type' => 'number',
|
254 |
),
|
255 |
array(
|
256 |
-
'title' => __( '
|
257 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
258 |
'desc_tip' => __( 'Ensures that data outputted only once. Enable this if you see data outputted on frontend twice. Disable if you see no data outputted.', 'woocommerce-jetpack' ),
|
259 |
'id' => 'wcj_product_addons_check_for_outputted_data',
|
260 |
'default' => 'yes',
|
261 |
'type' => 'checkbox',
|
262 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
array(
|
264 |
'type' => 'sectionend',
|
265 |
-
'id' => '
|
266 |
),
|
267 |
array(
|
268 |
'title' => __( 'Frontend Templates', 'woocommerce-jetpack' ),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Product Addons
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo (maybe) add `woocommerce_payment_complete` to `$qty_triggers` (also maybe add this trigger to "PDF Invoicing" module)
|
223 |
'type' => 'number',
|
224 |
),
|
225 |
array(
|
226 |
+
'type' => 'sectionend',
|
227 |
+
'id' => 'wcj_product_addons_options',
|
228 |
+
),
|
229 |
+
array(
|
230 |
+
'title' => __( 'Advanced', 'woocommerce-jetpack' ),
|
231 |
+
'type' => 'title',
|
232 |
+
'id' => 'wcj_product_addons_advanced_options',
|
233 |
+
),
|
234 |
+
array(
|
235 |
+
'title' => __( 'Apply Price Filter', 'woocommerce-jetpack' ),
|
236 |
'id' => 'wcj_product_addons_apply_price_filters',
|
237 |
'default' => 'by_module',
|
238 |
'type' => 'select',
|
255 |
),
|
256 |
),
|
257 |
array(
|
258 |
+
'title' => __( 'Price Filters Priority', 'woocommerce-jetpack' ),
|
259 |
'desc_tip' => __( 'Priority for all module\'s price filters. Set to zero to use default priority.' ),
|
260 |
'id' => 'wcj_product_addons_advanced_price_hooks_priority',
|
261 |
'default' => 0,
|
262 |
'type' => 'number',
|
263 |
),
|
264 |
array(
|
265 |
+
'title' => __( 'Check for Outputted Data', 'woocommerce-jetpack' ),
|
266 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
267 |
'desc_tip' => __( 'Ensures that data outputted only once. Enable this if you see data outputted on frontend twice. Disable if you see no data outputted.', 'woocommerce-jetpack' ),
|
268 |
'id' => 'wcj_product_addons_check_for_outputted_data',
|
269 |
'default' => 'yes',
|
270 |
'type' => 'checkbox',
|
271 |
),
|
272 |
+
array(
|
273 |
+
'title' => __( 'Export and Import "Enable by Variation"', 'woocommerce-jetpack' ),
|
274 |
+
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
275 |
+
'desc_tip' => __( 'Exports/Imports "Enable by Variation" meta when using WooCommerce product Exporter/Importer', 'woocommerce-jetpack' ),
|
276 |
+
'id' => 'wcj_product_addons_enable_by_variation_export_import',
|
277 |
+
'default' => 'no',
|
278 |
+
'type' => 'checkbox',
|
279 |
+
),
|
280 |
array(
|
281 |
'type' => 'sectionend',
|
282 |
+
'id' => 'wcj_product_addons_advanced_options',
|
283 |
),
|
284 |
array(
|
285 |
'title' => __( 'Frontend Templates', 'woocommerce-jetpack' ),
|
includes/settings/wcj-settings-product-by-date.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Product Availability by Date
|
4 |
*
|
5 |
-
* @version
|
6 |
* @since 2.9.1
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -59,9 +59,9 @@ $settings = array_merge( $settings, array(
|
|
59 |
array(
|
60 |
'title' => __( 'Direct Date Admin Input Date Format', 'woocommerce-jetpack' ),
|
61 |
'desc' => sprintf( __( 'E.g. %s.', 'woocommerce-jetpack' ), '<code>Y-m-d</code>' ),
|
62 |
-
'desc_tip' => __( 'Leave blank to use the default date format.', 'woocommerce-jetpack' ),
|
63 |
'id' => 'wcj_product_by_date_direct_date_format',
|
64 |
-
'default' => '',
|
65 |
'type' => 'text',
|
66 |
),
|
67 |
array(
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Product Availability by Date
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.9.1
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
59 |
array(
|
60 |
'title' => __( 'Direct Date Admin Input Date Format', 'woocommerce-jetpack' ),
|
61 |
'desc' => sprintf( __( 'E.g. %s.', 'woocommerce-jetpack' ), '<code>Y-m-d</code>' ),
|
62 |
+
'desc_tip' => __( 'Leave blank to use the default date format.', 'woocommerce-jetpack' ) . '<br /><br />' . __( 'If you are not using english, please set some numeric format like m/d/Y', 'woocommerce-jetpack' ),
|
63 |
'id' => 'wcj_product_by_date_direct_date_format',
|
64 |
+
'default' => 'm/d/Y',
|
65 |
'type' => 'text',
|
66 |
),
|
67 |
array(
|
includes/settings/wcj-settings-products-per-page.php
CHANGED
@@ -71,6 +71,16 @@ return array(
|
|
71 |
'type' => 'custom_textarea',
|
72 |
'css' => 'width:100%',
|
73 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
array(
|
75 |
'title' => __( 'Saving Method', 'woocommerce-jetpack' ),
|
76 |
'id' => 'wcj_products_per_page_saving_method',
|
71 |
'type' => 'custom_textarea',
|
72 |
'css' => 'width:100%',
|
73 |
),
|
74 |
+
array(
|
75 |
+
'title' => __( 'Form Method', 'woocommerce-jetpack' ),
|
76 |
+
'id' => 'wcj_products_per_page_form_method',
|
77 |
+
'default' => 'post',
|
78 |
+
'type' => 'select',
|
79 |
+
'options' => array(
|
80 |
+
'post' => __( 'POST', 'woocommerce-jetpack' ),
|
81 |
+
'get' => __( 'GET', 'woocommerce-jetpack' ),
|
82 |
+
)
|
83 |
+
),
|
84 |
array(
|
85 |
'title' => __( 'Saving Method', 'woocommerce-jetpack' ),
|
86 |
'id' => 'wcj_products_per_page_saving_method',
|
includes/settings/wcj-settings-sku.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - SKU
|
4 |
*
|
5 |
-
* @version
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo deprecate `wcj_sku_prefix` and `wcj_sku_suffix` (as user can now add it directly to "Template")
|
@@ -27,9 +27,10 @@ $settings = array(
|
|
27 |
'product_id' => __( 'From product ID', 'woocommerce-jetpack' ),
|
28 |
'sequential' => __( 'Sequential', 'woocommerce-jetpack' ),
|
29 |
'hash_crc32' => __( 'Pseudorandom - Hash (max 10 digits)', 'woocommerce-jetpack' ),
|
|
|
30 |
),
|
31 |
'desc_tip' => __( 'Number generation method.', 'woocommerce-jetpack' ) . ' ' .
|
32 |
-
|
33 |
'desc' => apply_filters( 'booster_message', '', 'desc' ),
|
34 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
35 |
),
|
@@ -143,6 +144,39 @@ $settings = array(
|
|
143 |
'type' => 'sectionend',
|
144 |
'id' => 'wcj_sku_format_options',
|
145 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
);
|
147 |
$settings = array_merge( $settings, array(
|
148 |
array(
|
@@ -214,11 +248,19 @@ $settings = array_merge( $settings, array(
|
|
214 |
array(
|
215 |
'title' => __( 'Automatically Generate SKU for New Products', 'woocommerce-jetpack' ),
|
216 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
217 |
-
'desc_tip' => __( 'Alternatively you can use Autogenerate SKUs tool.', 'woocommerce-jetpack' ),
|
218 |
'id' => 'wcj_sku_new_products_generate_enabled',
|
219 |
'default' => 'yes',
|
220 |
'type' => 'checkbox',
|
221 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
array(
|
223 |
'title' => __( 'Generate SKU for New Products Only on First Publish', 'woocommerce-jetpack' ),
|
224 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - SKU
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
* @todo deprecate `wcj_sku_prefix` and `wcj_sku_suffix` (as user can now add it directly to "Template")
|
27 |
'product_id' => __( 'From product ID', 'woocommerce-jetpack' ),
|
28 |
'sequential' => __( 'Sequential', 'woocommerce-jetpack' ),
|
29 |
'hash_crc32' => __( 'Pseudorandom - Hash (max 10 digits)', 'woocommerce-jetpack' ),
|
30 |
+
'hashids' => __( 'Hashids - Advanced options', 'woocommerce-jetpack' ),
|
31 |
),
|
32 |
'desc_tip' => __( 'Number generation method.', 'woocommerce-jetpack' ) . ' ' .
|
33 |
+
__( 'Possible values: from product ID, sequential, pseudorandom or Hashids.', 'woocommerce-jetpack' ) . '<br />' . __( 'If using Hashids please take a look at Hashids options below.', 'woocommerce-jetpack' ),
|
34 |
'desc' => apply_filters( 'booster_message', '', 'desc' ),
|
35 |
'custom_attributes' => apply_filters( 'booster_message', '', 'disabled' ),
|
36 |
),
|
144 |
'type' => 'sectionend',
|
145 |
'id' => 'wcj_sku_format_options',
|
146 |
),
|
147 |
+
array(
|
148 |
+
'title' => __( 'Hashids options', 'woocommerce-jetpack' ),
|
149 |
+
'type' => 'title',
|
150 |
+
'id' => 'wcj_sku_hashids_options',
|
151 |
+
),
|
152 |
+
array(
|
153 |
+
'title' => __( 'Salt', 'woocommerce-jetpack' ),
|
154 |
+
'desc_tip' => __( 'A random string that will make your SKUs really unique.', 'woocommerce-jetpack' ),
|
155 |
+
'id' => 'wcj_sku_hashids_salt',
|
156 |
+
'default' => get_option( 'wcj_sku_hashids_salt_default', '' ),
|
157 |
+
'type' => 'text',
|
158 |
+
),
|
159 |
+
array(
|
160 |
+
'title' => __( 'Numbers of characters in SKU', 'woocommerce-jetpack' ),
|
161 |
+
'id' => 'wcj_sku_hashids_sku_length',
|
162 |
+
'default' => 6,
|
163 |
+
'type' => 'number',
|
164 |
+
),
|
165 |
+
array(
|
166 |
+
'title' => __( 'SKU Format', 'woocommerce-jetpack' ),
|
167 |
+
'type' => 'select',
|
168 |
+
'options' => array(
|
169 |
+
'only_numbers' => __( 'Only Numbers, e.g.: 836237', 'woocommerce-jetpack' ),
|
170 |
+
'only_letters' => __( 'Only Letters, e.g.: HFuAbQ', 'woocommerce-jetpack' ),
|
171 |
+
'letters_and_numbers' => __( 'Letters and Numbers, e.g.: 8a3M19 ', 'woocommerce-jetpack' ),
|
172 |
+
),
|
173 |
+
'default' => 'letters_and_numbers',
|
174 |
+
'id' => 'wcj_sku_hashids_sku_format',
|
175 |
+
),
|
176 |
+
array(
|
177 |
+
'type' => 'sectionend',
|
178 |
+
'id' => 'wcj_sku_hashids_options',
|
179 |
+
)
|
180 |
);
|
181 |
$settings = array_merge( $settings, array(
|
182 |
array(
|
248 |
array(
|
249 |
'title' => __( 'Automatically Generate SKU for New Products', 'woocommerce-jetpack' ),
|
250 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
251 |
+
'desc_tip' => __( 'Alternatively you can use Autogenerate SKUs tool.', 'woocommerce-jetpack' ) . '<br />' . __( 'If you want to generate SKU for variations, please try "Automatically Generate SKU for Variations on Product Save" option.', 'woocommerce-jetpack' ),
|
252 |
'id' => 'wcj_sku_new_products_generate_enabled',
|
253 |
'default' => 'yes',
|
254 |
'type' => 'checkbox',
|
255 |
),
|
256 |
+
array(
|
257 |
+
'title' => __( 'Automatically Generate SKU for Variations on Product Save', 'woocommerce-jetpack' ),
|
258 |
+
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
259 |
+
'desc_tip' => __( 'Once enabled it\'s recommended to be used with "Generate SKUs Only for Products with Empty SKU" option or else the SKUs will be replaced on product save.', 'woocommerce-jetpack' ),
|
260 |
+
'id' => 'wcj_sku_generate_on_save',
|
261 |
+
'default' => 'no',
|
262 |
+
'type' => 'checkbox',
|
263 |
+
),
|
264 |
array(
|
265 |
'title' => __( 'Generate SKU for New Products Only on First Publish', 'woocommerce-jetpack' ),
|
266 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
includes/settings/wcj-settings-wholesale-price.php
CHANGED
@@ -2,14 +2,17 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Wholesale Price
|
4 |
*
|
5 |
-
* @version 4.
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
9 |
|
10 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
|
|
|
|
|
12 |
$product_cats = wcj_get_terms( 'product_cat' );
|
|
|
13 |
$settings = array(
|
14 |
array(
|
15 |
'title' => __( 'Options', 'woocommerce-jetpack' ),
|
@@ -123,6 +126,8 @@ $settings = array(
|
|
123 |
'default' => 0,
|
124 |
'type' => 'number',
|
125 |
),
|
|
|
|
|
126 |
array(
|
127 |
'type' => 'sectionend',
|
128 |
'id' => 'wcj_wholesale_price_general_options',
|
@@ -229,4 +234,6 @@ $settings = array_merge( $settings, array(
|
|
229 |
'id' => 'wcj_wholesale_price_by_user_role_options',
|
230 |
),
|
231 |
) );
|
|
|
|
|
232 |
return $settings;
|
2 |
/**
|
3 |
* Booster for WooCommerce - Settings - Wholesale Price
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.8.0
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
9 |
|
10 |
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
11 |
|
12 |
+
do_action( 'wcj_before_get_products', $this->id );
|
13 |
+
do_action( 'wcj_before_get_terms', $this->id );
|
14 |
$product_cats = wcj_get_terms( 'product_cat' );
|
15 |
+
|
16 |
$settings = array(
|
17 |
array(
|
18 |
'title' => __( 'Options', 'woocommerce-jetpack' ),
|
126 |
'default' => 0,
|
127 |
'type' => 'number',
|
128 |
),
|
129 |
+
$this->get_wpml_terms_in_all_languages_setting(),
|
130 |
+
$this->get_wpml_products_in_all_languages_setting(),
|
131 |
array(
|
132 |
'type' => 'sectionend',
|
133 |
'id' => 'wcj_wholesale_price_general_options',
|
234 |
'id' => 'wcj_wholesale_price_by_user_role_options',
|
235 |
),
|
236 |
) );
|
237 |
+
do_action( 'wcj_after_get_products', $this->id );
|
238 |
+
do_action( 'wcj_after_get_terms', $this->id );
|
239 |
return $settings;
|
includes/shortcodes/class-wcj-shortcodes-input-field.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Input Field
|
4 |
*
|
5 |
-
* @version
|
6 |
* @since 2.5.2
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
@@ -43,27 +43,49 @@ class WCJ_Input_Field_Shortcodes extends WCJ_Shortcodes {
|
|
43 |
/**
|
44 |
* wcj_input_field.
|
45 |
*
|
46 |
-
* @version
|
47 |
* @since 2.5.2
|
48 |
*/
|
49 |
function wcj_input_field( $atts, $content ) {
|
50 |
if ( '' == $atts['name'] ) {
|
51 |
return __( 'Attribute "name" is required!', 'woocommerce-jetpack' );
|
52 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
$the_field = '';
|
54 |
-
$the_field .= '<input' .
|
|
|
55 |
' type="' . $atts['type'] . '"' .
|
56 |
' class="' . $atts['class'] . '"' .
|
57 |
' value="' . $atts['value'] . '"' .
|
58 |
' placeholder="' . $atts['placeholder'] . '"' .
|
59 |
-
|
60 |
' id="wcj_input_field_' . $atts['name'] . '">';
|
61 |
if ( '' != $atts['attach_to'] ) {
|
62 |
$the_field .= '<input type="hidden" name="for_wcj_input_field_' . $atts['name'] . '" value="' . $atts['attach_to'] . '">';
|
63 |
}
|
|
|
|
|
64 |
if ( '' != $atts['label'] ) {
|
65 |
-
$
|
|
|
|
|
|
|
|
|
66 |
}
|
|
|
67 |
if ( 'yes' == $atts['required'] ) {
|
68 |
$the_field .= '<input type="hidden" name="wcj_input_field_' . $atts['name'] . '_required" value="yes">';
|
69 |
}
|
2 |
/**
|
3 |
* Booster for WooCommerce - Shortcodes - Input Field
|
4 |
*
|
5 |
+
* @version 4.7.0
|
6 |
* @since 2.5.2
|
7 |
* @author Algoritmika Ltd.
|
8 |
*/
|
43 |
/**
|
44 |
* wcj_input_field.
|
45 |
*
|
46 |
+
* @version 4.7.0
|
47 |
* @since 2.5.2
|
48 |
*/
|
49 |
function wcj_input_field( $atts, $content ) {
|
50 |
if ( '' == $atts['name'] ) {
|
51 |
return __( 'Attribute "name" is required!', 'woocommerce-jetpack' );
|
52 |
}
|
53 |
+
|
54 |
+
// Custom data attributes
|
55 |
+
$data_attributes = null;
|
56 |
+
if ( isset( $atts['data_attributes'] ) && ! empty( $atts['data_attributes'] ) ) {
|
57 |
+
$data_attributes = wp_parse_args( $atts['data_attributes'] );
|
58 |
+
}
|
59 |
+
$data_attributes_html = wcj_get_data_attributes_html( $data_attributes );
|
60 |
+
|
61 |
+
// Name
|
62 |
+
$name_html = ' name="wcj_input_field_' . $atts['name'] . '"';
|
63 |
+
if ( isset( $atts['name_array'] ) && ! empty( $atts['name_array'] ) ) {
|
64 |
+
$name_html = ' name="wcj_input_field_' . $atts['name_array'] . '[' . $atts['name'] . '][value]"';
|
65 |
+
}
|
66 |
+
|
67 |
$the_field = '';
|
68 |
+
$the_field .= '<input' .' '.
|
69 |
+
$data_attributes_html .
|
70 |
' type="' . $atts['type'] . '"' .
|
71 |
' class="' . $atts['class'] . '"' .
|
72 |
' value="' . $atts['value'] . '"' .
|
73 |
' placeholder="' . $atts['placeholder'] . '"' .
|
74 |
+
$name_html.
|
75 |
' id="wcj_input_field_' . $atts['name'] . '">';
|
76 |
if ( '' != $atts['attach_to'] ) {
|
77 |
$the_field .= '<input type="hidden" name="for_wcj_input_field_' . $atts['name'] . '" value="' . $atts['attach_to'] . '">';
|
78 |
}
|
79 |
+
|
80 |
+
//Label
|
81 |
if ( '' != $atts['label'] ) {
|
82 |
+
$label_name_html = ' name="label_for_wcj_input_field_' . $atts['name'] . '"';
|
83 |
+
if ( isset( $atts['name_array'] ) && ! empty( $atts['name_array'] ) ) {
|
84 |
+
$label_name_html = ' name="wcj_input_field_' . $atts['name_array'] . '[' . $atts['name'] . '][label]"';
|
85 |
+
}
|
86 |
+
$the_field .= '<input type="hidden" ' . $label_name_html . ' value="' . $atts['label'] . '">';
|
87 |
}
|
88 |
+
|
89 |
if ( 'yes' == $atts['required'] ) {
|
90 |
$the_field .= '<input type="hidden" name="wcj_input_field_' . $atts['name'] . '_required" value="yes">';
|
91 |
}
|
langs/woocommerce-jetpack.pot
CHANGED
@@ -43,8 +43,8 @@ msgstr ""
|
|
43 |
#: includes/class-wcj-payment-gateways.php:91
|
44 |
#: includes/class-wcj-track-users.php:163
|
45 |
#: includes/class-wcj-track-users.php:251
|
46 |
-
#: includes/classes/class-wcj-module.php:
|
47 |
-
#: includes/classes/class-wcj-module.php:
|
48 |
#: includes/settings/wcj-settings-price-by-country.php:178
|
49 |
msgid "Booster"
|
50 |
msgstr ""
|
@@ -187,7 +187,7 @@ msgstr ""
|
|
187 |
|
188 |
#: includes/admin/class-wc-settings-jetpack.php:416
|
189 |
#: includes/class-wcj-admin-bar.php:172
|
190 |
-
#: includes/classes/class-wcj-module.php:
|
191 |
msgid "Documentation"
|
192 |
msgstr ""
|
193 |
|
@@ -242,7 +242,7 @@ msgstr ""
|
|
242 |
|
243 |
#: includes/admin/class-wc-settings-jetpack.php:486
|
244 |
#: includes/class-wcj-global-discount.php:27
|
245 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
246 |
msgid "Global Discount"
|
247 |
msgstr ""
|
248 |
|
@@ -515,7 +515,7 @@ msgstr ""
|
|
515 |
|
516 |
#: includes/class-wcj-admin-bar.php:245 includes/class-wcj-admin-bar.php:288
|
517 |
#: includes/class-wcj-admin-bar.php:632
|
518 |
-
#: includes/classes/class-wcj-module.php:
|
519 |
#: includes/settings/wcj-settings-wpml.php:82
|
520 |
msgid "Tools"
|
521 |
msgstr ""
|
@@ -652,7 +652,7 @@ msgstr ""
|
|
652 |
|
653 |
#: includes/class-wcj-admin-bar.php:478
|
654 |
#: includes/class-wcj-product-bulk-price-converter.php:149
|
655 |
-
#: includes/class-wcj-sku.php:
|
656 |
#: includes/export/class-wcj-fields-helper.php:318
|
657 |
#: includes/settings/wcj-settings-product-by-user.php:19
|
658 |
#: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:182
|
@@ -716,7 +716,7 @@ msgstr ""
|
|
716 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:193
|
717 |
#: includes/settings/wcj-settings-checkout-custom-info.php:57
|
718 |
#: includes/settings/wcj-settings-left-to-free-shipping.php:115
|
719 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
720 |
msgid "Shipping"
|
721 |
msgstr ""
|
722 |
|
@@ -886,7 +886,7 @@ msgstr ""
|
|
886 |
#: includes/class-wcj-admin-tools.php:265
|
887 |
#: includes/class-wcj-product-bulk-meta-editor.php:339
|
888 |
#: includes/class-wcj-product-bulk-price-converter.php:148
|
889 |
-
#: includes/class-wcj-sku.php:
|
890 |
#: includes/reports/wcj-class-reports-sales.php:197
|
891 |
#: includes/reports/wcj-class-reports-stock.php:269
|
892 |
msgid "Product"
|
@@ -1102,10 +1102,10 @@ msgstr ""
|
|
1102 |
#: includes/class-wcj-checkout-files-upload.php:746
|
1103 |
#: includes/class-wcj-checkout-files-upload.php:747
|
1104 |
#: includes/settings/wcj-settings-checkout-files-upload.php:103
|
1105 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
1106 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
1107 |
#: includes/settings/wcj-settings-product-open-pricing.php:166
|
1108 |
-
#: includes/settings/wcj-settings-sku.php:
|
1109 |
#: includes/settings/wcj-settings-sorting.php:144
|
1110 |
#: includes/settings/wcj-settings-stock.php:206
|
1111 |
msgid "Remove"
|
@@ -1869,7 +1869,7 @@ msgid "Role %s successfully deleted!"
|
|
1869 |
msgstr ""
|
1870 |
|
1871 |
#: includes/class-wcj-general.php:218 includes/class-wcj-general.php:233
|
1872 |
-
#: includes/class-wcj-sku.php:
|
1873 |
#: includes/reports/wcj-class-reports-sales.php:196
|
1874 |
#: includes/settings/wcj-settings-cross-sells.php:43
|
1875 |
#: includes/settings/wcj-settings-order-numbers.php:150
|
@@ -1894,7 +1894,7 @@ msgstr ""
|
|
1894 |
|
1895 |
#: includes/class-wcj-general.php:218
|
1896 |
#: includes/class-wcj-product-by-user.php:197
|
1897 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
1898 |
#: includes/tools/class-wcj-order-statuses-tool.php:145
|
1899 |
#: includes/tools/class-wcj-order-statuses-tool.php:221
|
1900 |
msgid "Actions"
|
@@ -1937,8 +1937,8 @@ msgstr ""
|
|
1937 |
#: includes/settings/wcj-settings-order-min-amount.php:53
|
1938 |
#: includes/settings/wcj-settings-orders.php:132
|
1939 |
#: includes/settings/wcj-settings-orders.php:159
|
1940 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
1941 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
1942 |
#: includes/settings/wcj-settings-product-by-condition.php:107
|
1943 |
#: includes/settings/wcj-settings-product-by-user.php:114
|
1944 |
#: includes/settings/wcj-settings-product-open-pricing.php:123
|
@@ -1947,8 +1947,8 @@ msgstr ""
|
|
1947 |
#: includes/settings/wcj-settings-purchase-data.php:154
|
1948 |
#: includes/settings/wcj-settings-purchase-data.php:173
|
1949 |
#: includes/settings/wcj-settings-purchase-data.php:180
|
1950 |
-
#: includes/settings/wcj-settings-sku.php:
|
1951 |
-
#: includes/settings/wcj-settings-sku.php:
|
1952 |
#: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:422
|
1953 |
#: includes/tools/class-wcj-order-statuses-tool.php:236
|
1954 |
msgid "Add"
|
@@ -2057,7 +2057,7 @@ msgid "Set \"Place order\" button label."
|
|
2057 |
msgstr ""
|
2058 |
|
2059 |
#: includes/class-wcj-multicurrency-product-base-price.php:25
|
2060 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
2061 |
msgid "Multicurrency Product Base Price"
|
2062 |
msgstr ""
|
2063 |
|
@@ -2066,7 +2066,7 @@ msgid "Enter prices for products in different currencies."
|
|
2066 |
msgstr ""
|
2067 |
|
2068 |
#: includes/class-wcj-multicurrency.php:30
|
2069 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
2070 |
msgid "Multicurrency (Currency Switcher)"
|
2071 |
msgstr ""
|
2072 |
|
@@ -2165,7 +2165,7 @@ msgstr ""
|
|
2165 |
#: includes/class-wcj-product-by-user.php:206
|
2166 |
#: includes/class-wcj-purchase-data.php:94
|
2167 |
#: includes/class-wcj-track-users.php:334
|
2168 |
-
#: includes/classes/class-wcj-module.php:
|
2169 |
#: includes/functions/wcj-functions-general.php:189
|
2170 |
#: includes/functions/wcj-functions-html.php:117
|
2171 |
#: includes/reports/wcj-class-reports-monthly-sales.php:351
|
@@ -2644,20 +2644,20 @@ msgid ""
|
|
2644 |
"payment gateway."
|
2645 |
msgstr ""
|
2646 |
|
2647 |
-
#: includes/class-wcj-payment-gateways-min-max.php:
|
2648 |
msgid "Gateways Min/Max Amounts"
|
2649 |
msgstr ""
|
2650 |
|
2651 |
-
#: includes/class-wcj-payment-gateways-min-max.php:
|
2652 |
msgid "Add min/max amounts for payment gateways to show up."
|
2653 |
msgstr ""
|
2654 |
|
2655 |
-
#: includes/class-wcj-payment-gateways-min-max.php:
|
2656 |
#: includes/settings/wcj-settings-payment-gateways-min-max.php:37
|
2657 |
msgid "Minimum amount for %gateway_title% is %min_amount%"
|
2658 |
msgstr ""
|
2659 |
|
2660 |
-
#: includes/class-wcj-payment-gateways-min-max.php:
|
2661 |
#: includes/settings/wcj-settings-payment-gateways-min-max.php:45
|
2662 |
msgid "Maximum amount for %gateway_title% is %max_amount%"
|
2663 |
msgstr ""
|
@@ -2784,24 +2784,24 @@ msgstr ""
|
|
2784 |
msgid "Display products prices by user roles."
|
2785 |
msgstr ""
|
2786 |
|
2787 |
-
#: includes/class-wcj-price-by-user-role.php:
|
2788 |
msgid "user roles & variations"
|
2789 |
msgstr ""
|
2790 |
|
2791 |
-
#: includes/class-wcj-price-by-user-role.php:
|
2792 |
msgid "variations"
|
2793 |
msgstr ""
|
2794 |
|
2795 |
-
#: includes/class-wcj-price-by-user-role.php:
|
2796 |
msgid "user roles"
|
2797 |
msgstr ""
|
2798 |
|
2799 |
-
#: includes/class-wcj-price-by-user-role.php:
|
2800 |
#, php-format
|
2801 |
msgid "Copy price to all %s"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
-
#: includes/class-wcj-price-by-user-role.php:
|
2805 |
msgid ""
|
2806 |
"Booster: Free plugin's version is limited to only one price by user role per "
|
2807 |
"products settings product enabled at a time. You will need to get <a href="
|
@@ -2849,6 +2849,8 @@ msgstr ""
|
|
2849 |
#: includes/class-wcj-product-info.php:235
|
2850 |
#: includes/class-wcj-shipping-by-products.php:195
|
2851 |
#: includes/class-wcj-shipping-options.php:121
|
|
|
|
|
2852 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:68
|
2853 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:73
|
2854 |
#: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:19
|
@@ -2912,8 +2914,8 @@ msgstr ""
|
|
2912 |
#: includes/settings/wcj-settings-general.php:73
|
2913 |
#: includes/settings/wcj-settings-general.php:146
|
2914 |
#: includes/settings/wcj-settings-general.php:197
|
2915 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
2916 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
2917 |
#: includes/settings/wcj-settings-left-to-free-shipping.php:28
|
2918 |
#: includes/settings/wcj-settings-left-to-free-shipping.php:57
|
2919 |
#: includes/settings/wcj-settings-left-to-free-shipping.php:91
|
@@ -2969,9 +2971,8 @@ msgstr ""
|
|
2969 |
#: includes/settings/wcj-settings-price-by-country.php:106
|
2970 |
#: includes/settings/wcj-settings-price-by-country.php:133
|
2971 |
#: includes/settings/wcj-settings-price-by-country.php:142
|
2972 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
2973 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
2974 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:119
|
2975 |
#: includes/settings/wcj-settings-price-formats.php:21
|
2976 |
#: includes/settings/wcj-settings-price-labels.php:23
|
2977 |
#: includes/settings/wcj-settings-product-add-to-cart.php:25
|
@@ -2989,7 +2990,8 @@ msgstr ""
|
|
2989 |
#: includes/settings/wcj-settings-product-addons.php:50
|
2990 |
#: includes/settings/wcj-settings-product-addons.php:74
|
2991 |
#: includes/settings/wcj-settings-product-addons.php:179
|
2992 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
|
|
2993 |
#: includes/settings/wcj-settings-product-bookings.php:107
|
2994 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:21
|
2995 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:29
|
@@ -3045,11 +3047,12 @@ msgstr ""
|
|
3045 |
#: includes/settings/wcj-settings-shipping-time.php:31
|
3046 |
#: includes/settings/wcj-settings-shipping-time.php:40
|
3047 |
#: includes/settings/wcj-settings-shipping.php:24
|
3048 |
-
#: includes/settings/wcj-settings-sku.php:
|
3049 |
-
#: includes/settings/wcj-settings-sku.php:
|
3050 |
-
#: includes/settings/wcj-settings-sku.php:
|
3051 |
-
#: includes/settings/wcj-settings-sku.php:
|
3052 |
-
#: includes/settings/wcj-settings-sku.php:
|
|
|
3053 |
#: includes/settings/wcj-settings-stock.php:27
|
3054 |
#: includes/settings/wcj-settings-stock.php:64
|
3055 |
#: includes/settings/wcj-settings-stock.php:94
|
@@ -3058,9 +3061,9 @@ msgstr ""
|
|
3058 |
#: includes/settings/wcj-settings-stock.php:154
|
3059 |
#: includes/settings/wcj-settings-track-users.php:47
|
3060 |
#: includes/settings/wcj-settings-upsells.php:81
|
3061 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
3062 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
3063 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
3064 |
#: includes/settings/wcj-settings-wpml.php:28
|
3065 |
#: includes/settings/wcj-settings-wpml.php:35
|
3066 |
#: includes/settings/wcj-settings-wpml.php:53
|
@@ -3164,11 +3167,11 @@ msgstr ""
|
|
3164 |
msgid "Add (paid/free/discount) addons to products."
|
3165 |
msgstr ""
|
3166 |
|
3167 |
-
#: includes/class-wcj-product-addons.php:
|
3168 |
msgid "Some of the required addons are not selected!"
|
3169 |
msgstr ""
|
3170 |
|
3171 |
-
#: includes/class-wcj-product-addons.php:
|
3172 |
msgid ""
|
3173 |
"Booster: Free plugin's version is limited to only three products with per "
|
3174 |
"product addons enabled at a time. You will need to get <a href=\"https://"
|
@@ -3281,9 +3284,9 @@ msgstr ""
|
|
3281 |
#: includes/class-wcj-product-bulk-meta-editor.php:232
|
3282 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:19
|
3283 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:38
|
3284 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
3285 |
#: includes/settings/wcj-settings-product-msrp.php:31
|
3286 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
3287 |
msgid "Show"
|
3288 |
msgstr ""
|
3289 |
|
@@ -3306,7 +3309,7 @@ msgstr ""
|
|
3306 |
#: includes/settings/wcj-settings-export.php:91
|
3307 |
#: includes/settings/wcj-settings-export.php:162
|
3308 |
#: includes/settings/wcj-settings-export.php:241
|
3309 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
3310 |
msgid "Value"
|
3311 |
msgstr ""
|
3312 |
|
@@ -3415,7 +3418,7 @@ msgid "Any"
|
|
3415 |
msgstr ""
|
3416 |
|
3417 |
#: includes/class-wcj-product-bulk-price-converter.php:264
|
3418 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
3419 |
msgid "None"
|
3420 |
msgstr ""
|
3421 |
|
@@ -3714,11 +3717,11 @@ msgstr ""
|
|
3714 |
#: includes/settings/wcj-settings-custom-php.php:16
|
3715 |
#: includes/settings/wcj-settings-empty-cart.php:14
|
3716 |
#: includes/settings/wcj-settings-eu-vat-number.php:15
|
3717 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
3718 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:17
|
3719 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:63
|
3720 |
#: includes/settings/wcj-settings-payment-gateways-icons.php:14
|
3721 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
3722 |
#: includes/settings/wcj-settings-product-addons.php:173
|
3723 |
#: includes/settings/wcj-settings-product-bookings.php:86
|
3724 |
#: includes/settings/wcj-settings-product-by-user.php:59
|
@@ -3730,7 +3733,7 @@ msgstr ""
|
|
3730 |
#: includes/settings/wcj-settings-track-users.php:14
|
3731 |
#: includes/settings/wcj-settings-upsells.php:14
|
3732 |
#: includes/settings/wcj-settings-url-coupons.php:14
|
3733 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
3734 |
msgid "Options"
|
3735 |
msgstr ""
|
3736 |
|
@@ -4057,7 +4060,7 @@ msgstr ""
|
|
4057 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:32
|
4058 |
#: includes/settings/wcj-settings-admin-orders-list.php:84
|
4059 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:265
|
4060 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
4061 |
#: includes/settings/wcj-settings-related-products.php:176
|
4062 |
#: includes/widgets/class-wcj-widget-country-switcher.php:82
|
4063 |
msgid "No"
|
@@ -4095,7 +4098,7 @@ msgstr ""
|
|
4095 |
#: includes/settings/wcj-settings-eu-vat-number.php:124
|
4096 |
#: includes/settings/wcj-settings-eu-vat-number.php:135
|
4097 |
#: includes/settings/wcj-settings-eu-vat-number.php:154
|
4098 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
4099 |
#: includes/settings/wcj-settings-related-products.php:175
|
4100 |
#: includes/widgets/class-wcj-widget-country-switcher.php:83
|
4101 |
msgid "Yes"
|
@@ -4512,7 +4515,7 @@ msgstr ""
|
|
4512 |
#: includes/class-wcj-shipping-by-user-role.php:33
|
4513 |
#: includes/settings/wcj-settings-multicurrency.php:261
|
4514 |
#: includes/settings/wcj-settings-order-min-amount.php:104
|
4515 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
4516 |
#, php-format
|
4517 |
msgid ""
|
4518 |
"Custom roles can be added via \"Add/Manage Custom Roles\" tool in Booster's "
|
@@ -4623,7 +4626,7 @@ msgstr ""
|
|
4623 |
msgid "Add multiple custom shipping methods to WooCommerce."
|
4624 |
msgstr ""
|
4625 |
|
4626 |
-
#: includes/class-wcj-sku.php:23 includes/class-wcj-sku.php:
|
4627 |
#: includes/export/class-wcj-fields-helper.php:283
|
4628 |
msgid "SKU"
|
4629 |
msgstr ""
|
@@ -4640,33 +4643,33 @@ msgstr ""
|
|
4640 |
msgid "The tool generates and sets product SKUs for existing products."
|
4641 |
msgstr ""
|
4642 |
|
4643 |
-
#: includes/class-wcj-sku.php:
|
4644 |
msgid "Old SKU"
|
4645 |
msgstr ""
|
4646 |
|
4647 |
-
#: includes/class-wcj-sku.php:
|
4648 |
msgid "SKUs generated and set successfully!"
|
4649 |
msgstr ""
|
4650 |
|
4651 |
-
#: includes/class-wcj-sku.php:
|
4652 |
msgid "Preview SKUs"
|
4653 |
msgstr ""
|
4654 |
|
4655 |
-
#: includes/class-wcj-sku.php:
|
4656 |
msgid "Set SKUs"
|
4657 |
msgstr ""
|
4658 |
|
4659 |
-
#: includes/class-wcj-sku.php:
|
4660 |
msgid ""
|
4661 |
"You can optionally limit affected products by main product's ID (set option "
|
4662 |
"to zero to ignore):"
|
4663 |
msgstr ""
|
4664 |
|
4665 |
-
#: includes/class-wcj-sku.php:
|
4666 |
msgid "Min ID"
|
4667 |
msgstr ""
|
4668 |
|
4669 |
-
#: includes/class-wcj-sku.php:
|
4670 |
msgid "Max ID"
|
4671 |
msgstr ""
|
4672 |
|
@@ -4840,21 +4843,37 @@ msgstr ""
|
|
4840 |
msgid "File wpml-config.xml successfully regenerated!"
|
4841 |
msgstr ""
|
4842 |
|
4843 |
-
#: includes/classes/class-wcj-module-product-by-condition.php:
|
4844 |
msgid "— No change —"
|
4845 |
msgstr ""
|
4846 |
|
4847 |
-
#: includes/classes/class-wcj-module-product-by-condition.php:
|
4848 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-by-condition.php:29
|
4849 |
msgid "Visible"
|
4850 |
msgstr ""
|
4851 |
|
4852 |
-
#: includes/classes/class-wcj-module-product-by-condition.php:
|
4853 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-by-condition.php:41
|
4854 |
msgid "Invisible"
|
4855 |
msgstr ""
|
4856 |
|
4857 |
-
#: includes/classes/class-wcj-module.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4858 |
#, php-format
|
4859 |
msgid ""
|
4860 |
"Booster: Free plugin's version is limited to only one \"%1$s\" product with "
|
@@ -4863,30 +4882,30 @@ msgid ""
|
|
4863 |
"\"%1$s\" products."
|
4864 |
msgstr ""
|
4865 |
|
4866 |
-
#: includes/classes/class-wcj-module.php:
|
4867 |
#, php-format
|
4868 |
msgid "Selected: %s."
|
4869 |
msgstr ""
|
4870 |
|
4871 |
-
#: includes/classes/class-wcj-module.php:
|
4872 |
msgid "Back to Module Settings"
|
4873 |
msgstr ""
|
4874 |
|
4875 |
-
#: includes/classes/class-wcj-module.php:
|
4876 |
#: includes/settings/wcj-settings-wpml.php:87
|
4877 |
msgid "Module Tools"
|
4878 |
msgstr ""
|
4879 |
|
4880 |
-
#: includes/classes/class-wcj-module.php:
|
4881 |
#: includes/settings/wcj-settings-checkout-core-fields.php:64
|
4882 |
msgid "enabled"
|
4883 |
msgstr ""
|
4884 |
|
4885 |
-
#: includes/classes/class-wcj-module.php:
|
4886 |
msgid "disabled"
|
4887 |
msgstr ""
|
4888 |
|
4889 |
-
#: includes/classes/class-wcj-module.php:
|
4890 |
#: includes/settings/wcj-settings-product-tabs.php:172
|
4891 |
#: includes/settings/wcj-settings-product-tabs.php:184
|
4892 |
#: includes/settings/wcj-settings-product-tabs.php:196
|
@@ -4894,36 +4913,36 @@ msgstr ""
|
|
4894 |
msgid "Deprecated"
|
4895 |
msgstr ""
|
4896 |
|
4897 |
-
#: includes/classes/class-wcj-module.php:
|
4898 |
msgid "Reset Settings"
|
4899 |
msgstr ""
|
4900 |
|
4901 |
-
#: includes/classes/class-wcj-module.php:
|
4902 |
msgid "Reset Module to Default Settings"
|
4903 |
msgstr ""
|
4904 |
|
4905 |
-
#: includes/classes/class-wcj-module.php:
|
4906 |
msgid "Reset Submodule to Default Settings"
|
4907 |
msgstr ""
|
4908 |
|
4909 |
-
#: includes/classes/class-wcj-module.php:
|
4910 |
msgid "Reset settings"
|
4911 |
msgstr ""
|
4912 |
|
4913 |
-
#: includes/classes/class-wcj-module.php:
|
4914 |
msgid "Module Options"
|
4915 |
msgstr ""
|
4916 |
|
4917 |
-
#: includes/classes/class-wcj-module.php:
|
4918 |
msgid "Enable Module"
|
4919 |
msgstr ""
|
4920 |
|
4921 |
-
#: includes/classes/class-wcj-pdf-invoice.php:
|
4922 |
#: includes/settings/wcj-settings-pdf-invoicing-header.php:61
|
4923 |
msgid "Company Name"
|
4924 |
msgstr ""
|
4925 |
|
4926 |
-
#: includes/classes/class-wcj-pdf-invoice.php:
|
4927 |
#: includes/functions/wcj-functions-general.php:145
|
4928 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:245
|
4929 |
msgid "Unexpected error"
|
@@ -5485,7 +5504,7 @@ msgstr ""
|
|
5485 |
#: includes/settings/wcj-settings-export.php:81
|
5486 |
#: includes/settings/wcj-settings-export.php:149
|
5487 |
#: includes/settings/wcj-settings-export.php:231
|
5488 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
5489 |
#: includes/settings/wcj-settings-product-addons.php:80
|
5490 |
#: includes/settings/wcj-settings-purchase-data.php:84
|
5491 |
#: includes/settings/wcj-settings-shipping-options.php:77
|
@@ -7158,7 +7177,7 @@ msgstr ""
|
|
7158 |
#: includes/settings/wcj-settings-export.php:70
|
7159 |
#: includes/settings/wcj-settings-export.php:138
|
7160 |
#: includes/settings/wcj-settings-export.php:220
|
7161 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
7162 |
#: includes/settings/wcj-settings-product-by-user.php:149
|
7163 |
#: includes/settings/wcj-settings-products-xml.php:76
|
7164 |
msgid "Enabled"
|
@@ -7597,7 +7616,8 @@ msgstr ""
|
|
7597 |
#: includes/settings/wcj-settings-multicurrency.php:162
|
7598 |
#: includes/settings/wcj-settings-order-min-amount.php:69
|
7599 |
#: includes/settings/wcj-settings-price-by-country.php:160
|
7600 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
|
|
7601 |
msgid "Advanced"
|
7602 |
msgstr ""
|
7603 |
|
@@ -8161,7 +8181,7 @@ msgstr ""
|
|
8161 |
#: includes/settings/wcj-settings-my-account.php:209
|
8162 |
#: includes/settings/wcj-settings-order-custom-statuses.php:63
|
8163 |
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:48
|
8164 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
8165 |
#: includes/settings/wcj-settings-product-bookings.php:100
|
8166 |
#: includes/settings/wcj-settings-product-images.php:20
|
8167 |
#: includes/settings/wcj-settings-product-images.php:27
|
@@ -8280,8 +8300,8 @@ msgstr ""
|
|
8280 |
|
8281 |
#: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:63
|
8282 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:136
|
8283 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
8284 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
8285 |
msgid "Make Empty Price"
|
8286 |
msgstr ""
|
8287 |
|
@@ -8382,7 +8402,7 @@ msgid "Per Product Settings (press Update after changing)"
|
|
8382 |
msgstr ""
|
8383 |
|
8384 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:113
|
8385 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
8386 |
msgid "Multiplier"
|
8387 |
msgstr ""
|
8388 |
|
@@ -8425,12 +8445,12 @@ msgstr ""
|
|
8425 |
#: includes/settings/wcj-settings-general.php:122
|
8426 |
#: includes/settings/wcj-settings-general.php:130
|
8427 |
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:84
|
8428 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
8429 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
8430 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
8431 |
#: includes/settings/wcj-settings-product-add-to-cart.php:131
|
8432 |
#: includes/settings/wcj-settings-product-open-pricing.php:95
|
8433 |
-
#: includes/settings/wcj-settings-sku.php:
|
8434 |
msgid "Disable"
|
8435 |
msgstr ""
|
8436 |
|
@@ -8555,6 +8575,12 @@ msgstr ""
|
|
8555 |
msgid "If this field is filled in, monthly settings fields are ignored."
|
8556 |
msgstr ""
|
8557 |
|
|
|
|
|
|
|
|
|
|
|
|
|
8558 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:17
|
8559 |
msgid "Replace image with custom HTML on single product page"
|
8560 |
msgstr ""
|
@@ -8671,20 +8697,20 @@ msgstr ""
|
|
8671 |
|
8672 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:18
|
8673 |
#: includes/settings/wcj-settings-checkout-fees.php:72
|
8674 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
8675 |
#: includes/settings/wcj-settings-payment-gateways-fees.php:38
|
8676 |
#: includes/settings/wcj-settings-purchase-data.php:89
|
8677 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
8678 |
msgid "Percent"
|
8679 |
msgstr ""
|
8680 |
|
8681 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:19
|
8682 |
#: includes/settings/wcj-settings-checkout-fees.php:71
|
8683 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
8684 |
#: includes/settings/wcj-settings-payment-gateways-fees.php:37
|
8685 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
8686 |
#: includes/settings/wcj-settings-purchase-data.php:88
|
8687 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
8688 |
msgid "Fixed"
|
8689 |
msgstr ""
|
8690 |
|
@@ -8697,7 +8723,7 @@ msgid "Enable per Product Levels"
|
|
8697 |
msgstr ""
|
8698 |
|
8699 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:41
|
8700 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
8701 |
msgid "Discount Type"
|
8702 |
msgstr ""
|
8703 |
|
@@ -8727,10 +8753,10 @@ msgstr ""
|
|
8727 |
|
8728 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:72
|
8729 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:108
|
8730 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
8731 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
8732 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
8733 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
8734 |
msgid "Discount"
|
8735 |
msgstr ""
|
8736 |
|
@@ -9239,7 +9265,7 @@ msgid "Default columns order"
|
|
9239 |
msgstr ""
|
9240 |
|
9241 |
#: includes/settings/wcj-settings-admin-products-list.php:27
|
9242 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
9243 |
#: includes/settings/wcj-settings-shipping.php:51
|
9244 |
msgid ""
|
9245 |
"Save module's settings after changing this option to see new settings fields."
|
@@ -9859,7 +9885,7 @@ msgid ""
|
|
9859 |
msgstr ""
|
9860 |
|
9861 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:360
|
9862 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
9863 |
#: includes/settings/wcj-settings-payment-gateways-fees.php:125
|
9864 |
#: includes/settings/wcj-settings-product-addons.php:149
|
9865 |
#: includes/settings/wcj-settings-related-products.php:244
|
@@ -9871,7 +9897,7 @@ msgid "Hide this field if there is a selected product in cart."
|
|
9871 |
msgstr ""
|
9872 |
|
9873 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:369
|
9874 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
9875 |
#: includes/settings/wcj-settings-related-products.php:233
|
9876 |
msgid "Include Products"
|
9877 |
msgstr ""
|
@@ -10508,8 +10534,8 @@ msgstr ""
|
|
10508 |
#: includes/settings/wcj-settings-checkout-files-upload.php:298
|
10509 |
#: includes/settings/wcj-settings-checkout-files-upload.php:352
|
10510 |
#: includes/settings/wcj-settings-checkout-files-upload.php:393
|
10511 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
10512 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
10513 |
msgid "Before"
|
10514 |
msgstr ""
|
10515 |
|
@@ -10531,8 +10557,8 @@ msgstr ""
|
|
10531 |
#: includes/settings/wcj-settings-checkout-files-upload.php:321
|
10532 |
#: includes/settings/wcj-settings-checkout-files-upload.php:367
|
10533 |
#: includes/settings/wcj-settings-checkout-files-upload.php:408
|
10534 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
10535 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
10536 |
msgid "After"
|
10537 |
msgstr ""
|
10538 |
|
@@ -11574,7 +11600,7 @@ msgid "Export Options"
|
|
11574 |
msgstr ""
|
11575 |
|
11576 |
#: includes/settings/wcj-settings-export.php:20
|
11577 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
11578 |
msgid "CSV Separator"
|
11579 |
msgstr ""
|
11580 |
|
@@ -11889,7 +11915,7 @@ msgstr ""
|
|
11889 |
#: includes/settings/wcj-settings-max-products-per-user.php:44
|
11890 |
#: includes/settings/wcj-settings-product-by-date.php:54
|
11891 |
#: includes/settings/wcj-settings-product-by-time.php:54
|
11892 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
11893 |
msgid "This will add new meta box to each product's edit page."
|
11894 |
msgstr ""
|
11895 |
|
@@ -11950,44 +11976,44 @@ msgstr ""
|
|
11950 |
msgid "seconds."
|
11951 |
msgstr ""
|
11952 |
|
11953 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11954 |
msgid "Total Groups"
|
11955 |
msgstr ""
|
11956 |
|
11957 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11958 |
#: includes/settings/wcj-settings-product-by-user.php:138
|
11959 |
#: includes/settings/wcj-settings-products-xml.php:29
|
11960 |
#: includes/shipping/class-wc-shipping-wcj-custom.php:148
|
11961 |
msgid "Press Save changes after you change this number."
|
11962 |
msgstr ""
|
11963 |
|
11964 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11965 |
msgid "Discount Group"
|
11966 |
msgstr ""
|
11967 |
|
11968 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11969 |
msgid "Enabled/disables the discount group."
|
11970 |
msgstr ""
|
11971 |
|
11972 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11973 |
msgid "Can be fixed or percent."
|
11974 |
msgstr ""
|
11975 |
|
11976 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11977 |
msgid "Must be negative number."
|
11978 |
msgstr ""
|
11979 |
|
11980 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11981 |
msgid "Final Correction"
|
11982 |
msgstr ""
|
11983 |
|
11984 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11985 |
#, php-format
|
11986 |
msgid ""
|
11987 |
"Will apply selected function and coefficient to the final price, e.g.: %s."
|
11988 |
msgstr ""
|
11989 |
|
11990 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11991 |
#: includes/settings/wcj-settings-multicurrency.php:79
|
11992 |
#: includes/settings/wcj-settings-price-by-country.php:83
|
11993 |
#: includes/settings/wcj-settings-product-price-by-formula.php:70
|
@@ -11995,131 +12021,132 @@ msgstr ""
|
|
11995 |
msgid "Round"
|
11996 |
msgstr ""
|
11997 |
|
11998 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
11999 |
msgid "Ceil"
|
12000 |
msgstr ""
|
12001 |
|
12002 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12003 |
msgid "Floor"
|
12004 |
msgstr ""
|
12005 |
|
12006 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12007 |
msgid "Final correction coefficient"
|
12008 |
msgstr ""
|
12009 |
|
12010 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12011 |
msgid "Product Scope"
|
12012 |
msgstr ""
|
12013 |
|
12014 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12015 |
msgid ""
|
12016 |
"Possible values: all products, only products that are already on sale, only "
|
12017 |
"products that are not on sale."
|
12018 |
msgstr ""
|
12019 |
|
12020 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12021 |
#: includes/settings/wcj-settings-product-add-to-cart.php:65
|
12022 |
#: includes/settings/wcj-settings-products-xml.php:207
|
12023 |
msgid "All products"
|
12024 |
msgstr ""
|
12025 |
|
12026 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12027 |
msgid "Only products that are already on sale"
|
12028 |
msgstr ""
|
12029 |
|
12030 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12031 |
#: includes/settings/wcj-settings-products-xml.php:209
|
12032 |
msgid "Only products that are not on sale"
|
12033 |
msgstr ""
|
12034 |
|
12035 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12036 |
#: includes/settings/wcj-settings-related-products.php:196
|
12037 |
msgid "Include Product Categories"
|
12038 |
msgstr ""
|
12039 |
|
12040 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12041 |
msgid ""
|
12042 |
"Set this field to apply discount to selected product categories only. Leave "
|
12043 |
"blank to apply to all products."
|
12044 |
msgstr ""
|
12045 |
|
12046 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12047 |
#: includes/settings/wcj-settings-related-products.php:205
|
12048 |
msgid "Exclude Product Categories"
|
12049 |
msgstr ""
|
12050 |
|
12051 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12052 |
msgid ""
|
12053 |
"Set this field to NOT apply discount to selected product categories. Leave "
|
12054 |
"blank to apply to all products."
|
12055 |
msgstr ""
|
12056 |
|
12057 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12058 |
#: includes/settings/wcj-settings-related-products.php:214
|
12059 |
msgid "Include Product Tags"
|
12060 |
msgstr ""
|
12061 |
|
12062 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12063 |
msgid ""
|
12064 |
"Set this field to apply discount to selected product tags only. Leave blank "
|
12065 |
"to apply to all products."
|
12066 |
msgstr ""
|
12067 |
|
12068 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12069 |
#: includes/settings/wcj-settings-related-products.php:223
|
12070 |
msgid "Exclude Product Tags"
|
12071 |
msgstr ""
|
12072 |
|
12073 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12074 |
msgid ""
|
12075 |
"Set this field to NOT apply discount to selected product tags. Leave blank "
|
12076 |
"to apply to all products."
|
12077 |
msgstr ""
|
12078 |
|
12079 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12080 |
msgid ""
|
12081 |
"Set this field to apply discount to selected products only. Leave blank to "
|
12082 |
"apply to all products."
|
12083 |
msgstr ""
|
12084 |
|
12085 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12086 |
msgid ""
|
12087 |
"Set this field to NOT apply discount to selected products. Leave blank to "
|
12088 |
"apply to all products."
|
12089 |
msgstr ""
|
12090 |
|
12091 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12092 |
#: includes/settings/wcj-settings-product-price-by-formula.php:95
|
12093 |
msgid "Advanced Settings"
|
12094 |
msgstr ""
|
12095 |
|
12096 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12097 |
msgid "Global Discount in Admin"
|
12098 |
msgstr ""
|
12099 |
|
12100 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12101 |
msgid ""
|
12102 |
"This will enable \"global discount\" product pricing in backend. It will "
|
12103 |
"also affect some modules, e.g.: \"Products XML Feeds\" module."
|
12104 |
msgstr ""
|
12105 |
|
12106 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12107 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:76
|
12108 |
#: includes/settings/wcj-settings-multicurrency.php:176
|
12109 |
#: includes/settings/wcj-settings-price-by-country.php:165
|
12110 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
|
|
12111 |
#: includes/settings/wcj-settings-product-price-by-formula.php:100
|
12112 |
msgid "Price Filters Priority"
|
12113 |
msgstr ""
|
12114 |
|
12115 |
-
#: includes/settings/wcj-settings-global-discount.php:
|
12116 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:77
|
12117 |
#: includes/settings/wcj-settings-multicurrency.php:177
|
12118 |
#: includes/settings/wcj-settings-price-by-country.php:166
|
12119 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
12120 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
12121 |
#: includes/settings/wcj-settings-product-price-by-formula.php:101
|
12122 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
12123 |
msgid ""
|
12124 |
"Priority for all module's price filters. Set to zero to use default priority."
|
12125 |
msgstr ""
|
@@ -12564,7 +12591,7 @@ msgid "Roles"
|
|
12564 |
msgstr ""
|
12565 |
|
12566 |
#: includes/settings/wcj-settings-multicurrency.php:267
|
12567 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
12568 |
msgid "Save settings after you change this option. Leave blank to disable."
|
12569 |
msgstr ""
|
12570 |
|
@@ -14153,67 +14180,79 @@ msgstr ""
|
|
14153 |
msgid "Returns the content of output buffering instead of displaying it"
|
14154 |
msgstr ""
|
14155 |
|
14156 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14157 |
msgid "Fonts Manager"
|
14158 |
msgstr ""
|
14159 |
|
14160 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14161 |
msgid "Re-download"
|
14162 |
msgstr ""
|
14163 |
|
14164 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14165 |
msgid "Download"
|
14166 |
msgstr ""
|
14167 |
|
14168 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14169 |
msgid "Disable Fonts Download"
|
14170 |
msgstr ""
|
14171 |
|
14172 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14173 |
msgid "General Display Options"
|
14174 |
msgstr ""
|
14175 |
|
14176 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14177 |
msgid "Add PDF Invoices Meta Box to Admin Edit Order Page"
|
14178 |
msgstr ""
|
14179 |
|
14180 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14181 |
msgid "Open docs in new window"
|
14182 |
msgstr ""
|
14183 |
|
14184 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14185 |
msgid "Add editable numbers and dates"
|
14186 |
msgstr ""
|
14187 |
|
14188 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14189 |
msgid "Report Tool Options"
|
14190 |
msgstr ""
|
14191 |
|
14192 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14193 |
msgid "Reports Filename"
|
14194 |
msgstr ""
|
14195 |
|
14196 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14197 |
msgid "Report Columns"
|
14198 |
msgstr ""
|
14199 |
|
14200 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14201 |
msgid "Leave blank to show all columns."
|
14202 |
msgstr ""
|
14203 |
|
14204 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14205 |
msgid "Tax Percent Precision"
|
14206 |
msgstr ""
|
14207 |
|
14208 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14209 |
msgid "CSV UTF-8 BOM"
|
14210 |
msgstr ""
|
14211 |
|
14212 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14213 |
msgid "Replace Periods with Commas in CSV Data"
|
14214 |
msgstr ""
|
14215 |
|
14216 |
-
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:
|
14217 |
#: includes/settings/wcj-settings-product-open-pricing.php:174
|
14218 |
msgid "Replace"
|
14219 |
msgstr ""
|
@@ -14400,19 +14439,19 @@ msgid "Counter Width"
|
|
14400 |
msgstr ""
|
14401 |
|
14402 |
#: includes/settings/wcj-settings-pdf-invoicing-numbering.php:41
|
14403 |
-
#: includes/settings/wcj-settings-sku.php:
|
14404 |
-
#: includes/settings/wcj-settings-sku.php:
|
14405 |
msgid "Prefix"
|
14406 |
msgstr ""
|
14407 |
|
14408 |
#: includes/settings/wcj-settings-pdf-invoicing-numbering.php:47
|
14409 |
-
#: includes/settings/wcj-settings-sku.php:
|
14410 |
-
#: includes/settings/wcj-settings-sku.php:
|
14411 |
msgid "Suffix"
|
14412 |
msgstr ""
|
14413 |
|
14414 |
#: includes/settings/wcj-settings-pdf-invoicing-numbering.php:53
|
14415 |
-
#: includes/settings/wcj-settings-sku.php:
|
14416 |
msgid "Template"
|
14417 |
msgstr ""
|
14418 |
|
@@ -14687,7 +14726,7 @@ msgid ""
|
|
14687 |
msgstr ""
|
14688 |
|
14689 |
#: includes/settings/wcj-settings-price-by-country.php:149
|
14690 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14691 |
msgid "Search Engine Bots"
|
14692 |
msgstr ""
|
14693 |
|
@@ -14760,124 +14799,116 @@ msgstr ""
|
|
14760 |
msgid "Multiply Price by"
|
14761 |
msgstr ""
|
14762 |
|
14763 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14764 |
msgid "Enable per Product Settings"
|
14765 |
msgstr ""
|
14766 |
|
14767 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14768 |
msgid ""
|
14769 |
"When enabled, this will add new \"Booster: Price based on User Role\" meta "
|
14770 |
"box to each product's edit page."
|
14771 |
msgstr ""
|
14772 |
|
14773 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14774 |
msgid "Per Product Settings Type"
|
14775 |
msgstr ""
|
14776 |
|
14777 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14778 |
msgid "Show Roles on per Product Settings"
|
14779 |
msgstr ""
|
14780 |
|
14781 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14782 |
msgid ""
|
14783 |
"If per product settings are enabled, you can choose which roles to show on "
|
14784 |
"product's edit page. Leave blank to show all roles."
|
14785 |
msgstr ""
|
14786 |
|
14787 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14788 |
msgid ""
|
14789 |
"When enabled, this will apply user role multipliers to shipping calculations."
|
14790 |
msgstr ""
|
14791 |
|
14792 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14793 |
msgid "Disable Price based on User Role for Regular Price"
|
14794 |
msgstr ""
|
14795 |
|
14796 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14797 |
msgid ""
|
14798 |
"Disable price by user role for regular price when using multipliers (global "
|
14799 |
"or per product)."
|
14800 |
msgstr ""
|
14801 |
|
14802 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14803 |
msgid "Disable Price based on User Role for Bots"
|
14804 |
msgstr ""
|
14805 |
|
14806 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14807 |
msgid "Show Empty Price Variations"
|
14808 |
msgstr ""
|
14809 |
|
14810 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14811 |
msgid ""
|
14812 |
"Show \"empty price\" variations. This will also hide out of stock messages."
|
14813 |
msgstr ""
|
14814 |
|
14815 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14816 |
msgid "Remove Empty Price Variation Callback"
|
14817 |
msgstr ""
|
14818 |
|
14819 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14820 |
msgid ""
|
14821 |
"Remove \"woocommerce_single_variation\" callback from "
|
14822 |
"\"woocommerce_single_variation\" hook on \"empty price\" variations."
|
14823 |
msgstr ""
|
14824 |
|
14825 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14826 |
msgid "Remove Empty Price Add to Cart Button Callback"
|
14827 |
msgstr ""
|
14828 |
|
14829 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14830 |
msgid ""
|
14831 |
"Remove \"woocommerce_single_variation_add_to_cart_button\" callback from "
|
14832 |
"\"woocommerce_single_variation\" hook on \"empty price\" variations."
|
14833 |
msgstr ""
|
14834 |
|
14835 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14836 |
msgid "Price Changes"
|
14837 |
msgstr ""
|
14838 |
|
14839 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14840 |
msgid "Disable price based on user role for products with \"Price Changes\""
|
14841 |
msgstr ""
|
14842 |
|
14843 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14844 |
#: includes/settings/wcj-settings-product-open-pricing.php:149
|
14845 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
14846 |
msgid ""
|
14847 |
"Try enabling this checkbox, if you are having compatibility issues with "
|
14848 |
"other plugins."
|
14849 |
msgstr ""
|
14850 |
|
14851 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14852 |
-
msgid "WPML: Get Terms in All Languages"
|
14853 |
-
msgstr ""
|
14854 |
-
|
14855 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:120
|
14856 |
-
msgid "Get tags and taxonomies in all languages"
|
14857 |
-
msgstr ""
|
14858 |
-
|
14859 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:132
|
14860 |
msgid "Roles & Multipliers"
|
14861 |
msgstr ""
|
14862 |
|
14863 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14864 |
msgid "Disable Price based on User Role for Products on Sale"
|
14865 |
msgstr ""
|
14866 |
|
14867 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14868 |
msgid "Products Categories"
|
14869 |
msgstr ""
|
14870 |
|
14871 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14872 |
msgid "Products Tags"
|
14873 |
msgstr ""
|
14874 |
|
14875 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14876 |
#, php-format
|
14877 |
msgid "Price based on User Role by %s"
|
14878 |
msgstr ""
|
14879 |
|
14880 |
-
#: includes/settings/wcj-settings-price-by-user-role.php:
|
14881 |
msgid ""
|
14882 |
"Multiplier is ignored if set to negative number (e.g.: -1). Global "
|
14883 |
"multiplier will be used instead."
|
@@ -15326,33 +15357,27 @@ msgstr ""
|
|
15326 |
msgid "Set to zero to use the default priority."
|
15327 |
msgstr ""
|
15328 |
|
15329 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15330 |
-
msgid "
|
15331 |
msgstr ""
|
15332 |
|
15333 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15334 |
msgid "By module"
|
15335 |
msgstr ""
|
15336 |
|
15337 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15338 |
msgid ""
|
15339 |
"If you have selected \"By module\" for \"Advanced: Apply Price Filter\" "
|
15340 |
"option, you can set which modules to apply here. Leave empty to apply all "
|
15341 |
"modules."
|
15342 |
msgstr ""
|
15343 |
|
15344 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15345 |
-
#: includes/settings/wcj-settings-
|
15346 |
-
msgid "
|
15347 |
-
msgstr ""
|
15348 |
-
|
15349 |
-
#: includes/settings/wcj-settings-product-addons.php:256
|
15350 |
-
#: includes/settings/wcj-settings-product-bookings.php:106
|
15351 |
-
#: includes/settings/wcj-settings-product-open-pricing.php:139
|
15352 |
-
msgid "Advanced: Check for Outputted Data"
|
15353 |
msgstr ""
|
15354 |
|
15355 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15356 |
#: includes/settings/wcj-settings-product-bookings.php:108
|
15357 |
#: includes/settings/wcj-settings-product-input-fields.php:355
|
15358 |
#: includes/settings/wcj-settings-product-open-pricing.php:141
|
@@ -15361,56 +15386,66 @@ msgid ""
|
|
15361 |
"on frontend twice. Disable if you see no data outputted."
|
15362 |
msgstr ""
|
15363 |
|
15364 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15365 |
msgid "Frontend Templates"
|
15366 |
msgstr ""
|
15367 |
|
15368 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15369 |
msgid "Hide Percentage Price"
|
15370 |
msgstr ""
|
15371 |
|
15372 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15373 |
msgid "Hide percentage price when % is set on prices"
|
15374 |
msgstr ""
|
15375 |
|
15376 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15377 |
msgid "Each Addon - Title"
|
15378 |
msgstr ""
|
15379 |
|
15380 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15381 |
msgid "Each Addon - Type: Checkbox"
|
15382 |
msgstr ""
|
15383 |
|
15384 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15385 |
msgid "Each Addon - Type: Text"
|
15386 |
msgstr ""
|
15387 |
|
15388 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15389 |
msgid "Each Addon - Type: Select Box"
|
15390 |
msgstr ""
|
15391 |
|
15392 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15393 |
msgid "Each Addon - Type: Select Box (Each Option)"
|
15394 |
msgstr ""
|
15395 |
|
15396 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15397 |
msgid "Each Addon - Type: Radio Button (Each)"
|
15398 |
msgstr ""
|
15399 |
|
15400 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15401 |
msgid "All Addons - Final"
|
15402 |
msgstr ""
|
15403 |
|
15404 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15405 |
msgid "Cart Template"
|
15406 |
msgstr ""
|
15407 |
|
15408 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15409 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15410 |
msgid "Each Addon"
|
15411 |
msgstr ""
|
15412 |
|
15413 |
-
#: includes/settings/wcj-settings-product-addons.php:
|
15414 |
msgid "Order Details Table Template"
|
15415 |
msgstr ""
|
15416 |
|
@@ -15461,6 +15496,11 @@ msgstr ""
|
|
15461 |
msgid "Hide Quantity Selector for Bookings Products"
|
15462 |
msgstr ""
|
15463 |
|
|
|
|
|
|
|
|
|
|
|
15464 |
#: includes/settings/wcj-settings-product-bookings.php:118
|
15465 |
msgid "Datepicker Options"
|
15466 |
msgstr ""
|
@@ -15645,6 +15685,10 @@ msgstr ""
|
|
15645 |
msgid "Leave blank to use the default date format."
|
15646 |
msgstr ""
|
15647 |
|
|
|
|
|
|
|
|
|
15648 |
#: includes/settings/wcj-settings-product-by-date.php:72
|
15649 |
#: includes/settings/wcj-settings-product-by-time.php:64
|
15650 |
msgid "Frontend Messages Options"
|
@@ -15836,7 +15880,7 @@ msgid "Inside product title"
|
|
15836 |
msgstr ""
|
15837 |
|
15838 |
#: includes/settings/wcj-settings-product-custom-info.php:130
|
15839 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
15840 |
msgid "Product Categories to Include"
|
15841 |
msgstr ""
|
15842 |
|
@@ -15850,7 +15894,7 @@ msgid "Leave blank to disable the option."
|
|
15850 |
msgstr ""
|
15851 |
|
15852 |
#: includes/settings/wcj-settings-product-custom-info.php:138
|
15853 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
15854 |
msgid "Product Categories to Exclude"
|
15855 |
msgstr ""
|
15856 |
|
@@ -15864,13 +15908,13 @@ msgstr ""
|
|
15864 |
|
15865 |
#: includes/settings/wcj-settings-product-custom-info.php:162
|
15866 |
#: includes/settings/wcj-settings-products-xml.php:147
|
15867 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
15868 |
msgid "Products to Include"
|
15869 |
msgstr ""
|
15870 |
|
15871 |
#: includes/settings/wcj-settings-product-custom-info.php:170
|
15872 |
#: includes/settings/wcj-settings-products-xml.php:157
|
15873 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
15874 |
msgid "Products to Exclude"
|
15875 |
msgstr ""
|
15876 |
|
@@ -16095,8 +16139,8 @@ msgstr ""
|
|
16095 |
#: includes/settings/wcj-settings-product-input-fields.php:145
|
16096 |
#: includes/settings/wcj-settings-product-input-fields.php:157
|
16097 |
#: includes/settings/wcj-settings-product-input-fields.php:169
|
16098 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
16099 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
16100 |
msgid "Leave blank to include all products."
|
16101 |
msgstr ""
|
16102 |
|
@@ -16228,10 +16272,6 @@ msgid ""
|
|
16228 |
"Preserves line breaks on admin, making some inputs like textarea more legible"
|
16229 |
msgstr ""
|
16230 |
|
16231 |
-
#: includes/settings/wcj-settings-product-input-fields.php:353
|
16232 |
-
msgid "Check for Outputted Data"
|
16233 |
-
msgstr ""
|
16234 |
-
|
16235 |
#: includes/settings/wcj-settings-product-input-fields.php:361
|
16236 |
msgid "Strip Slashes"
|
16237 |
msgstr ""
|
@@ -16483,7 +16523,7 @@ msgid "Allow price entering in switched currency"
|
|
16483 |
msgstr ""
|
16484 |
|
16485 |
#: includes/settings/wcj-settings-product-open-pricing.php:147
|
16486 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
16487 |
msgid "Advanced: Price Changes"
|
16488 |
msgstr ""
|
16489 |
|
@@ -16826,14 +16866,27 @@ msgid "Template - After Form"
|
|
16826 |
msgstr ""
|
16827 |
|
16828 |
#: includes/settings/wcj-settings-products-per-page.php:75
|
16829 |
-
|
|
|
16830 |
msgstr ""
|
16831 |
|
16832 |
#: includes/settings/wcj-settings-products-per-page.php:80
|
16833 |
-
msgid "
|
16834 |
msgstr ""
|
16835 |
|
16836 |
#: includes/settings/wcj-settings-products-per-page.php:81
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16837 |
msgid "Session"
|
16838 |
msgstr ""
|
16839 |
|
@@ -17079,7 +17132,7 @@ msgid ""
|
|
17079 |
msgstr ""
|
17080 |
|
17081 |
#: includes/settings/wcj-settings-purchase-data.php:190
|
17082 |
-
#: includes/settings/wcj-settings-sku.php:
|
17083 |
#: includes/settings/wcj-settings-stock.php:199
|
17084 |
msgid "More Options"
|
17085 |
msgstr ""
|
@@ -17677,87 +17730,95 @@ msgstr ""
|
|
17677 |
msgid "From product ID"
|
17678 |
msgstr ""
|
17679 |
|
17680 |
-
#: includes/settings/wcj-settings-sku.php:
|
17681 |
-
msgid "
|
17682 |
msgstr ""
|
17683 |
|
17684 |
#: includes/settings/wcj-settings-sku.php:32
|
17685 |
-
msgid "
|
17686 |
msgstr ""
|
17687 |
|
17688 |
-
#: includes/settings/wcj-settings-sku.php:
|
17689 |
-
msgid "
|
|
|
|
|
|
|
|
|
17690 |
msgstr ""
|
17691 |
|
17692 |
#: includes/settings/wcj-settings-sku.php:38
|
|
|
|
|
|
|
|
|
17693 |
msgid ""
|
17694 |
"If you choose to use sequential number inside SKU, you can set current "
|
17695 |
"sequential number counter here."
|
17696 |
msgstr ""
|
17697 |
|
17698 |
-
#: includes/settings/wcj-settings-sku.php:
|
17699 |
msgid "Sequential Number Generation - By Category"
|
17700 |
msgstr ""
|
17701 |
|
17702 |
-
#: includes/settings/wcj-settings-sku.php:
|
17703 |
msgid "Enables sequential number generation by category."
|
17704 |
msgstr ""
|
17705 |
|
17706 |
-
#: includes/settings/wcj-settings-sku.php:
|
17707 |
msgid "SKU prefix."
|
17708 |
msgstr ""
|
17709 |
|
17710 |
-
#: includes/settings/wcj-settings-sku.php:
|
17711 |
msgid "Minimum Number Length"
|
17712 |
msgstr ""
|
17713 |
|
17714 |
-
#: includes/settings/wcj-settings-sku.php:
|
17715 |
msgid "Minimum length for SKU number part."
|
17716 |
msgstr ""
|
17717 |
|
17718 |
-
#: includes/settings/wcj-settings-sku.php:
|
17719 |
msgid "SKU suffix."
|
17720 |
msgstr ""
|
17721 |
|
17722 |
-
#: includes/settings/wcj-settings-sku.php:
|
17723 |
msgid "Attributes Separator"
|
17724 |
msgstr ""
|
17725 |
|
17726 |
-
#: includes/settings/wcj-settings-sku.php:
|
17727 |
#, php-format
|
17728 |
msgid "Used in %s, %s, %s and %s."
|
17729 |
msgstr ""
|
17730 |
|
17731 |
-
#: includes/settings/wcj-settings-sku.php:
|
17732 |
msgid "Characters Case"
|
17733 |
msgstr ""
|
17734 |
|
17735 |
-
#: includes/settings/wcj-settings-sku.php:
|
17736 |
msgid "Original (no changes)"
|
17737 |
msgstr ""
|
17738 |
|
17739 |
-
#: includes/settings/wcj-settings-sku.php:
|
17740 |
msgid "Convert to lowercase"
|
17741 |
msgstr ""
|
17742 |
|
17743 |
-
#: includes/settings/wcj-settings-sku.php:
|
17744 |
msgid "Convert to uppercase"
|
17745 |
msgstr ""
|
17746 |
|
17747 |
-
#: includes/settings/wcj-settings-sku.php:
|
17748 |
msgid "SKU template."
|
17749 |
msgstr ""
|
17750 |
|
17751 |
-
#: includes/settings/wcj-settings-sku.php:
|
17752 |
#, php-format
|
17753 |
msgid "You can also use shortcodes here, e.g.: %s etc."
|
17754 |
msgstr ""
|
17755 |
|
17756 |
-
#: includes/settings/wcj-settings-sku.php:
|
17757 |
msgid "Variable Products Variations"
|
17758 |
msgstr ""
|
17759 |
|
17760 |
-
#: includes/settings/wcj-settings-sku.php:
|
17761 |
msgid ""
|
17762 |
"SKU generation for variations. Please note, that if \"Generate SKU for New "
|
17763 |
"Products Only on First Publish\" option below is not checked, then on new "
|
@@ -17766,136 +17827,185 @@ msgid ""
|
|
17766 |
"\"Autogenerate SKUs\" tool manually."
|
17767 |
msgstr ""
|
17768 |
|
17769 |
-
#: includes/settings/wcj-settings-sku.php:
|
17770 |
msgid ""
|
17771 |
"Possible values: SKU same as parent's product; Generate different SKU for "
|
17772 |
"each variation; SKU same as parent's product + variation letter suffix."
|
17773 |
msgstr ""
|
17774 |
|
17775 |
-
#: includes/settings/wcj-settings-sku.php:
|
17776 |
msgid "SKU same as parent's product"
|
17777 |
msgstr ""
|
17778 |
|
17779 |
-
#: includes/settings/wcj-settings-sku.php:
|
17780 |
msgid "Generate different SKU for each variation"
|
17781 |
msgstr ""
|
17782 |
|
17783 |
-
#: includes/settings/wcj-settings-sku.php:
|
17784 |
msgid "SKU same as parent's product + variation letter suffix"
|
17785 |
msgstr ""
|
17786 |
|
17787 |
-
#: includes/settings/wcj-settings-sku.php:
|
17788 |
-
msgid "
|
|
|
|
|
|
|
|
|
17789 |
msgstr ""
|
17790 |
|
17791 |
#: includes/settings/wcj-settings-sku.php:154
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17792 |
msgid "Multiple Categories"
|
17793 |
msgstr ""
|
17794 |
|
17795 |
-
#: includes/settings/wcj-settings-sku.php:
|
17796 |
msgid ""
|
17797 |
"This options defines how to handle category prefixes and suffixes, if "
|
17798 |
"product has multiple categories."
|
17799 |
msgstr ""
|
17800 |
|
17801 |
-
#: includes/settings/wcj-settings-sku.php:
|
17802 |
msgid "Use first category"
|
17803 |
msgstr ""
|
17804 |
|
17805 |
-
#: includes/settings/wcj-settings-sku.php:
|
17806 |
msgid "\"Glue\" categories"
|
17807 |
msgstr ""
|
17808 |
|
17809 |
-
#: includes/settings/wcj-settings-sku.php:
|
17810 |
msgid "Category separator (i.e. \"glue\")"
|
17811 |
msgstr ""
|
17812 |
|
17813 |
-
#: includes/settings/wcj-settings-sku.php:
|
17814 |
msgid "Ignored if \"Use first category\" is selected above."
|
17815 |
msgstr ""
|
17816 |
|
17817 |
-
#: includes/settings/wcj-settings-sku.php:
|
17818 |
msgid "Counter (Sequential)"
|
17819 |
msgstr ""
|
17820 |
|
17821 |
-
#: includes/settings/wcj-settings-sku.php:
|
17822 |
msgid "Automatically Generate SKU for New Products"
|
17823 |
msgstr ""
|
17824 |
|
17825 |
-
#: includes/settings/wcj-settings-sku.php:
|
17826 |
msgid "Alternatively you can use Autogenerate SKUs tool."
|
17827 |
msgstr ""
|
17828 |
|
17829 |
-
#: includes/settings/wcj-settings-sku.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17830 |
msgid "Generate SKU for New Products Only on First Publish"
|
17831 |
msgstr ""
|
17832 |
|
17833 |
-
#: includes/settings/wcj-settings-sku.php:
|
17834 |
msgid ""
|
17835 |
"This is important if, for example, you are using category prefix and don't "
|
17836 |
"want SKU generated too early, before you set the category."
|
17837 |
msgstr ""
|
17838 |
|
17839 |
-
#: includes/settings/wcj-settings-sku.php:
|
17840 |
msgid "Allow Duplicate SKUs"
|
17841 |
msgstr ""
|
17842 |
|
17843 |
-
#: includes/settings/wcj-settings-sku.php:
|
17844 |
msgid ""
|
17845 |
"If you wish to set SKUs manually, and you need to have same SKUs for "
|
17846 |
"different products, you can enable allow duplicate SKUs option here (which "
|
17847 |
"is disabled in WooCommerce by default)."
|
17848 |
msgstr ""
|
17849 |
|
17850 |
-
#: includes/settings/wcj-settings-sku.php:
|
17851 |
msgid "Search by SKU"
|
17852 |
msgstr ""
|
17853 |
|
17854 |
-
#: includes/settings/wcj-settings-sku.php:
|
17855 |
msgid "Add product searching by SKU on frontend."
|
17856 |
msgstr ""
|
17857 |
|
17858 |
-
#: includes/settings/wcj-settings-sku.php:
|
17859 |
msgid "Advanced: Search by SKU Hook"
|
17860 |
msgstr ""
|
17861 |
|
17862 |
-
#: includes/settings/wcj-settings-sku.php:
|
17863 |
msgid ""
|
17864 |
"If you are experiencing any issues with searching by SKU, try changing this "
|
17865 |
"option."
|
17866 |
msgstr ""
|
17867 |
|
17868 |
-
#: includes/settings/wcj-settings-sku.php:
|
17869 |
msgid "Generate SKUs Only for Products with Empty SKU"
|
17870 |
msgstr ""
|
17871 |
|
17872 |
-
#: includes/settings/wcj-settings-sku.php:
|
17873 |
msgid ""
|
17874 |
"This may help if you are going to use Autogenerate SKUs tool, but don't want "
|
17875 |
"to change your existing SKUs."
|
17876 |
msgstr ""
|
17877 |
|
17878 |
-
#: includes/settings/wcj-settings-sku.php:
|
17879 |
msgid "Add SKU to Customer Emails"
|
17880 |
msgstr ""
|
17881 |
|
17882 |
-
#: includes/settings/wcj-settings-sku.php:
|
17883 |
msgid "Adds product SKU to customer's emails."
|
17884 |
msgstr ""
|
17885 |
|
17886 |
-
#: includes/settings/wcj-settings-sku.php:
|
17887 |
msgid "Remove SKU from Admin Emails"
|
17888 |
msgstr ""
|
17889 |
|
17890 |
-
#: includes/settings/wcj-settings-sku.php:
|
17891 |
msgid "Removes product SKU from admin's emails."
|
17892 |
msgstr ""
|
17893 |
|
17894 |
-
#: includes/settings/wcj-settings-sku.php:
|
17895 |
msgid "Disable SKUs"
|
17896 |
msgstr ""
|
17897 |
|
17898 |
-
#: includes/settings/wcj-settings-sku.php:
|
17899 |
msgid ""
|
17900 |
"Enable this option if you are not going to use SKUs in your shop at all."
|
17901 |
msgstr ""
|
@@ -18422,92 +18532,96 @@ msgstr ""
|
|
18422 |
msgid "Automatically add coupon's products to the cart"
|
18423 |
msgstr ""
|
18424 |
|
18425 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18426 |
#, php-format
|
18427 |
msgid "If you want to display prices table on frontend, use %s shortcode."
|
18428 |
msgstr ""
|
18429 |
|
18430 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18431 |
msgid "Enable per Product"
|
18432 |
msgstr ""
|
18433 |
|
18434 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18435 |
msgid "Quantity Calculation"
|
18436 |
msgstr ""
|
18437 |
|
18438 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18439 |
msgid "Product quantity"
|
18440 |
msgstr ""
|
18441 |
|
18442 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18443 |
msgid "Total cart quantity (wholesale products only)"
|
18444 |
msgstr ""
|
18445 |
|
18446 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18447 |
msgid "Total cart quantity"
|
18448 |
msgstr ""
|
18449 |
|
18450 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18451 |
msgid "Exclusive Use Only"
|
18452 |
msgstr ""
|
18453 |
|
18454 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18455 |
msgid "Apply wholesale discount only if no other cart discounts were applied."
|
18456 |
msgstr ""
|
18457 |
|
18458 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18459 |
msgid "Round Single Product Price"
|
18460 |
msgstr ""
|
18461 |
|
18462 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18463 |
msgid ""
|
18464 |
"If enabled will round single product price with precision set in WooCommerce "
|
18465 |
"> Settings > General > Number of decimals."
|
18466 |
msgstr ""
|
18467 |
|
18468 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18469 |
msgid "Discount Info on Cart Page"
|
18470 |
msgstr ""
|
18471 |
|
18472 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18473 |
msgid "If show discount info on cart page is enabled, set format here."
|
18474 |
msgstr ""
|
18475 |
|
18476 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18477 |
msgid "Disable wholesale pricing for products with \"Price Changes\""
|
18478 |
msgstr ""
|
18479 |
|
18480 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18481 |
-
msgid "
|
18482 |
msgstr ""
|
18483 |
|
18484 |
#: includes/settings/wcj-settings-wholesale-price.php:136
|
18485 |
-
|
|
|
|
|
|
|
|
|
18486 |
msgid "Number of Levels"
|
18487 |
msgstr ""
|
18488 |
|
18489 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18490 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18491 |
msgid "Min Quantity"
|
18492 |
msgstr ""
|
18493 |
|
18494 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18495 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18496 |
msgid "Minimum quantity to apply discount"
|
18497 |
msgstr ""
|
18498 |
|
18499 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18500 |
msgid "Additional User Roles Options"
|
18501 |
msgstr ""
|
18502 |
|
18503 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18504 |
msgid ""
|
18505 |
"If you want to set different wholesale pricing options for different user "
|
18506 |
"roles, fill this section. Please note that you can also use Booster's "
|
18507 |
"\"Price based on User Role\" module without filling this section."
|
18508 |
msgstr ""
|
18509 |
|
18510 |
-
#: includes/settings/wcj-settings-wholesale-price.php:
|
18511 |
msgid "User Roles Settings"
|
18512 |
msgstr ""
|
18513 |
|
@@ -18925,10 +19039,6 @@ msgstr ""
|
|
18925 |
msgid "Link list"
|
18926 |
msgstr ""
|
18927 |
|
18928 |
-
#: includes/widgets/class-wcj-widget-multicurrency.php:88
|
18929 |
-
msgid "Form Method"
|
18930 |
-
msgstr ""
|
18931 |
-
|
18932 |
#: includes/widgets/class-wcj-widget-multicurrency.php:89
|
18933 |
msgid "HTML form method for \"Drop down\" and \"Radio list\" types."
|
18934 |
msgstr ""
|
43 |
#: includes/class-wcj-payment-gateways.php:91
|
44 |
#: includes/class-wcj-track-users.php:163
|
45 |
#: includes/class-wcj-track-users.php:251
|
46 |
+
#: includes/classes/class-wcj-module.php:532
|
47 |
+
#: includes/classes/class-wcj-module.php:732
|
48 |
#: includes/settings/wcj-settings-price-by-country.php:178
|
49 |
msgid "Booster"
|
50 |
msgstr ""
|
187 |
|
188 |
#: includes/admin/class-wc-settings-jetpack.php:416
|
189 |
#: includes/class-wcj-admin-bar.php:172
|
190 |
+
#: includes/classes/class-wcj-module.php:872
|
191 |
msgid "Documentation"
|
192 |
msgstr ""
|
193 |
|
242 |
|
243 |
#: includes/admin/class-wc-settings-jetpack.php:486
|
244 |
#: includes/class-wcj-global-discount.php:27
|
245 |
+
#: includes/settings/wcj-settings-product-addons.php:254
|
246 |
msgid "Global Discount"
|
247 |
msgstr ""
|
248 |
|
515 |
|
516 |
#: includes/class-wcj-admin-bar.php:245 includes/class-wcj-admin-bar.php:288
|
517 |
#: includes/class-wcj-admin-bar.php:632
|
518 |
+
#: includes/classes/class-wcj-module.php:705
|
519 |
#: includes/settings/wcj-settings-wpml.php:82
|
520 |
msgid "Tools"
|
521 |
msgstr ""
|
652 |
|
653 |
#: includes/class-wcj-admin-bar.php:478
|
654 |
#: includes/class-wcj-product-bulk-price-converter.php:149
|
655 |
+
#: includes/class-wcj-sku.php:669
|
656 |
#: includes/export/class-wcj-fields-helper.php:318
|
657 |
#: includes/settings/wcj-settings-product-by-user.php:19
|
658 |
#: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:182
|
716 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:193
|
717 |
#: includes/settings/wcj-settings-checkout-custom-info.php:57
|
718 |
#: includes/settings/wcj-settings-left-to-free-shipping.php:115
|
719 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:45
|
720 |
msgid "Shipping"
|
721 |
msgstr ""
|
722 |
|
886 |
#: includes/class-wcj-admin-tools.php:265
|
887 |
#: includes/class-wcj-product-bulk-meta-editor.php:339
|
888 |
#: includes/class-wcj-product-bulk-price-converter.php:148
|
889 |
+
#: includes/class-wcj-sku.php:668
|
890 |
#: includes/reports/wcj-class-reports-sales.php:197
|
891 |
#: includes/reports/wcj-class-reports-stock.php:269
|
892 |
msgid "Product"
|
1102 |
#: includes/class-wcj-checkout-files-upload.php:746
|
1103 |
#: includes/class-wcj-checkout-files-upload.php:747
|
1104 |
#: includes/settings/wcj-settings-checkout-files-upload.php:103
|
1105 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:77
|
1106 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:85
|
1107 |
#: includes/settings/wcj-settings-product-open-pricing.php:166
|
1108 |
+
#: includes/settings/wcj-settings-sku.php:317
|
1109 |
#: includes/settings/wcj-settings-sorting.php:144
|
1110 |
#: includes/settings/wcj-settings-stock.php:206
|
1111 |
msgid "Remove"
|
1869 |
msgstr ""
|
1870 |
|
1871 |
#: includes/class-wcj-general.php:218 includes/class-wcj-general.php:233
|
1872 |
+
#: includes/class-wcj-sku.php:667
|
1873 |
#: includes/reports/wcj-class-reports-sales.php:196
|
1874 |
#: includes/settings/wcj-settings-cross-sells.php:43
|
1875 |
#: includes/settings/wcj-settings-order-numbers.php:150
|
1894 |
|
1895 |
#: includes/class-wcj-general.php:218
|
1896 |
#: includes/class-wcj-product-by-user.php:197
|
1897 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:114
|
1898 |
#: includes/tools/class-wcj-order-statuses-tool.php:145
|
1899 |
#: includes/tools/class-wcj-order-statuses-tool.php:221
|
1900 |
msgid "Actions"
|
1937 |
#: includes/settings/wcj-settings-order-min-amount.php:53
|
1938 |
#: includes/settings/wcj-settings-orders.php:132
|
1939 |
#: includes/settings/wcj-settings-orders.php:159
|
1940 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:139
|
1941 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:197
|
1942 |
#: includes/settings/wcj-settings-product-by-condition.php:107
|
1943 |
#: includes/settings/wcj-settings-product-by-user.php:114
|
1944 |
#: includes/settings/wcj-settings-product-open-pricing.php:123
|
1947 |
#: includes/settings/wcj-settings-purchase-data.php:154
|
1948 |
#: includes/settings/wcj-settings-purchase-data.php:173
|
1949 |
#: includes/settings/wcj-settings-purchase-data.php:180
|
1950 |
+
#: includes/settings/wcj-settings-sku.php:282
|
1951 |
+
#: includes/settings/wcj-settings-sku.php:309
|
1952 |
#: includes/shortcodes/class-wcj-shortcodes-products-add-form.php:422
|
1953 |
#: includes/tools/class-wcj-order-statuses-tool.php:236
|
1954 |
msgid "Add"
|
2057 |
msgstr ""
|
2058 |
|
2059 |
#: includes/class-wcj-multicurrency-product-base-price.php:25
|
2060 |
+
#: includes/settings/wcj-settings-product-addons.php:252
|
2061 |
msgid "Multicurrency Product Base Price"
|
2062 |
msgstr ""
|
2063 |
|
2066 |
msgstr ""
|
2067 |
|
2068 |
#: includes/class-wcj-multicurrency.php:30
|
2069 |
+
#: includes/settings/wcj-settings-product-addons.php:253
|
2070 |
msgid "Multicurrency (Currency Switcher)"
|
2071 |
msgstr ""
|
2072 |
|
2165 |
#: includes/class-wcj-product-by-user.php:206
|
2166 |
#: includes/class-wcj-purchase-data.php:94
|
2167 |
#: includes/class-wcj-track-users.php:334
|
2168 |
+
#: includes/classes/class-wcj-module.php:841
|
2169 |
#: includes/functions/wcj-functions-general.php:189
|
2170 |
#: includes/functions/wcj-functions-html.php:117
|
2171 |
#: includes/reports/wcj-class-reports-monthly-sales.php:351
|
2644 |
"payment gateway."
|
2645 |
msgstr ""
|
2646 |
|
2647 |
+
#: includes/class-wcj-payment-gateways-min-max.php:32
|
2648 |
msgid "Gateways Min/Max Amounts"
|
2649 |
msgstr ""
|
2650 |
|
2651 |
+
#: includes/class-wcj-payment-gateways-min-max.php:33
|
2652 |
msgid "Add min/max amounts for payment gateways to show up."
|
2653 |
msgstr ""
|
2654 |
|
2655 |
+
#: includes/class-wcj-payment-gateways-min-max.php:87
|
2656 |
#: includes/settings/wcj-settings-payment-gateways-min-max.php:37
|
2657 |
msgid "Minimum amount for %gateway_title% is %min_amount%"
|
2658 |
msgstr ""
|
2659 |
|
2660 |
+
#: includes/class-wcj-payment-gateways-min-max.php:88
|
2661 |
#: includes/settings/wcj-settings-payment-gateways-min-max.php:45
|
2662 |
msgid "Maximum amount for %gateway_title% is %max_amount%"
|
2663 |
msgstr ""
|
2784 |
msgid "Display products prices by user roles."
|
2785 |
msgstr ""
|
2786 |
|
2787 |
+
#: includes/class-wcj-price-by-user-role.php:103
|
2788 |
msgid "user roles & variations"
|
2789 |
msgstr ""
|
2790 |
|
2791 |
+
#: includes/class-wcj-price-by-user-role.php:107
|
2792 |
msgid "variations"
|
2793 |
msgstr ""
|
2794 |
|
2795 |
+
#: includes/class-wcj-price-by-user-role.php:111
|
2796 |
msgid "user roles"
|
2797 |
msgstr ""
|
2798 |
|
2799 |
+
#: includes/class-wcj-price-by-user-role.php:124
|
2800 |
#, php-format
|
2801 |
msgid "Copy price to all %s"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
+
#: includes/class-wcj-price-by-user-role.php:204
|
2805 |
msgid ""
|
2806 |
"Booster: Free plugin's version is limited to only one price by user role per "
|
2807 |
"products settings product enabled at a time. You will need to get <a href="
|
2849 |
#: includes/class-wcj-product-info.php:235
|
2850 |
#: includes/class-wcj-shipping-by-products.php:195
|
2851 |
#: includes/class-wcj-shipping-options.php:121
|
2852 |
+
#: includes/classes/class-wcj-module.php:151
|
2853 |
+
#: includes/classes/class-wcj-module.php:172
|
2854 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-add-to-cart.php:68
|
2855 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-addons.php:73
|
2856 |
#: includes/settings/meta-box/wcj-settings-meta-box-related-products.php:19
|
2914 |
#: includes/settings/wcj-settings-general.php:73
|
2915 |
#: includes/settings/wcj-settings-general.php:146
|
2916 |
#: includes/settings/wcj-settings-general.php:197
|
2917 |
+
#: includes/settings/wcj-settings-global-discount.php:57
|
2918 |
+
#: includes/settings/wcj-settings-global-discount.php:186
|
2919 |
#: includes/settings/wcj-settings-left-to-free-shipping.php:28
|
2920 |
#: includes/settings/wcj-settings-left-to-free-shipping.php:57
|
2921 |
#: includes/settings/wcj-settings-left-to-free-shipping.php:91
|
2971 |
#: includes/settings/wcj-settings-price-by-country.php:106
|
2972 |
#: includes/settings/wcj-settings-price-by-country.php:133
|
2973 |
#: includes/settings/wcj-settings-price-by-country.php:142
|
2974 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:19
|
2975 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:46
|
|
|
2976 |
#: includes/settings/wcj-settings-price-formats.php:21
|
2977 |
#: includes/settings/wcj-settings-price-labels.php:23
|
2978 |
#: includes/settings/wcj-settings-product-add-to-cart.php:25
|
2990 |
#: includes/settings/wcj-settings-product-addons.php:50
|
2991 |
#: includes/settings/wcj-settings-product-addons.php:74
|
2992 |
#: includes/settings/wcj-settings-product-addons.php:179
|
2993 |
+
#: includes/settings/wcj-settings-product-addons.php:266
|
2994 |
+
#: includes/settings/wcj-settings-product-addons.php:274
|
2995 |
#: includes/settings/wcj-settings-product-bookings.php:107
|
2996 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:21
|
2997 |
#: includes/settings/wcj-settings-product-bulk-meta-editor.php:29
|
3047 |
#: includes/settings/wcj-settings-shipping-time.php:31
|
3048 |
#: includes/settings/wcj-settings-shipping-time.php:40
|
3049 |
#: includes/settings/wcj-settings-shipping.php:24
|
3050 |
+
#: includes/settings/wcj-settings-sku.php:52
|
3051 |
+
#: includes/settings/wcj-settings-sku.php:250
|
3052 |
+
#: includes/settings/wcj-settings-sku.php:258
|
3053 |
+
#: includes/settings/wcj-settings-sku.php:266
|
3054 |
+
#: includes/settings/wcj-settings-sku.php:274
|
3055 |
+
#: includes/settings/wcj-settings-sku.php:301
|
3056 |
#: includes/settings/wcj-settings-stock.php:27
|
3057 |
#: includes/settings/wcj-settings-stock.php:64
|
3058 |
#: includes/settings/wcj-settings-stock.php:94
|
3061 |
#: includes/settings/wcj-settings-stock.php:154
|
3062 |
#: includes/settings/wcj-settings-track-users.php:47
|
3063 |
#: includes/settings/wcj-settings-upsells.php:81
|
3064 |
+
#: includes/settings/wcj-settings-wholesale-price.php:27
|
3065 |
+
#: includes/settings/wcj-settings-wholesale-price.php:45
|
3066 |
+
#: includes/settings/wcj-settings-wholesale-price.php:54
|
3067 |
#: includes/settings/wcj-settings-wpml.php:28
|
3068 |
#: includes/settings/wcj-settings-wpml.php:35
|
3069 |
#: includes/settings/wcj-settings-wpml.php:53
|
3167 |
msgid "Add (paid/free/discount) addons to products."
|
3168 |
msgstr ""
|
3169 |
|
3170 |
+
#: includes/class-wcj-product-addons.php:283
|
3171 |
msgid "Some of the required addons are not selected!"
|
3172 |
msgstr ""
|
3173 |
|
3174 |
+
#: includes/class-wcj-product-addons.php:298
|
3175 |
msgid ""
|
3176 |
"Booster: Free plugin's version is limited to only three products with per "
|
3177 |
"product addons enabled at a time. You will need to get <a href=\"https://"
|
3284 |
#: includes/class-wcj-product-bulk-meta-editor.php:232
|
3285 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:19
|
3286 |
#: includes/settings/meta-box/wcj-settings-meta-box-add-to-cart-button-visibility.php:38
|
3287 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:69
|
3288 |
#: includes/settings/wcj-settings-product-msrp.php:31
|
3289 |
+
#: includes/settings/wcj-settings-wholesale-price.php:61
|
3290 |
msgid "Show"
|
3291 |
msgstr ""
|
3292 |
|
3309 |
#: includes/settings/wcj-settings-export.php:91
|
3310 |
#: includes/settings/wcj-settings-export.php:162
|
3311 |
#: includes/settings/wcj-settings-export.php:241
|
3312 |
+
#: includes/settings/wcj-settings-global-discount.php:74
|
3313 |
msgid "Value"
|
3314 |
msgstr ""
|
3315 |
|
3418 |
msgstr ""
|
3419 |
|
3420 |
#: includes/class-wcj-product-bulk-price-converter.php:264
|
3421 |
+
#: includes/settings/wcj-settings-global-discount.php:89
|
3422 |
msgid "None"
|
3423 |
msgstr ""
|
3424 |
|
3717 |
#: includes/settings/wcj-settings-custom-php.php:16
|
3718 |
#: includes/settings/wcj-settings-empty-cart.php:14
|
3719 |
#: includes/settings/wcj-settings-eu-vat-number.php:15
|
3720 |
+
#: includes/settings/wcj-settings-global-discount.php:24
|
3721 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:17
|
3722 |
#: includes/settings/wcj-settings-payment-gateways-currency.php:63
|
3723 |
#: includes/settings/wcj-settings-payment-gateways-icons.php:14
|
3724 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:13
|
3725 |
#: includes/settings/wcj-settings-product-addons.php:173
|
3726 |
#: includes/settings/wcj-settings-product-bookings.php:86
|
3727 |
#: includes/settings/wcj-settings-product-by-user.php:59
|
3733 |
#: includes/settings/wcj-settings-track-users.php:14
|
3734 |
#: includes/settings/wcj-settings-upsells.php:14
|
3735 |
#: includes/settings/wcj-settings-url-coupons.php:14
|
3736 |
+
#: includes/settings/wcj-settings-wholesale-price.php:18
|
3737 |
msgid "Options"
|
3738 |
msgstr ""
|
3739 |
|
4060 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:32
|
4061 |
#: includes/settings/wcj-settings-admin-orders-list.php:84
|
4062 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:265
|
4063 |
+
#: includes/settings/wcj-settings-product-addons.php:242
|
4064 |
#: includes/settings/wcj-settings-related-products.php:176
|
4065 |
#: includes/widgets/class-wcj-widget-country-switcher.php:82
|
4066 |
msgid "No"
|
4098 |
#: includes/settings/wcj-settings-eu-vat-number.php:124
|
4099 |
#: includes/settings/wcj-settings-eu-vat-number.php:135
|
4100 |
#: includes/settings/wcj-settings-eu-vat-number.php:154
|
4101 |
+
#: includes/settings/wcj-settings-product-addons.php:241
|
4102 |
#: includes/settings/wcj-settings-related-products.php:175
|
4103 |
#: includes/widgets/class-wcj-widget-country-switcher.php:83
|
4104 |
msgid "Yes"
|
4515 |
#: includes/class-wcj-shipping-by-user-role.php:33
|
4516 |
#: includes/settings/wcj-settings-multicurrency.php:261
|
4517 |
#: includes/settings/wcj-settings-order-min-amount.php:104
|
4518 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:124
|
4519 |
#, php-format
|
4520 |
msgid ""
|
4521 |
"Custom roles can be added via \"Add/Manage Custom Roles\" tool in Booster's "
|
4626 |
msgid "Add multiple custom shipping methods to WooCommerce."
|
4627 |
msgstr ""
|
4628 |
|
4629 |
+
#: includes/class-wcj-sku.php:23 includes/class-wcj-sku.php:670
|
4630 |
#: includes/export/class-wcj-fields-helper.php:283
|
4631 |
msgid "SKU"
|
4632 |
msgstr ""
|
4643 |
msgid "The tool generates and sets product SKUs for existing products."
|
4644 |
msgstr ""
|
4645 |
|
4646 |
+
#: includes/class-wcj-sku.php:671
|
4647 |
msgid "Old SKU"
|
4648 |
msgstr ""
|
4649 |
|
4650 |
+
#: includes/class-wcj-sku.php:677
|
4651 |
msgid "SKUs generated and set successfully!"
|
4652 |
msgstr ""
|
4653 |
|
4654 |
+
#: includes/class-wcj-sku.php:687
|
4655 |
msgid "Preview SKUs"
|
4656 |
msgstr ""
|
4657 |
|
4658 |
+
#: includes/class-wcj-sku.php:689
|
4659 |
msgid "Set SKUs"
|
4660 |
msgstr ""
|
4661 |
|
4662 |
+
#: includes/class-wcj-sku.php:692
|
4663 |
msgid ""
|
4664 |
"You can optionally limit affected products by main product's ID (set option "
|
4665 |
"to zero to ignore):"
|
4666 |
msgstr ""
|
4667 |
|
4668 |
+
#: includes/class-wcj-sku.php:694
|
4669 |
msgid "Min ID"
|
4670 |
msgstr ""
|
4671 |
|
4672 |
+
#: includes/class-wcj-sku.php:697
|
4673 |
msgid "Max ID"
|
4674 |
msgstr ""
|
4675 |
|
4843 |
msgid "File wpml-config.xml successfully regenerated!"
|
4844 |
msgstr ""
|
4845 |
|
4846 |
+
#: includes/classes/class-wcj-module-product-by-condition.php:137
|
4847 |
msgid "— No change —"
|
4848 |
msgstr ""
|
4849 |
|
4850 |
+
#: includes/classes/class-wcj-module-product-by-condition.php:144
|
4851 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-by-condition.php:29
|
4852 |
msgid "Visible"
|
4853 |
msgstr ""
|
4854 |
|
4855 |
+
#: includes/classes/class-wcj-module-product-by-condition.php:153
|
4856 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-by-condition.php:41
|
4857 |
msgid "Invisible"
|
4858 |
msgstr ""
|
4859 |
|
4860 |
+
#: includes/classes/class-wcj-module.php:150
|
4861 |
+
msgid "WPML: Get Terms in All Languages"
|
4862 |
+
msgstr ""
|
4863 |
+
|
4864 |
+
#: includes/classes/class-wcj-module.php:152
|
4865 |
+
msgid "Get tags and taxonomies in all languages"
|
4866 |
+
msgstr ""
|
4867 |
+
|
4868 |
+
#: includes/classes/class-wcj-module.php:171
|
4869 |
+
msgid "WPML: Get Products in All Languages"
|
4870 |
+
msgstr ""
|
4871 |
+
|
4872 |
+
#: includes/classes/class-wcj-module.php:173
|
4873 |
+
msgid "Get products in all languages"
|
4874 |
+
msgstr ""
|
4875 |
+
|
4876 |
+
#: includes/classes/class-wcj-module.php:304
|
4877 |
#, php-format
|
4878 |
msgid ""
|
4879 |
"Booster: Free plugin's version is limited to only one \"%1$s\" product with "
|
4882 |
"\"%1$s\" products."
|
4883 |
msgstr ""
|
4884 |
|
4885 |
+
#: includes/classes/class-wcj-module.php:624
|
4886 |
#, php-format
|
4887 |
msgid "Selected: %s."
|
4888 |
msgstr ""
|
4889 |
|
4890 |
+
#: includes/classes/class-wcj-module.php:693
|
4891 |
msgid "Back to Module Settings"
|
4892 |
msgstr ""
|
4893 |
|
4894 |
+
#: includes/classes/class-wcj-module.php:711
|
4895 |
#: includes/settings/wcj-settings-wpml.php:87
|
4896 |
msgid "Module Tools"
|
4897 |
msgstr ""
|
4898 |
|
4899 |
+
#: includes/classes/class-wcj-module.php:784
|
4900 |
#: includes/settings/wcj-settings-checkout-core-fields.php:64
|
4901 |
msgid "enabled"
|
4902 |
msgstr ""
|
4903 |
|
4904 |
+
#: includes/classes/class-wcj-module.php:785
|
4905 |
msgid "disabled"
|
4906 |
msgstr ""
|
4907 |
|
4908 |
+
#: includes/classes/class-wcj-module.php:793
|
4909 |
#: includes/settings/wcj-settings-product-tabs.php:172
|
4910 |
#: includes/settings/wcj-settings-product-tabs.php:184
|
4911 |
#: includes/settings/wcj-settings-product-tabs.php:196
|
4913 |
msgid "Deprecated"
|
4914 |
msgstr ""
|
4915 |
|
4916 |
+
#: includes/classes/class-wcj-module.php:831
|
4917 |
msgid "Reset Settings"
|
4918 |
msgstr ""
|
4919 |
|
4920 |
+
#: includes/classes/class-wcj-module.php:837
|
4921 |
msgid "Reset Module to Default Settings"
|
4922 |
msgstr ""
|
4923 |
|
4924 |
+
#: includes/classes/class-wcj-module.php:838
|
4925 |
msgid "Reset Submodule to Default Settings"
|
4926 |
msgstr ""
|
4927 |
|
4928 |
+
#: includes/classes/class-wcj-module.php:842
|
4929 |
msgid "Reset settings"
|
4930 |
msgstr ""
|
4931 |
|
4932 |
+
#: includes/classes/class-wcj-module.php:876
|
4933 |
msgid "Module Options"
|
4934 |
msgstr ""
|
4935 |
|
4936 |
+
#: includes/classes/class-wcj-module.php:883
|
4937 |
msgid "Enable Module"
|
4938 |
msgstr ""
|
4939 |
|
4940 |
+
#: includes/classes/class-wcj-pdf-invoice.php:90
|
4941 |
#: includes/settings/wcj-settings-pdf-invoicing-header.php:61
|
4942 |
msgid "Company Name"
|
4943 |
msgstr ""
|
4944 |
|
4945 |
+
#: includes/classes/class-wcj-pdf-invoice.php:259
|
4946 |
#: includes/functions/wcj-functions-general.php:145
|
4947 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:245
|
4948 |
msgid "Unexpected error"
|
5504 |
#: includes/settings/wcj-settings-export.php:81
|
5505 |
#: includes/settings/wcj-settings-export.php:149
|
5506 |
#: includes/settings/wcj-settings-export.php:231
|
5507 |
+
#: includes/settings/wcj-settings-global-discount.php:63
|
5508 |
#: includes/settings/wcj-settings-product-addons.php:80
|
5509 |
#: includes/settings/wcj-settings-purchase-data.php:84
|
5510 |
#: includes/settings/wcj-settings-shipping-options.php:77
|
7177 |
#: includes/settings/wcj-settings-export.php:70
|
7178 |
#: includes/settings/wcj-settings-export.php:138
|
7179 |
#: includes/settings/wcj-settings-export.php:220
|
7180 |
+
#: includes/settings/wcj-settings-global-discount.php:55
|
7181 |
#: includes/settings/wcj-settings-product-by-user.php:149
|
7182 |
#: includes/settings/wcj-settings-products-xml.php:76
|
7183 |
msgid "Enabled"
|
7616 |
#: includes/settings/wcj-settings-multicurrency.php:162
|
7617 |
#: includes/settings/wcj-settings-order-min-amount.php:69
|
7618 |
#: includes/settings/wcj-settings-price-by-country.php:160
|
7619 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:97
|
7620 |
+
#: includes/settings/wcj-settings-product-addons.php:230
|
7621 |
msgid "Advanced"
|
7622 |
msgstr ""
|
7623 |
|
8181 |
#: includes/settings/wcj-settings-my-account.php:209
|
8182 |
#: includes/settings/wcj-settings-order-custom-statuses.php:63
|
8183 |
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:48
|
8184 |
+
#: includes/settings/wcj-settings-product-addons.php:291
|
8185 |
#: includes/settings/wcj-settings-product-bookings.php:100
|
8186 |
#: includes/settings/wcj-settings-product-images.php:20
|
8187 |
#: includes/settings/wcj-settings-product-images.php:27
|
8300 |
|
8301 |
#: includes/settings/meta-box/wcj-settings-meta-box-multicurrency.php:63
|
8302 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:136
|
8303 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:146
|
8304 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:215
|
8305 |
msgid "Make Empty Price"
|
8306 |
msgstr ""
|
8307 |
|
8402 |
msgstr ""
|
8403 |
|
8404 |
#: includes/settings/meta-box/wcj-settings-meta-box-price-by-user-role.php:113
|
8405 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:32
|
8406 |
msgid "Multiplier"
|
8407 |
msgstr ""
|
8408 |
|
8445 |
#: includes/settings/wcj-settings-general.php:122
|
8446 |
#: includes/settings/wcj-settings-general.php:130
|
8447 |
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:84
|
8448 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:123
|
8449 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:55
|
8450 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:130
|
8451 |
#: includes/settings/wcj-settings-product-add-to-cart.php:131
|
8452 |
#: includes/settings/wcj-settings-product-open-pricing.php:95
|
8453 |
+
#: includes/settings/wcj-settings-sku.php:325
|
8454 |
msgid "Disable"
|
8455 |
msgstr ""
|
8456 |
|
8575 |
msgid "If this field is filled in, monthly settings fields are ignored."
|
8576 |
msgstr ""
|
8577 |
|
8578 |
+
#: includes/settings/meta-box/wcj-settings-meta-box-product-by-date.php:34
|
8579 |
+
msgid ""
|
8580 |
+
"If you are not using english, please set some numeric format like m/d/Y on "
|
8581 |
+
"\"Direct Date Admin Input Date Format\" option"
|
8582 |
+
msgstr ""
|
8583 |
+
|
8584 |
#: includes/settings/meta-box/wcj-settings-meta-box-product-images.php:17
|
8585 |
msgid "Replace image with custom HTML on single product page"
|
8586 |
msgstr ""
|
8697 |
|
8698 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:18
|
8699 |
#: includes/settings/wcj-settings-checkout-fees.php:72
|
8700 |
+
#: includes/settings/wcj-settings-global-discount.php:69
|
8701 |
#: includes/settings/wcj-settings-payment-gateways-fees.php:38
|
8702 |
#: includes/settings/wcj-settings-purchase-data.php:89
|
8703 |
+
#: includes/settings/wcj-settings-wholesale-price.php:80
|
8704 |
msgid "Percent"
|
8705 |
msgstr ""
|
8706 |
|
8707 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:19
|
8708 |
#: includes/settings/wcj-settings-checkout-fees.php:71
|
8709 |
+
#: includes/settings/wcj-settings-global-discount.php:70
|
8710 |
#: includes/settings/wcj-settings-payment-gateways-fees.php:37
|
8711 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:31
|
8712 |
#: includes/settings/wcj-settings-purchase-data.php:88
|
8713 |
+
#: includes/settings/wcj-settings-wholesale-price.php:81
|
8714 |
msgid "Fixed"
|
8715 |
msgstr ""
|
8716 |
|
8723 |
msgstr ""
|
8724 |
|
8725 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:41
|
8726 |
+
#: includes/settings/wcj-settings-wholesale-price.php:75
|
8727 |
msgid "Discount Type"
|
8728 |
msgstr ""
|
8729 |
|
8753 |
|
8754 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:72
|
8755 |
#: includes/settings/meta-box/wcj-settings-meta-box-wholesale-price.php:108
|
8756 |
+
#: includes/settings/wcj-settings-wholesale-price.php:163
|
8757 |
+
#: includes/settings/wcj-settings-wholesale-price.php:164
|
8758 |
+
#: includes/settings/wcj-settings-wholesale-price.php:220
|
8759 |
+
#: includes/settings/wcj-settings-wholesale-price.php:221
|
8760 |
msgid "Discount"
|
8761 |
msgstr ""
|
8762 |
|
9265 |
msgstr ""
|
9266 |
|
9267 |
#: includes/settings/wcj-settings-admin-products-list.php:27
|
9268 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:191
|
9269 |
#: includes/settings/wcj-settings-shipping.php:51
|
9270 |
msgid ""
|
9271 |
"Save module's settings after changing this option to see new settings fields."
|
9885 |
msgstr ""
|
9886 |
|
9887 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:360
|
9888 |
+
#: includes/settings/wcj-settings-global-discount.php:163
|
9889 |
#: includes/settings/wcj-settings-payment-gateways-fees.php:125
|
9890 |
#: includes/settings/wcj-settings-product-addons.php:149
|
9891 |
#: includes/settings/wcj-settings-related-products.php:244
|
9897 |
msgstr ""
|
9898 |
|
9899 |
#: includes/settings/wcj-settings-checkout-custom-fields.php:369
|
9900 |
+
#: includes/settings/wcj-settings-global-discount.php:152
|
9901 |
#: includes/settings/wcj-settings-related-products.php:233
|
9902 |
msgid "Include Products"
|
9903 |
msgstr ""
|
10534 |
#: includes/settings/wcj-settings-checkout-files-upload.php:298
|
10535 |
#: includes/settings/wcj-settings-checkout-files-upload.php:352
|
10536 |
#: includes/settings/wcj-settings-checkout-files-upload.php:393
|
10537 |
+
#: includes/settings/wcj-settings-product-addons.php:363
|
10538 |
+
#: includes/settings/wcj-settings-product-addons.php:394
|
10539 |
msgid "Before"
|
10540 |
msgstr ""
|
10541 |
|
10557 |
#: includes/settings/wcj-settings-checkout-files-upload.php:321
|
10558 |
#: includes/settings/wcj-settings-checkout-files-upload.php:367
|
10559 |
#: includes/settings/wcj-settings-checkout-files-upload.php:408
|
10560 |
+
#: includes/settings/wcj-settings-product-addons.php:378
|
10561 |
+
#: includes/settings/wcj-settings-product-addons.php:409
|
10562 |
msgid "After"
|
10563 |
msgstr ""
|
10564 |
|
11600 |
msgstr ""
|
11601 |
|
11602 |
#: includes/settings/wcj-settings-export.php:20
|
11603 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:190
|
11604 |
msgid "CSV Separator"
|
11605 |
msgstr ""
|
11606 |
|
11915 |
#: includes/settings/wcj-settings-max-products-per-user.php:44
|
11916 |
#: includes/settings/wcj-settings-product-by-date.php:54
|
11917 |
#: includes/settings/wcj-settings-product-by-time.php:54
|
11918 |
+
#: includes/settings/wcj-settings-wholesale-price.php:26
|
11919 |
msgid "This will add new meta box to each product's edit page."
|
11920 |
msgstr ""
|
11921 |
|
11976 |
msgid "seconds."
|
11977 |
msgstr ""
|
11978 |
|
11979 |
+
#: includes/settings/wcj-settings-global-discount.php:29
|
11980 |
msgid "Total Groups"
|
11981 |
msgstr ""
|
11982 |
|
11983 |
+
#: includes/settings/wcj-settings-global-discount.php:33
|
11984 |
#: includes/settings/wcj-settings-product-by-user.php:138
|
11985 |
#: includes/settings/wcj-settings-products-xml.php:29
|
11986 |
#: includes/shipping/class-wc-shipping-wcj-custom.php:148
|
11987 |
msgid "Press Save changes after you change this number."
|
11988 |
msgstr ""
|
11989 |
|
11990 |
+
#: includes/settings/wcj-settings-global-discount.php:50
|
11991 |
msgid "Discount Group"
|
11992 |
msgstr ""
|
11993 |
|
11994 |
+
#: includes/settings/wcj-settings-global-discount.php:56
|
11995 |
msgid "Enabled/disables the discount group."
|
11996 |
msgstr ""
|
11997 |
|
11998 |
+
#: includes/settings/wcj-settings-global-discount.php:64
|
11999 |
msgid "Can be fixed or percent."
|
12000 |
msgstr ""
|
12001 |
|
12002 |
+
#: includes/settings/wcj-settings-global-discount.php:75
|
12003 |
msgid "Must be negative number."
|
12004 |
msgstr ""
|
12005 |
|
12006 |
+
#: includes/settings/wcj-settings-global-discount.php:82
|
12007 |
msgid "Final Correction"
|
12008 |
msgstr ""
|
12009 |
|
12010 |
+
#: includes/settings/wcj-settings-global-discount.php:83
|
12011 |
#, php-format
|
12012 |
msgid ""
|
12013 |
"Will apply selected function and coefficient to the final price, e.g.: %s."
|
12014 |
msgstr ""
|
12015 |
|
12016 |
+
#: includes/settings/wcj-settings-global-discount.php:90
|
12017 |
#: includes/settings/wcj-settings-multicurrency.php:79
|
12018 |
#: includes/settings/wcj-settings-price-by-country.php:83
|
12019 |
#: includes/settings/wcj-settings-product-price-by-formula.php:70
|
12021 |
msgid "Round"
|
12022 |
msgstr ""
|
12023 |
|
12024 |
+
#: includes/settings/wcj-settings-global-discount.php:91
|
12025 |
msgid "Ceil"
|
12026 |
msgstr ""
|
12027 |
|
12028 |
+
#: includes/settings/wcj-settings-global-discount.php:92
|
12029 |
msgid "Floor"
|
12030 |
msgstr ""
|
12031 |
|
12032 |
+
#: includes/settings/wcj-settings-global-discount.php:96
|
12033 |
msgid "Final correction coefficient"
|
12034 |
msgstr ""
|
12035 |
|
12036 |
+
#: includes/settings/wcj-settings-global-discount.php:103
|
12037 |
msgid "Product Scope"
|
12038 |
msgstr ""
|
12039 |
|
12040 |
+
#: includes/settings/wcj-settings-global-discount.php:104
|
12041 |
msgid ""
|
12042 |
"Possible values: all products, only products that are already on sale, only "
|
12043 |
"products that are not on sale."
|
12044 |
msgstr ""
|
12045 |
|
12046 |
+
#: includes/settings/wcj-settings-global-discount.php:109
|
12047 |
#: includes/settings/wcj-settings-product-add-to-cart.php:65
|
12048 |
#: includes/settings/wcj-settings-products-xml.php:207
|
12049 |
msgid "All products"
|
12050 |
msgstr ""
|
12051 |
|
12052 |
+
#: includes/settings/wcj-settings-global-discount.php:110
|
12053 |
msgid "Only products that are already on sale"
|
12054 |
msgstr ""
|
12055 |
|
12056 |
+
#: includes/settings/wcj-settings-global-discount.php:111
|
12057 |
#: includes/settings/wcj-settings-products-xml.php:209
|
12058 |
msgid "Only products that are not on sale"
|
12059 |
msgstr ""
|
12060 |
|
12061 |
+
#: includes/settings/wcj-settings-global-discount.php:115
|
12062 |
#: includes/settings/wcj-settings-related-products.php:196
|
12063 |
msgid "Include Product Categories"
|
12064 |
msgstr ""
|
12065 |
|
12066 |
+
#: includes/settings/wcj-settings-global-discount.php:116
|
12067 |
msgid ""
|
12068 |
"Set this field to apply discount to selected product categories only. Leave "
|
12069 |
"blank to apply to all products."
|
12070 |
msgstr ""
|
12071 |
|
12072 |
+
#: includes/settings/wcj-settings-global-discount.php:124
|
12073 |
#: includes/settings/wcj-settings-related-products.php:205
|
12074 |
msgid "Exclude Product Categories"
|
12075 |
msgstr ""
|
12076 |
|
12077 |
+
#: includes/settings/wcj-settings-global-discount.php:125
|
12078 |
msgid ""
|
12079 |
"Set this field to NOT apply discount to selected product categories. Leave "
|
12080 |
"blank to apply to all products."
|
12081 |
msgstr ""
|
12082 |
|
12083 |
+
#: includes/settings/wcj-settings-global-discount.php:133
|
12084 |
#: includes/settings/wcj-settings-related-products.php:214
|
12085 |
msgid "Include Product Tags"
|
12086 |
msgstr ""
|
12087 |
|
12088 |
+
#: includes/settings/wcj-settings-global-discount.php:134
|
12089 |
msgid ""
|
12090 |
"Set this field to apply discount to selected product tags only. Leave blank "
|
12091 |
"to apply to all products."
|
12092 |
msgstr ""
|
12093 |
|
12094 |
+
#: includes/settings/wcj-settings-global-discount.php:142
|
12095 |
#: includes/settings/wcj-settings-related-products.php:223
|
12096 |
msgid "Exclude Product Tags"
|
12097 |
msgstr ""
|
12098 |
|
12099 |
+
#: includes/settings/wcj-settings-global-discount.php:143
|
12100 |
msgid ""
|
12101 |
"Set this field to NOT apply discount to selected product tags. Leave blank "
|
12102 |
"to apply to all products."
|
12103 |
msgstr ""
|
12104 |
|
12105 |
+
#: includes/settings/wcj-settings-global-discount.php:153
|
12106 |
msgid ""
|
12107 |
"Set this field to apply discount to selected products only. Leave blank to "
|
12108 |
"apply to all products."
|
12109 |
msgstr ""
|
12110 |
|
12111 |
+
#: includes/settings/wcj-settings-global-discount.php:164
|
12112 |
msgid ""
|
12113 |
"Set this field to NOT apply discount to selected products. Leave blank to "
|
12114 |
"apply to all products."
|
12115 |
msgstr ""
|
12116 |
|
12117 |
+
#: includes/settings/wcj-settings-global-discount.php:180
|
12118 |
#: includes/settings/wcj-settings-product-price-by-formula.php:95
|
12119 |
msgid "Advanced Settings"
|
12120 |
msgstr ""
|
12121 |
|
12122 |
+
#: includes/settings/wcj-settings-global-discount.php:185
|
12123 |
msgid "Global Discount in Admin"
|
12124 |
msgstr ""
|
12125 |
|
12126 |
+
#: includes/settings/wcj-settings-global-discount.php:187
|
12127 |
msgid ""
|
12128 |
"This will enable \"global discount\" product pricing in backend. It will "
|
12129 |
"also affect some modules, e.g.: \"Products XML Feeds\" module."
|
12130 |
msgstr ""
|
12131 |
|
12132 |
+
#: includes/settings/wcj-settings-global-discount.php:193
|
12133 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:76
|
12134 |
#: includes/settings/wcj-settings-multicurrency.php:176
|
12135 |
#: includes/settings/wcj-settings-price-by-country.php:165
|
12136 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:102
|
12137 |
+
#: includes/settings/wcj-settings-product-addons.php:258
|
12138 |
#: includes/settings/wcj-settings-product-price-by-formula.php:100
|
12139 |
msgid "Price Filters Priority"
|
12140 |
msgstr ""
|
12141 |
|
12142 |
+
#: includes/settings/wcj-settings-global-discount.php:194
|
12143 |
#: includes/settings/wcj-settings-multicurrency-base-price.php:77
|
12144 |
#: includes/settings/wcj-settings-multicurrency.php:177
|
12145 |
#: includes/settings/wcj-settings-price-by-country.php:166
|
12146 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:103
|
12147 |
+
#: includes/settings/wcj-settings-product-addons.php:259
|
12148 |
#: includes/settings/wcj-settings-product-price-by-formula.php:101
|
12149 |
+
#: includes/settings/wcj-settings-wholesale-price.php:124
|
12150 |
msgid ""
|
12151 |
"Priority for all module's price filters. Set to zero to use default priority."
|
12152 |
msgstr ""
|
12591 |
msgstr ""
|
12592 |
|
12593 |
#: includes/settings/wcj-settings-multicurrency.php:267
|
12594 |
+
#: includes/settings/wcj-settings-wholesale-price.php:185
|
12595 |
msgid "Save settings after you change this option. Leave blank to disable."
|
12596 |
msgstr ""
|
12597 |
|
14180 |
msgid "Returns the content of output buffering instead of displaying it"
|
14181 |
msgstr ""
|
14182 |
|
14183 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:97
|
14184 |
+
msgid "Internal Encoding"
|
14185 |
+
msgstr ""
|
14186 |
+
|
14187 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:98
|
14188 |
+
msgid "Sets internal character encoding."
|
14189 |
+
msgstr ""
|
14190 |
+
|
14191 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:98
|
14192 |
+
msgid "e.g: UTF-8, iso-8859-1"
|
14193 |
+
msgstr ""
|
14194 |
+
|
14195 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:108
|
14196 |
msgid "Fonts Manager"
|
14197 |
msgstr ""
|
14198 |
|
14199 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:117
|
14200 |
msgid "Re-download"
|
14201 |
msgstr ""
|
14202 |
|
14203 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:117
|
14204 |
msgid "Download"
|
14205 |
msgstr ""
|
14206 |
|
14207 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:122
|
14208 |
msgid "Disable Fonts Download"
|
14209 |
msgstr ""
|
14210 |
|
14211 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:133
|
14212 |
msgid "General Display Options"
|
14213 |
msgstr ""
|
14214 |
|
14215 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:138
|
14216 |
msgid "Add PDF Invoices Meta Box to Admin Edit Order Page"
|
14217 |
msgstr ""
|
14218 |
|
14219 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:145
|
14220 |
msgid "Open docs in new window"
|
14221 |
msgstr ""
|
14222 |
|
14223 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:151
|
14224 |
msgid "Add editable numbers and dates"
|
14225 |
msgstr ""
|
14226 |
|
14227 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:161
|
14228 |
msgid "Report Tool Options"
|
14229 |
msgstr ""
|
14230 |
|
14231 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:166
|
14232 |
msgid "Reports Filename"
|
14233 |
msgstr ""
|
14234 |
|
14235 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:174
|
14236 |
msgid "Report Columns"
|
14237 |
msgstr ""
|
14238 |
|
14239 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:175
|
14240 |
msgid "Leave blank to show all columns."
|
14241 |
msgstr ""
|
14242 |
|
14243 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:183
|
14244 |
msgid "Tax Percent Precision"
|
14245 |
msgstr ""
|
14246 |
|
14247 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:196
|
14248 |
msgid "CSV UTF-8 BOM"
|
14249 |
msgstr ""
|
14250 |
|
14251 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:203
|
14252 |
msgid "Replace Periods with Commas in CSV Data"
|
14253 |
msgstr ""
|
14254 |
|
14255 |
+
#: includes/settings/wcj-settings-pdf-invoicing-advanced.php:204
|
14256 |
#: includes/settings/wcj-settings-product-open-pricing.php:174
|
14257 |
msgid "Replace"
|
14258 |
msgstr ""
|
14439 |
msgstr ""
|
14440 |
|
14441 |
#: includes/settings/wcj-settings-pdf-invoicing-numbering.php:41
|
14442 |
+
#: includes/settings/wcj-settings-sku.php:59
|
14443 |
+
#: includes/settings/wcj-settings-sku.php:212
|
14444 |
msgid "Prefix"
|
14445 |
msgstr ""
|
14446 |
|
14447 |
#: includes/settings/wcj-settings-pdf-invoicing-numbering.php:47
|
14448 |
+
#: includes/settings/wcj-settings-sku.php:73
|
14449 |
+
#: includes/settings/wcj-settings-sku.php:221
|
14450 |
msgid "Suffix"
|
14451 |
msgstr ""
|
14452 |
|
14453 |
#: includes/settings/wcj-settings-pdf-invoicing-numbering.php:53
|
14454 |
+
#: includes/settings/wcj-settings-sku.php:102
|
14455 |
msgid "Template"
|
14456 |
msgstr ""
|
14457 |
|
14726 |
msgstr ""
|
14727 |
|
14728 |
#: includes/settings/wcj-settings-price-by-country.php:149
|
14729 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:61
|
14730 |
msgid "Search Engine Bots"
|
14731 |
msgstr ""
|
14732 |
|
14799 |
msgid "Multiply Price by"
|
14800 |
msgstr ""
|
14801 |
|
14802 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:18
|
14803 |
msgid "Enable per Product Settings"
|
14804 |
msgstr ""
|
14805 |
|
14806 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:20
|
14807 |
msgid ""
|
14808 |
"When enabled, this will add new \"Booster: Price based on User Role\" meta "
|
14809 |
"box to each product's edit page."
|
14810 |
msgstr ""
|
14811 |
|
14812 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:26
|
14813 |
msgid "Per Product Settings Type"
|
14814 |
msgstr ""
|
14815 |
|
14816 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:36
|
14817 |
msgid "Show Roles on per Product Settings"
|
14818 |
msgstr ""
|
14819 |
|
14820 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:37
|
14821 |
msgid ""
|
14822 |
"If per product settings are enabled, you can choose which roles to show on "
|
14823 |
"product's edit page. Leave blank to show all roles."
|
14824 |
msgstr ""
|
14825 |
|
14826 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:47
|
14827 |
msgid ""
|
14828 |
"When enabled, this will apply user role multipliers to shipping calculations."
|
14829 |
msgstr ""
|
14830 |
|
14831 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:53
|
14832 |
msgid "Disable Price based on User Role for Regular Price"
|
14833 |
msgstr ""
|
14834 |
|
14835 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:54
|
14836 |
msgid ""
|
14837 |
"Disable price by user role for regular price when using multipliers (global "
|
14838 |
"or per product)."
|
14839 |
msgstr ""
|
14840 |
|
14841 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:62
|
14842 |
msgid "Disable Price based on User Role for Bots"
|
14843 |
msgstr ""
|
14844 |
|
14845 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:68
|
14846 |
msgid "Show Empty Price Variations"
|
14847 |
msgstr ""
|
14848 |
|
14849 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:70
|
14850 |
msgid ""
|
14851 |
"Show \"empty price\" variations. This will also hide out of stock messages."
|
14852 |
msgstr ""
|
14853 |
|
14854 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:76
|
14855 |
msgid "Remove Empty Price Variation Callback"
|
14856 |
msgstr ""
|
14857 |
|
14858 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:78
|
14859 |
msgid ""
|
14860 |
"Remove \"woocommerce_single_variation\" callback from "
|
14861 |
"\"woocommerce_single_variation\" hook on \"empty price\" variations."
|
14862 |
msgstr ""
|
14863 |
|
14864 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:84
|
14865 |
msgid "Remove Empty Price Add to Cart Button Callback"
|
14866 |
msgstr ""
|
14867 |
|
14868 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:86
|
14869 |
msgid ""
|
14870 |
"Remove \"woocommerce_single_variation_add_to_cart_button\" callback from "
|
14871 |
"\"woocommerce_single_variation\" hook on \"empty price\" variations."
|
14872 |
msgstr ""
|
14873 |
|
14874 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:109
|
14875 |
msgid "Price Changes"
|
14876 |
msgstr ""
|
14877 |
|
14878 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:110
|
14879 |
msgid "Disable price based on user role for products with \"Price Changes\""
|
14880 |
msgstr ""
|
14881 |
|
14882 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:111
|
14883 |
#: includes/settings/wcj-settings-product-open-pricing.php:149
|
14884 |
+
#: includes/settings/wcj-settings-wholesale-price.php:117
|
14885 |
msgid ""
|
14886 |
"Try enabling this checkbox, if you are having compatibility issues with "
|
14887 |
"other plugins."
|
14888 |
msgstr ""
|
14889 |
|
14890 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:122
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14891 |
msgid "Roles & Multipliers"
|
14892 |
msgstr ""
|
14893 |
|
14894 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:129
|
14895 |
msgid "Disable Price based on User Role for Products on Sale"
|
14896 |
msgstr ""
|
14897 |
|
14898 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:161
|
14899 |
msgid "Products Categories"
|
14900 |
msgstr ""
|
14901 |
|
14902 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:167
|
14903 |
msgid "Products Tags"
|
14904 |
msgstr ""
|
14905 |
|
14906 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:185
|
14907 |
#, php-format
|
14908 |
msgid "Price based on User Role by %s"
|
14909 |
msgstr ""
|
14910 |
|
14911 |
+
#: includes/settings/wcj-settings-price-by-user-role.php:208
|
14912 |
msgid ""
|
14913 |
"Multiplier is ignored if set to negative number (e.g.: -1). Global "
|
14914 |
"multiplier will be used instead."
|
15357 |
msgid "Set to zero to use the default priority."
|
15358 |
msgstr ""
|
15359 |
|
15360 |
+
#: includes/settings/wcj-settings-product-addons.php:235
|
15361 |
+
msgid "Apply Price Filter"
|
15362 |
msgstr ""
|
15363 |
|
15364 |
+
#: includes/settings/wcj-settings-product-addons.php:240
|
15365 |
msgid "By module"
|
15366 |
msgstr ""
|
15367 |
|
15368 |
+
#: includes/settings/wcj-settings-product-addons.php:246
|
15369 |
msgid ""
|
15370 |
"If you have selected \"By module\" for \"Advanced: Apply Price Filter\" "
|
15371 |
"option, you can set which modules to apply here. Leave empty to apply all "
|
15372 |
"modules."
|
15373 |
msgstr ""
|
15374 |
|
15375 |
+
#: includes/settings/wcj-settings-product-addons.php:265
|
15376 |
+
#: includes/settings/wcj-settings-product-input-fields.php:353
|
15377 |
+
msgid "Check for Outputted Data"
|
|
|
|
|
|
|
|
|
|
|
|
|
15378 |
msgstr ""
|
15379 |
|
15380 |
+
#: includes/settings/wcj-settings-product-addons.php:267
|
15381 |
#: includes/settings/wcj-settings-product-bookings.php:108
|
15382 |
#: includes/settings/wcj-settings-product-input-fields.php:355
|
15383 |
#: includes/settings/wcj-settings-product-open-pricing.php:141
|
15386 |
"on frontend twice. Disable if you see no data outputted."
|
15387 |
msgstr ""
|
15388 |
|
15389 |
+
#: includes/settings/wcj-settings-product-addons.php:273
|
15390 |
+
msgid "Export and Import \"Enable by Variation\""
|
15391 |
+
msgstr ""
|
15392 |
+
|
15393 |
+
#: includes/settings/wcj-settings-product-addons.php:275
|
15394 |
+
msgid ""
|
15395 |
+
"Exports/Imports \"Enable by Variation\" meta when using WooCommerce product "
|
15396 |
+
"Exporter/Importer"
|
15397 |
+
msgstr ""
|
15398 |
+
|
15399 |
+
#: includes/settings/wcj-settings-product-addons.php:285
|
15400 |
msgid "Frontend Templates"
|
15401 |
msgstr ""
|
15402 |
|
15403 |
+
#: includes/settings/wcj-settings-product-addons.php:290
|
15404 |
msgid "Hide Percentage Price"
|
15405 |
msgstr ""
|
15406 |
|
15407 |
+
#: includes/settings/wcj-settings-product-addons.php:292
|
15408 |
msgid "Hide percentage price when % is set on prices"
|
15409 |
msgstr ""
|
15410 |
|
15411 |
+
#: includes/settings/wcj-settings-product-addons.php:298
|
15412 |
msgid "Each Addon - Title"
|
15413 |
msgstr ""
|
15414 |
|
15415 |
+
#: includes/settings/wcj-settings-product-addons.php:306
|
15416 |
msgid "Each Addon - Type: Checkbox"
|
15417 |
msgstr ""
|
15418 |
|
15419 |
+
#: includes/settings/wcj-settings-product-addons.php:314
|
15420 |
msgid "Each Addon - Type: Text"
|
15421 |
msgstr ""
|
15422 |
|
15423 |
+
#: includes/settings/wcj-settings-product-addons.php:322
|
15424 |
msgid "Each Addon - Type: Select Box"
|
15425 |
msgstr ""
|
15426 |
|
15427 |
+
#: includes/settings/wcj-settings-product-addons.php:330
|
15428 |
msgid "Each Addon - Type: Select Box (Each Option)"
|
15429 |
msgstr ""
|
15430 |
|
15431 |
+
#: includes/settings/wcj-settings-product-addons.php:338
|
15432 |
msgid "Each Addon - Type: Radio Button (Each)"
|
15433 |
msgstr ""
|
15434 |
|
15435 |
+
#: includes/settings/wcj-settings-product-addons.php:346
|
15436 |
msgid "All Addons - Final"
|
15437 |
msgstr ""
|
15438 |
|
15439 |
+
#: includes/settings/wcj-settings-product-addons.php:358
|
15440 |
msgid "Cart Template"
|
15441 |
msgstr ""
|
15442 |
|
15443 |
+
#: includes/settings/wcj-settings-product-addons.php:370
|
15444 |
+
#: includes/settings/wcj-settings-product-addons.php:401
|
15445 |
msgid "Each Addon"
|
15446 |
msgstr ""
|
15447 |
|
15448 |
+
#: includes/settings/wcj-settings-product-addons.php:389
|
15449 |
msgid "Order Details Table Template"
|
15450 |
msgstr ""
|
15451 |
|
15496 |
msgid "Hide Quantity Selector for Bookings Products"
|
15497 |
msgstr ""
|
15498 |
|
15499 |
+
#: includes/settings/wcj-settings-product-bookings.php:106
|
15500 |
+
#: includes/settings/wcj-settings-product-open-pricing.php:139
|
15501 |
+
msgid "Advanced: Check for Outputted Data"
|
15502 |
+
msgstr ""
|
15503 |
+
|
15504 |
#: includes/settings/wcj-settings-product-bookings.php:118
|
15505 |
msgid "Datepicker Options"
|
15506 |
msgstr ""
|
15685 |
msgid "Leave blank to use the default date format."
|
15686 |
msgstr ""
|
15687 |
|
15688 |
+
#: includes/settings/wcj-settings-product-by-date.php:62
|
15689 |
+
msgid "If you are not using english, please set some numeric format like m/d/Y"
|
15690 |
+
msgstr ""
|
15691 |
+
|
15692 |
#: includes/settings/wcj-settings-product-by-date.php:72
|
15693 |
#: includes/settings/wcj-settings-product-by-time.php:64
|
15694 |
msgid "Frontend Messages Options"
|
15880 |
msgstr ""
|
15881 |
|
15882 |
#: includes/settings/wcj-settings-product-custom-info.php:130
|
15883 |
+
#: includes/settings/wcj-settings-wholesale-price.php:98
|
15884 |
msgid "Product Categories to Include"
|
15885 |
msgstr ""
|
15886 |
|
15894 |
msgstr ""
|
15895 |
|
15896 |
#: includes/settings/wcj-settings-product-custom-info.php:138
|
15897 |
+
#: includes/settings/wcj-settings-wholesale-price.php:107
|
15898 |
msgid "Product Categories to Exclude"
|
15899 |
msgstr ""
|
15900 |
|
15908 |
|
15909 |
#: includes/settings/wcj-settings-product-custom-info.php:162
|
15910 |
#: includes/settings/wcj-settings-products-xml.php:147
|
15911 |
+
#: includes/settings/wcj-settings-wholesale-price.php:85
|
15912 |
msgid "Products to Include"
|
15913 |
msgstr ""
|
15914 |
|
15915 |
#: includes/settings/wcj-settings-product-custom-info.php:170
|
15916 |
#: includes/settings/wcj-settings-products-xml.php:157
|
15917 |
+
#: includes/settings/wcj-settings-wholesale-price.php:92
|
15918 |
msgid "Products to Exclude"
|
15919 |
msgstr ""
|
15920 |
|
16139 |
#: includes/settings/wcj-settings-product-input-fields.php:145
|
16140 |
#: includes/settings/wcj-settings-product-input-fields.php:157
|
16141 |
#: includes/settings/wcj-settings-product-input-fields.php:169
|
16142 |
+
#: includes/settings/wcj-settings-wholesale-price.php:86
|
16143 |
+
#: includes/settings/wcj-settings-wholesale-price.php:99
|
16144 |
msgid "Leave blank to include all products."
|
16145 |
msgstr ""
|
16146 |
|
16272 |
"Preserves line breaks on admin, making some inputs like textarea more legible"
|
16273 |
msgstr ""
|
16274 |
|
|
|
|
|
|
|
|
|
16275 |
#: includes/settings/wcj-settings-product-input-fields.php:361
|
16276 |
msgid "Strip Slashes"
|
16277 |
msgstr ""
|
16523 |
msgstr ""
|
16524 |
|
16525 |
#: includes/settings/wcj-settings-product-open-pricing.php:147
|
16526 |
+
#: includes/settings/wcj-settings-wholesale-price.php:115
|
16527 |
msgid "Advanced: Price Changes"
|
16528 |
msgstr ""
|
16529 |
|
16866 |
msgstr ""
|
16867 |
|
16868 |
#: includes/settings/wcj-settings-products-per-page.php:75
|
16869 |
+
#: includes/widgets/class-wcj-widget-multicurrency.php:88
|
16870 |
+
msgid "Form Method"
|
16871 |
msgstr ""
|
16872 |
|
16873 |
#: includes/settings/wcj-settings-products-per-page.php:80
|
16874 |
+
msgid "POST"
|
16875 |
msgstr ""
|
16876 |
|
16877 |
#: includes/settings/wcj-settings-products-per-page.php:81
|
16878 |
+
msgid "GET"
|
16879 |
+
msgstr ""
|
16880 |
+
|
16881 |
+
#: includes/settings/wcj-settings-products-per-page.php:85
|
16882 |
+
msgid "Saving Method"
|
16883 |
+
msgstr ""
|
16884 |
+
|
16885 |
+
#: includes/settings/wcj-settings-products-per-page.php:90
|
16886 |
+
msgid "Cookie"
|
16887 |
+
msgstr ""
|
16888 |
+
|
16889 |
+
#: includes/settings/wcj-settings-products-per-page.php:91
|
16890 |
msgid "Session"
|
16891 |
msgstr ""
|
16892 |
|
17132 |
msgstr ""
|
17133 |
|
17134 |
#: includes/settings/wcj-settings-purchase-data.php:190
|
17135 |
+
#: includes/settings/wcj-settings-sku.php:244
|
17136 |
#: includes/settings/wcj-settings-stock.php:199
|
17137 |
msgid "More Options"
|
17138 |
msgstr ""
|
17730 |
msgid "From product ID"
|
17731 |
msgstr ""
|
17732 |
|
17733 |
+
#: includes/settings/wcj-settings-sku.php:30
|
17734 |
+
msgid "Hashids - Advanced options"
|
17735 |
msgstr ""
|
17736 |
|
17737 |
#: includes/settings/wcj-settings-sku.php:32
|
17738 |
+
msgid "Number generation method."
|
17739 |
msgstr ""
|
17740 |
|
17741 |
+
#: includes/settings/wcj-settings-sku.php:33
|
17742 |
+
msgid "Possible values: from product ID, sequential, pseudorandom or Hashids."
|
17743 |
+
msgstr ""
|
17744 |
+
|
17745 |
+
#: includes/settings/wcj-settings-sku.php:33
|
17746 |
+
msgid "If using Hashids please take a look at Hashids options below."
|
17747 |
msgstr ""
|
17748 |
|
17749 |
#: includes/settings/wcj-settings-sku.php:38
|
17750 |
+
msgid "Sequential Number Generation - Counter"
|
17751 |
+
msgstr ""
|
17752 |
+
|
17753 |
+
#: includes/settings/wcj-settings-sku.php:39
|
17754 |
msgid ""
|
17755 |
"If you choose to use sequential number inside SKU, you can set current "
|
17756 |
"sequential number counter here."
|
17757 |
msgstr ""
|
17758 |
|
17759 |
+
#: includes/settings/wcj-settings-sku.php:50
|
17760 |
msgid "Sequential Number Generation - By Category"
|
17761 |
msgstr ""
|
17762 |
|
17763 |
+
#: includes/settings/wcj-settings-sku.php:51
|
17764 |
msgid "Enables sequential number generation by category."
|
17765 |
msgstr ""
|
17766 |
|
17767 |
+
#: includes/settings/wcj-settings-sku.php:60
|
17768 |
msgid "SKU prefix."
|
17769 |
msgstr ""
|
17770 |
|
17771 |
+
#: includes/settings/wcj-settings-sku.php:66
|
17772 |
msgid "Minimum Number Length"
|
17773 |
msgstr ""
|
17774 |
|
17775 |
+
#: includes/settings/wcj-settings-sku.php:67
|
17776 |
msgid "Minimum length for SKU number part."
|
17777 |
msgstr ""
|
17778 |
|
17779 |
+
#: includes/settings/wcj-settings-sku.php:74
|
17780 |
msgid "SKU suffix."
|
17781 |
msgstr ""
|
17782 |
|
17783 |
+
#: includes/settings/wcj-settings-sku.php:80
|
17784 |
msgid "Attributes Separator"
|
17785 |
msgstr ""
|
17786 |
|
17787 |
+
#: includes/settings/wcj-settings-sku.php:81
|
17788 |
#, php-format
|
17789 |
msgid "Used in %s, %s, %s and %s."
|
17790 |
msgstr ""
|
17791 |
|
17792 |
+
#: includes/settings/wcj-settings-sku.php:91
|
17793 |
msgid "Characters Case"
|
17794 |
msgstr ""
|
17795 |
|
17796 |
+
#: includes/settings/wcj-settings-sku.php:96
|
17797 |
msgid "Original (no changes)"
|
17798 |
msgstr ""
|
17799 |
|
17800 |
+
#: includes/settings/wcj-settings-sku.php:97
|
17801 |
msgid "Convert to lowercase"
|
17802 |
msgstr ""
|
17803 |
|
17804 |
+
#: includes/settings/wcj-settings-sku.php:98
|
17805 |
msgid "Convert to uppercase"
|
17806 |
msgstr ""
|
17807 |
|
17808 |
+
#: includes/settings/wcj-settings-sku.php:103
|
17809 |
msgid "SKU template."
|
17810 |
msgstr ""
|
17811 |
|
17812 |
+
#: includes/settings/wcj-settings-sku.php:119
|
17813 |
#, php-format
|
17814 |
msgid "You can also use shortcodes here, e.g.: %s etc."
|
17815 |
msgstr ""
|
17816 |
|
17817 |
+
#: includes/settings/wcj-settings-sku.php:129
|
17818 |
msgid "Variable Products Variations"
|
17819 |
msgstr ""
|
17820 |
|
17821 |
+
#: includes/settings/wcj-settings-sku.php:130
|
17822 |
msgid ""
|
17823 |
"SKU generation for variations. Please note, that if \"Generate SKU for New "
|
17824 |
"Products Only on First Publish\" option below is not checked, then on new "
|
17827 |
"\"Autogenerate SKUs\" tool manually."
|
17828 |
msgstr ""
|
17829 |
|
17830 |
+
#: includes/settings/wcj-settings-sku.php:131
|
17831 |
msgid ""
|
17832 |
"Possible values: SKU same as parent's product; Generate different SKU for "
|
17833 |
"each variation; SKU same as parent's product + variation letter suffix."
|
17834 |
msgstr ""
|
17835 |
|
17836 |
+
#: includes/settings/wcj-settings-sku.php:136
|
17837 |
msgid "SKU same as parent's product"
|
17838 |
msgstr ""
|
17839 |
|
17840 |
+
#: includes/settings/wcj-settings-sku.php:137
|
17841 |
msgid "Generate different SKU for each variation"
|
17842 |
msgstr ""
|
17843 |
|
17844 |
+
#: includes/settings/wcj-settings-sku.php:138
|
17845 |
msgid "SKU same as parent's product + variation letter suffix"
|
17846 |
msgstr ""
|
17847 |
|
17848 |
+
#: includes/settings/wcj-settings-sku.php:148
|
17849 |
+
msgid "Hashids options"
|
17850 |
+
msgstr ""
|
17851 |
+
|
17852 |
+
#: includes/settings/wcj-settings-sku.php:153
|
17853 |
+
msgid "Salt"
|
17854 |
msgstr ""
|
17855 |
|
17856 |
#: includes/settings/wcj-settings-sku.php:154
|
17857 |
+
msgid "A random string that will make your SKUs really unique."
|
17858 |
+
msgstr ""
|
17859 |
+
|
17860 |
+
#: includes/settings/wcj-settings-sku.php:160
|
17861 |
+
msgid "Numbers of characters in SKU"
|
17862 |
+
msgstr ""
|
17863 |
+
|
17864 |
+
#: includes/settings/wcj-settings-sku.php:166
|
17865 |
+
msgid "SKU Format"
|
17866 |
+
msgstr ""
|
17867 |
+
|
17868 |
+
#: includes/settings/wcj-settings-sku.php:169
|
17869 |
+
msgid "Only Numbers, e.g.: 836237"
|
17870 |
+
msgstr ""
|
17871 |
+
|
17872 |
+
#: includes/settings/wcj-settings-sku.php:170
|
17873 |
+
msgid "Only Letters, e.g.: HFuAbQ"
|
17874 |
+
msgstr ""
|
17875 |
+
|
17876 |
+
#: includes/settings/wcj-settings-sku.php:171
|
17877 |
+
msgid "Letters and Numbers, e.g.: 8a3M19 "
|
17878 |
+
msgstr ""
|
17879 |
+
|
17880 |
+
#: includes/settings/wcj-settings-sku.php:183
|
17881 |
+
msgid "Categories Options"
|
17882 |
+
msgstr ""
|
17883 |
+
|
17884 |
+
#: includes/settings/wcj-settings-sku.php:188
|
17885 |
msgid "Multiple Categories"
|
17886 |
msgstr ""
|
17887 |
|
17888 |
+
#: includes/settings/wcj-settings-sku.php:189
|
17889 |
msgid ""
|
17890 |
"This options defines how to handle category prefixes and suffixes, if "
|
17891 |
"product has multiple categories."
|
17892 |
msgstr ""
|
17893 |
|
17894 |
+
#: includes/settings/wcj-settings-sku.php:194
|
17895 |
msgid "Use first category"
|
17896 |
msgstr ""
|
17897 |
|
17898 |
+
#: includes/settings/wcj-settings-sku.php:195
|
17899 |
msgid "\"Glue\" categories"
|
17900 |
msgstr ""
|
17901 |
|
17902 |
+
#: includes/settings/wcj-settings-sku.php:199
|
17903 |
msgid "Category separator (i.e. \"glue\")"
|
17904 |
msgstr ""
|
17905 |
|
17906 |
+
#: includes/settings/wcj-settings-sku.php:200
|
17907 |
msgid "Ignored if \"Use first category\" is selected above."
|
17908 |
msgstr ""
|
17909 |
|
17910 |
+
#: includes/settings/wcj-settings-sku.php:228
|
17911 |
msgid "Counter (Sequential)"
|
17912 |
msgstr ""
|
17913 |
|
17914 |
+
#: includes/settings/wcj-settings-sku.php:249
|
17915 |
msgid "Automatically Generate SKU for New Products"
|
17916 |
msgstr ""
|
17917 |
|
17918 |
+
#: includes/settings/wcj-settings-sku.php:251
|
17919 |
msgid "Alternatively you can use Autogenerate SKUs tool."
|
17920 |
msgstr ""
|
17921 |
|
17922 |
+
#: includes/settings/wcj-settings-sku.php:251
|
17923 |
+
msgid ""
|
17924 |
+
"If you want to generate SKU for variations, please try \"Automatically "
|
17925 |
+
"Generate SKU for Variations on Product Save\" option."
|
17926 |
+
msgstr ""
|
17927 |
+
|
17928 |
+
#: includes/settings/wcj-settings-sku.php:257
|
17929 |
+
msgid "Automatically Generate SKU for Variations on Product Save"
|
17930 |
+
msgstr ""
|
17931 |
+
|
17932 |
+
#: includes/settings/wcj-settings-sku.php:259
|
17933 |
+
msgid ""
|
17934 |
+
"Once enabled it's recommended to be used with \"Generate SKUs Only for "
|
17935 |
+
"Products with Empty SKU\" option or else the SKUs will be replaced on "
|
17936 |
+
"product save."
|
17937 |
+
msgstr ""
|
17938 |
+
|
17939 |
+
#: includes/settings/wcj-settings-sku.php:265
|
17940 |
msgid "Generate SKU for New Products Only on First Publish"
|
17941 |
msgstr ""
|
17942 |
|
17943 |
+
#: includes/settings/wcj-settings-sku.php:267
|
17944 |
msgid ""
|
17945 |
"This is important if, for example, you are using category prefix and don't "
|
17946 |
"want SKU generated too early, before you set the category."
|
17947 |
msgstr ""
|
17948 |
|
17949 |
+
#: includes/settings/wcj-settings-sku.php:273
|
17950 |
msgid "Allow Duplicate SKUs"
|
17951 |
msgstr ""
|
17952 |
|
17953 |
+
#: includes/settings/wcj-settings-sku.php:275
|
17954 |
msgid ""
|
17955 |
"If you wish to set SKUs manually, and you need to have same SKUs for "
|
17956 |
"different products, you can enable allow duplicate SKUs option here (which "
|
17957 |
"is disabled in WooCommerce by default)."
|
17958 |
msgstr ""
|
17959 |
|
17960 |
+
#: includes/settings/wcj-settings-sku.php:281
|
17961 |
msgid "Search by SKU"
|
17962 |
msgstr ""
|
17963 |
|
17964 |
+
#: includes/settings/wcj-settings-sku.php:283
|
17965 |
msgid "Add product searching by SKU on frontend."
|
17966 |
msgstr ""
|
17967 |
|
17968 |
+
#: includes/settings/wcj-settings-sku.php:289
|
17969 |
msgid "Advanced: Search by SKU Hook"
|
17970 |
msgstr ""
|
17971 |
|
17972 |
+
#: includes/settings/wcj-settings-sku.php:290
|
17973 |
msgid ""
|
17974 |
"If you are experiencing any issues with searching by SKU, try changing this "
|
17975 |
"option."
|
17976 |
msgstr ""
|
17977 |
|
17978 |
+
#: includes/settings/wcj-settings-sku.php:300
|
17979 |
msgid "Generate SKUs Only for Products with Empty SKU"
|
17980 |
msgstr ""
|
17981 |
|
17982 |
+
#: includes/settings/wcj-settings-sku.php:302
|
17983 |
msgid ""
|
17984 |
"This may help if you are going to use Autogenerate SKUs tool, but don't want "
|
17985 |
"to change your existing SKUs."
|
17986 |
msgstr ""
|
17987 |
|
17988 |
+
#: includes/settings/wcj-settings-sku.php:308
|
17989 |
msgid "Add SKU to Customer Emails"
|
17990 |
msgstr ""
|
17991 |
|
17992 |
+
#: includes/settings/wcj-settings-sku.php:310
|
17993 |
msgid "Adds product SKU to customer's emails."
|
17994 |
msgstr ""
|
17995 |
|
17996 |
+
#: includes/settings/wcj-settings-sku.php:316
|
17997 |
msgid "Remove SKU from Admin Emails"
|
17998 |
msgstr ""
|
17999 |
|
18000 |
+
#: includes/settings/wcj-settings-sku.php:318
|
18001 |
msgid "Removes product SKU from admin's emails."
|
18002 |
msgstr ""
|
18003 |
|
18004 |
+
#: includes/settings/wcj-settings-sku.php:324
|
18005 |
msgid "Disable SKUs"
|
18006 |
msgstr ""
|
18007 |
|
18008 |
+
#: includes/settings/wcj-settings-sku.php:326
|
18009 |
msgid ""
|
18010 |
"Enable this option if you are not going to use SKUs in your shop at all."
|
18011 |
msgstr ""
|
18532 |
msgid "Automatically add coupon's products to the cart"
|
18533 |
msgstr ""
|
18534 |
|
18535 |
+
#: includes/settings/wcj-settings-wholesale-price.php:20
|
18536 |
#, php-format
|
18537 |
msgid "If you want to display prices table on frontend, use %s shortcode."
|
18538 |
msgstr ""
|
18539 |
|
18540 |
+
#: includes/settings/wcj-settings-wholesale-price.php:25
|
18541 |
msgid "Enable per Product"
|
18542 |
msgstr ""
|
18543 |
|
18544 |
+
#: includes/settings/wcj-settings-wholesale-price.php:33
|
18545 |
msgid "Quantity Calculation"
|
18546 |
msgstr ""
|
18547 |
|
18548 |
+
#: includes/settings/wcj-settings-wholesale-price.php:38
|
18549 |
msgid "Product quantity"
|
18550 |
msgstr ""
|
18551 |
|
18552 |
+
#: includes/settings/wcj-settings-wholesale-price.php:39
|
18553 |
msgid "Total cart quantity (wholesale products only)"
|
18554 |
msgstr ""
|
18555 |
|
18556 |
+
#: includes/settings/wcj-settings-wholesale-price.php:40
|
18557 |
msgid "Total cart quantity"
|
18558 |
msgstr ""
|
18559 |
|
18560 |
+
#: includes/settings/wcj-settings-wholesale-price.php:44
|
18561 |
msgid "Exclusive Use Only"
|
18562 |
msgstr ""
|
18563 |
|
18564 |
+
#: includes/settings/wcj-settings-wholesale-price.php:46
|
18565 |
msgid "Apply wholesale discount only if no other cart discounts were applied."
|
18566 |
msgstr ""
|
18567 |
|
18568 |
+
#: includes/settings/wcj-settings-wholesale-price.php:52
|
18569 |
msgid "Round Single Product Price"
|
18570 |
msgstr ""
|
18571 |
|
18572 |
+
#: includes/settings/wcj-settings-wholesale-price.php:53
|
18573 |
msgid ""
|
18574 |
"If enabled will round single product price with precision set in WooCommerce "
|
18575 |
"> Settings > General > Number of decimals."
|
18576 |
msgstr ""
|
18577 |
|
18578 |
+
#: includes/settings/wcj-settings-wholesale-price.php:60
|
18579 |
msgid "Discount Info on Cart Page"
|
18580 |
msgstr ""
|
18581 |
|
18582 |
+
#: includes/settings/wcj-settings-wholesale-price.php:67
|
18583 |
msgid "If show discount info on cart page is enabled, set format here."
|
18584 |
msgstr ""
|
18585 |
|
18586 |
+
#: includes/settings/wcj-settings-wholesale-price.php:116
|
18587 |
msgid "Disable wholesale pricing for products with \"Price Changes\""
|
18588 |
msgstr ""
|
18589 |
|
18590 |
+
#: includes/settings/wcj-settings-wholesale-price.php:123
|
18591 |
+
msgid "Advanced: Price Filters Priority"
|
18592 |
msgstr ""
|
18593 |
|
18594 |
#: includes/settings/wcj-settings-wholesale-price.php:136
|
18595 |
+
msgid "Wholesale Levels Options"
|
18596 |
+
msgstr ""
|
18597 |
+
|
18598 |
+
#: includes/settings/wcj-settings-wholesale-price.php:141
|
18599 |
+
#: includes/settings/wcj-settings-wholesale-price.php:198
|
18600 |
msgid "Number of Levels"
|
18601 |
msgstr ""
|
18602 |
|
18603 |
+
#: includes/settings/wcj-settings-wholesale-price.php:155
|
18604 |
+
#: includes/settings/wcj-settings-wholesale-price.php:212
|
18605 |
msgid "Min Quantity"
|
18606 |
msgstr ""
|
18607 |
|
18608 |
+
#: includes/settings/wcj-settings-wholesale-price.php:156
|
18609 |
+
#: includes/settings/wcj-settings-wholesale-price.php:213
|
18610 |
msgid "Minimum quantity to apply discount"
|
18611 |
msgstr ""
|
18612 |
|
18613 |
+
#: includes/settings/wcj-settings-wholesale-price.php:178
|
18614 |
msgid "Additional User Roles Options"
|
18615 |
msgstr ""
|
18616 |
|
18617 |
+
#: includes/settings/wcj-settings-wholesale-price.php:180
|
18618 |
msgid ""
|
18619 |
"If you want to set different wholesale pricing options for different user "
|
18620 |
"roles, fill this section. Please note that you can also use Booster's "
|
18621 |
"\"Price based on User Role\" module without filling this section."
|
18622 |
msgstr ""
|
18623 |
|
18624 |
+
#: includes/settings/wcj-settings-wholesale-price.php:184
|
18625 |
msgid "User Roles Settings"
|
18626 |
msgstr ""
|
18627 |
|
19039 |
msgid "Link list"
|
19040 |
msgstr ""
|
19041 |
|
|
|
|
|
|
|
|
|
19042 |
#: includes/widgets/class-wcj-widget-multicurrency.php:89
|
19043 |
msgid "HTML form method for \"Drop down\" and \"Radio list\" types."
|
19044 |
msgstr ""
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: algoritmika, anbinder, debugeris, karzin
|
|
3 |
Tags: woocommerce, booster for woocommerce, woocommerce jetpack
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 5.3
|
6 |
-
Stable tag: 4.
|
7 |
License: GNU General Public License v3.0
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -193,14 +193,46 @@ You can see the differences between versions in this [table](https://booster.io/
|
|
193 |
|
194 |
== Changelog ==
|
195 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
= 4.6.1 - 15/11/2019 =
|
197 |
* Fix - CART & CHECKOUT - Checkout Custom Fields - Preserve checkbox field value when updating order status.
|
198 |
* Fix - CART & CHECKOUT - EU VAT Number - Check if EU VAT number is valid during 'woocommerce_after_checkout_validation' hook instead of trying to get the result from session.
|
199 |
* Fix - CART & CHECKOUT - EU VAT Number - Fix possible white space in `wcj_validate_eu_vat_number()` response from ajax by using wp_send_json().
|
200 |
* Fix - EMAILS & MISC. - Custom Emails - Fix bug when sending email to multiple orders at the same time using the bulk editor and when there were multiple recipients including %customer%.
|
201 |
-
* Fix - Core - `WCJ_Modules` - Also check if Meta-box option is an array.
|
202 |
* Fix - SHIPPING & ORDERS - Replace empty translation text with only empty text due to POT file update.
|
203 |
* Fix - PRODUCTS - Add to Cart - Replace empty translation text with only empty text due to POT file update.
|
|
|
204 |
* Dev - CART & CHECKOUT - Checkout Fees - Change "Cart Min" and "Max" options to "Cart Minimum" and "Maximum Quantity".
|
205 |
* Dev - CART & CHECKOUT - Checkout Fees - Create "Cart Minimum" and "Maximum Total" options as Plus features.
|
206 |
* Dev - CART & CHECKOUT - EU VAT Number - Add new option to show VAT field for EU countries only.
|
3 |
Tags: woocommerce, booster for woocommerce, woocommerce jetpack
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 5.3
|
6 |
+
Stable tag: 4.7.0
|
7 |
License: GNU General Public License v3.0
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
193 |
|
194 |
== Changelog ==
|
195 |
|
196 |
+
= 4.7.0 - 27/12/2019 =
|
197 |
+
* Fix - CART & CHECKOUT - Checkout Custom Fields - Preserve select field value when editing the order from admin.
|
198 |
+
* Fix - CART & CHECKOUT - EU VAT Number - Set the user agent explicitly, trying to avoid possible SoapClient errors.
|
199 |
+
* Fix - PAYMENT GATEWAYS - Gateways Min/Max Amounts - Notices keep being displayed after order is placed.
|
200 |
+
* Fix - PRODUCTS - Product Availability by Date - Fix wrong availabilities on non English languages by setting a default number format of 'm/d/Y' on 'wcj_product_by_date_direct_date' option and by improving description.
|
201 |
+
* Fix - PRODUCTS - Product Availability by Date - Fix wrong availabilities on non English languages by setting the date properly according to 'wcj_product_by_date_direct_date_format' option and timezone.
|
202 |
+
* Fix - PRODUCTS - Products per Page - Sanitize 'wcj_products_per_page' param.
|
203 |
+
* Fix - PRODUCTS - SKU - Sort variations in ascending order on `get_all_variations()` for better results with 'Variable Products Variations' option.
|
204 |
+
* Fix - SHIPPING & ORDERS - Custom Shipping - Fix possible Fatal error "Class 'WC_Shipping_WCJ_Custom_Template' not found".
|
205 |
+
* Fix - Classes - `WCJ_Module_Product_By_Condition` - `pre_get_posts` - Disables pre_get_posts query when exporting products.
|
206 |
+
* Dev - PAYMENT GATEWAYS - Custom Gateways - `update_custom_payment_gateways_fields_order_meta()` now also expects an array as an input value.
|
207 |
+
* Dev - PAYMENT GATEWAYS - Custom Gateways - Add 'name_array' as parameter on description replace preventing possible duplicated input fields names.
|
208 |
+
* Dev - PDF INVOICING & PACKING SLIPS - Advanced - Add option to set Internal Encoding with `mb_internal_encoding()`.
|
209 |
+
* Dev - PRICES & CURRENCIES - Global Discount - Add 'WPML: Get Products in All Languages' option.
|
210 |
+
* Dev - PRICES & CURRENCIES - Global Discount - Add 'WPML: Get Terms in All Languages' option.
|
211 |
+
* Dev - PRICES & CURRENCIES - Wholesale Price - Add 'WPML: Get Products in All Languages' option.
|
212 |
+
* Dev - PRICES & CURRENCIES - Wholesale Price - Add 'WPML: Get Terms in All Languages' option.
|
213 |
+
* Dev - SHIPPING & ORDERS - Shipping by Cities - Improve postcode detection trying to read it from `WC()->customer->get_shipping_postcode` too.
|
214 |
+
* Dev - PRODUCTS - Product Addons - Add option to export and import '_wcj_product_addons_per_product_enable_by_variation_%' meta.
|
215 |
+
* Dev - PRODUCTS - Products per Page - Add option to control form method by POST or GET.
|
216 |
+
* Dev - PRODUCTS - SKU - Add option to automatically generate SKU for variations on product save.
|
217 |
+
* Dev - PRODUCTS - SKU - Add option to generate SKU using Hashids library.
|
218 |
+
* Dev - PRODUCTS - SKU - Add option to manage the numbers of characters on SKU using Hashids.
|
219 |
+
* Dev - PRODUCTS - SKU - Add option to control SKU format with numbers or letters using Hashids.
|
220 |
+
* Dev - `WCJ_Module` - Get products in all languages from ajax product search, if corresponding WPML option is enabled.
|
221 |
+
* Dev - `WCJ_Module` - Move `remove_wpml_functions_before_get_terms` and `restore_wpml_functions_after_get_terms` from 'Price based on User Role' module making it more flexible to be appliable to any module.
|
222 |
+
* Dev - Shortcodes - `[wcj_input_field]` Add 'data_attributes' param.
|
223 |
+
* Dev - Shortcodes - `[wcj_input_field]` Add 'name_array' param, allowing the input name to be set as an array. e.g. `[wcj_input_field name_array="parent" name="test"]` -> `<input name="parent[test][value]" />`.
|
224 |
+
* Dev - Functions - General - Create `wcj_get_data_attributes_html()` function allowing to create a multiple data parameters like `data-param_a='value_a'` when receiving a associative array.
|
225 |
+
* Dev - Functions - Date and Time - Add `wcj_timezone()` function to get timezone. `wp_timezone()` already does it but as it was introduced only on version 5.3.0 this was a safer option.
|
226 |
+
* Dev - Classes - `WCJ_Module_Product_By_Condition` - `pre_get_posts` - Add 'wcj_product_by_condition_pre_get_posts_validation' filter to setup when the query should be disabled.
|
227 |
+
|
228 |
= 4.6.1 - 15/11/2019 =
|
229 |
* Fix - CART & CHECKOUT - Checkout Custom Fields - Preserve checkbox field value when updating order status.
|
230 |
* Fix - CART & CHECKOUT - EU VAT Number - Check if EU VAT number is valid during 'woocommerce_after_checkout_validation' hook instead of trying to get the result from session.
|
231 |
* Fix - CART & CHECKOUT - EU VAT Number - Fix possible white space in `wcj_validate_eu_vat_number()` response from ajax by using wp_send_json().
|
232 |
* Fix - EMAILS & MISC. - Custom Emails - Fix bug when sending email to multiple orders at the same time using the bulk editor and when there were multiple recipients including %customer%.
|
|
|
233 |
* Fix - SHIPPING & ORDERS - Replace empty translation text with only empty text due to POT file update.
|
234 |
* Fix - PRODUCTS - Add to Cart - Replace empty translation text with only empty text due to POT file update.
|
235 |
+
* Fix - Core - `WCJ_Modules` - Also check if Meta-box option is an array.
|
236 |
* Dev - CART & CHECKOUT - Checkout Fees - Change "Cart Min" and "Max" options to "Cart Minimum" and "Maximum Quantity".
|
237 |
* Dev - CART & CHECKOUT - Checkout Fees - Create "Cart Minimum" and "Maximum Total" options as Plus features.
|
238 |
* Dev - CART & CHECKOUT - EU VAT Number - Add new option to show VAT field for EU countries only.
|
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. More than 100 modules. All in one WooCommerce plugin.
|
6 |
-
Version: 4.
|
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 = '4.
|
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. More than 100 modules. All in one WooCommerce plugin.
|
6 |
+
Version: 4.7.0
|
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 = '4.7.0';
|
61 |
|
62 |
/**
|
63 |
* @var WC_Jetpack The single instance of the class
|