Version Description
- 27/11/2016 =
- Fix -
load_plugin_textdomain
moved frominit
hook to constructor (fixes the issue with module titles, descriptions not translating). - Fix -
class-wcj-currency-reports.php
-filter_reports
is now applied onwc-reports
page only. - Dev -
unclean_custom_textarea()
added. - Dev - Made "Booster Tools" accessible to shop manager.
- Dev - Shortcodes -
find
andreplace
attributes added to all shortcodes. - Dev - Shortcodes - General -
[wcj_wholesale_price_table]
-%level_max_qty%
replace value added toheading_format
attribute.%level_qty%
marked as deprecated (%level_min_qty%
should be used instead). - Dev - Shortcodes - Orders -
[wcj_order_items_total_weight]
replaced with[wcj_order_total_weight]
. - Dev - Shortcodes - Orders -
[wcj_order_total_width]
,[wcj_order_total_height]
and[wcj_order_total_length]
shortcodes added. - Dev - Shortcodes - Orders -
[wcj_order_items]
shortcode added. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
-item_image_width
anditem_image_height
replaced withproduct_image_width
andproduct_image_height
. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
-columns
- Added to all appropriateitem_
columns:product_name
,product_attribute
,product_excerpt
,product_short_description
,product_variation
,product_thumbnail
,product_sku
,product_weight
. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
-columns
-product_length
,product_width
andproduct_height
columns added. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
-item_short_description
- now displays item's short description (may be different fromitem_excerpt
).item_description
attribute removed. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
-columns
-product_regular_price
andproduct_sale_price
columns added. - Dev - Shortcodes - Orders -
[wcj_order_items_table]
-columns
-item_tax_class
column added. - Dev - Shortcodes - Products -
[wcj_product_price_excluding_tax]
and[wcj_product_price_including_tax]
-multiply_by
attribute added. And both functions code refactored. - Fix - Shortcodes - Products -
[wcj_product_excerpt]
- Manually checking for short description first (solength
can be applied). - Dev - Shortcodes - Products -
[wcj_product_excerpt]
-excerpt_length
attribute deprecated (replaced withlength
). - Dev - Shortcodes - Products -
[wcj_product_short_description]
shortcode added. - Dev - Shortcodes - Products -
[wcj_product_url]
shortcode added. - Dev - Shortcodes - Products -
[wcj_product_image_url]
shortcode added. - Dev - Shortcodes - Products -
[wcj_product_categories_names]
shortcode added. - Dev - Shortcodes - Products -
[wcj_product_categories_urls]
shortcode added. - Dev - Shortcodes - Products -
[wcj_product_meta]
shortcode added. - Dev - Shortcodes - Products -
[wcj_product_wholesale_price_table]
-%level_max_qty%
replace value added toheading_format
attribute.%level_qty%
marked as deprecated (%level_min_qty%
should be used instead). - Dev - PRICES & CURRENCIES - Global Discount - Initial module release.
- Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Compatibility - "WooCommerce TM Extra Product Options" plugin.
- Dev - PRICES & CURRENCIES - Price by User Role - "Search Engine Bots" option added.
- Dev - PRICES & CURRENCIES - Wholesale Price - Global settings discount now can be negative.
- Dev - PRICES & CURRENCIES - Wholesale Price - Per product - "Price directly" option added (for non variable products only).
- Dev - BUTTON & PRICE LABELS - Call for Price - "Make All Products Call for Price" option added.
- Fix - PRODUCTS - User Products - "My Account > Products" fixed.
- Fix - PAYMENT GATEWAYS - Custom Gateways - Enable for shipping methods - Empty method title bug fixed.
- Fix - SHIPPING & ORDERS - Order Custom Statuses - Custom Statuses tool - Empty array passed on apply
wc_order_statuses
filter (produced PHP warning). - Dev - SHIPPING & ORDERS - Order Minimum Amount - Initial module release (moved from Orders module).
- Dev - SHIPPING & ORDERS - Orders - "Admin Orders List Columns Order" section added. Priorities in all Booster's added
manage_edit-shop_order_columns
filters changed. - Dev - SHIPPING & ORDERS - Orders - "Admin Orders List Multiple Status" section added.
- Dev - SHIPPING & ORDERS - Shipping - Custom Shipping with Zones - "Min Weight" and "Max Weight" options added.
- Dev - SHIPPING & ORDERS - Shipping Calculator - "Labels" settings section added.
- Dev - PDF INVOICING & PACKING SLIPS - "Generate" and "Download" bulk actions added to admin orders list.
- Dev - PDF INVOICING & PACKING SLIPS - Invoices Report tool -
get_invoices_report_data()
-WP_Query
optimized to returnids
only. - Dev - PDF INVOICING & PACKING SLIPS - Invoices Report tool - "Download monthly documents CSV" added.
- Dev - EMAILS & MISC. - Admin Tools - "System Info" table added.
- Dev - EMAILS & MISC. - Admin Tools - "PHP Memory Limit" option added.
- Fix - EMAILS & MISC. - EU VAT Number - Preserve VAT in Base Country -
EL
replaced withGR
for Greece when checking location. - Dev - EMAILS & MISC. - EU VAT Number - Validate VAT without SOAP fallback added (
validate_vat_no_soap
function). - Dev - EMAILS & MISC. - Export - "UTF-8 BOM" option added.
- Fix - EMAILS & MISC. - Export - Export Orders - "Order Date" column fixed.
- Dev - EMAILS & MISC. - Export - Export Orders - "Order Time" column added.
- Dev - EMAILS & MISC. - Export - Export Products - Stock -
get_stock_quantity()
replaced withget_total_stock()
. Separate "Stock Quantity" export field added. - Dev - EMAILS & MISC. - Export - Export Products - Variable and grouped products price, regular price, sale price, stock quantity and total stock for each variation added.
- Dev - EMAILS & MISC. - Export - Export Products - "Additional Export Products Fields" section added.
- Dev - EMAILS & MISC. - Export - Export Products - "Export Products Fields" option added.
- Dev - EMAILS & MISC. - Export - Export Products - "Image URL", "Short Description", "Description", "Status", "URL", "Shipping Class", "Shipping Class Id", "Width", "Length", "Height", "Weight", "Downloadable", "Virtual", "Sold Individually", "Tax Status", "Tax Class", "Manage Stock", "Stock Status", "Backorders", "Featured" and "Visibility" export fields added.
- Dev - EMAILS & MISC. - Export - Export Products -
WP_Query
optimized to returnids
only. - Dev - EMAILS & MISC. - General - "Session Expiration Options" section added.
- Dev - EMAILS & MISC. - Products XML - Initial module release.
- Dev - EMAILS & MISC. - Reports - Booster: Product Sales - Variations added in report.
- Tweak - Deprecated typo fixed.
- Tweak -
WCJ_Module
-create_meta_box()
-wcj_get_meta_box_options_type_price_step
filter added. - Tweak -
wcj_get_table_html()
- "row_styles" parameter added. - Tweak - Language (POT) file updated.
- Tweak - Shortcodes - Products -
[wcj_product_excerpt]
- Usingproduct_excerpt_length
object property instead of global variable. - Tweak - Shortcodes - Products -
[wcj_product_wholesale_price_table]
-wcj_product_wholesale_price_table_price_before
andwcj_product_wholesale_price_table_price_after
filters added. - Tweak - PRICES & CURRENCIES - Price by User Role -
change_price_by_role()
-wcj_price_by_user_role_get_price
filter added. - Tweak - PRICES & CURRENCIES - Wholesale Price -
get_wholesale_price()
-price_directly
-wcj_get_wholesale_price
filter added. - Tweak - CART & CHECKOUT - Empty Cart Button - Description updated.
- Tweak - SHIPPING & ORDERS - Order Custom Statuses - Custom Statuses tool - User messages updated.
- Tweak - SHIPPING & ORDERS - Order Custom Statuses - Custom Statuses tool - "Add new custom status" button label added to translation.
- Tweak - SHIPPING & ORDERS - Shipping - Custom Shipping - "Weight Table Total Rows" option description updated.
- Tweak - PDF INVOICING & PACKING SLIPS - Invoices Report tool -
get_invoices_report_zip()
- Headers cleaned up. - Tweak - PDF INVOICING & PACKING SLIPS - Invoices Report tool - Calling
get_tool_header_html()
instead of directly outputting header. - Tweak - EMAILS & MISC. - Export - Tool header added to all export tools.
- Tweak - EMAILS & MISC. - Export - Headers cleaned up.
- Tweak - EMAILS & MISC. - Reports - Button restyled in admin settings.
Download this release
Release Info
Developer | algoritmika |
Plugin | Booster for WooCommerce |
Version | 2.5.7 |
Comparing to | |
See all releases |
Code changes from version 2.5.6 to 2.5.7
- includes/admin/class-wc-settings-jetpack.php +17 -6
- includes/admin/class-wcj-tools.php +3 -3
- includes/admin/wcj-modules-cats.php +4 -1
- includes/class-wcj-add-to-cart.php +4 -4
- includes/class-wcj-admin-tools.php +70 -24
- includes/class-wcj-call-for-price.php +37 -10
- includes/class-wcj-empty-cart-button.php +3 -3
- includes/class-wcj-eu-vat-number.php +6 -2
- includes/class-wcj-export-import.php +360 -54
- includes/class-wcj-general.php +60 -3
- includes/class-wcj-global-discount.php +298 -0
- includes/class-wcj-multicurrency.php +25 -2
- includes/class-wcj-order-custom-statuses.php +14 -14
- includes/class-wcj-order-min-amount.php +296 -0
- includes/class-wcj-orders.php +238 -232
- includes/class-wcj-payment-gateways-icons.php +3 -3
- includes/class-wcj-pdf-invoicing.php +166 -2
- includes/class-wcj-price-by-user-role.php +16 -6
- includes/class-wcj-price-labels.php +1 -1
- includes/class-wcj-product-by-user.php +54 -11
- includes/class-wcj-product-info.php +8 -8
- includes/class-wcj-product-listings.php +2 -2
- includes/class-wcj-product-tabs.php +4 -4
- includes/class-wcj-products-xml.php +312 -0
- includes/class-wcj-purchase-data.php +3 -3
- includes/class-wcj-reports.php +27 -18
- includes/class-wcj-shipping-calculator.php +50 -10
- includes/class-wcj-wholesale-price.php +30 -18
- includes/classes/class-wcj-module.php +5 -5
- includes/css/wcj-shipping-calculator.css +9 -0
- includes/functions/wcj-functions.php +72 -14
- includes/functions/wcj-html-functions.php +12 -8
- includes/gateways/class-wc-gateway-wcj-custom.php +4 -4
- includes/js/wcj-shipping-calculator.js +19 -0
- includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php +65 -23
- includes/pdf-invoices/settings/class-wcj-pdf-invoicing-display.php +3 -3
- includes/price-by-country/class-wcj-price-by-country-core.php +3 -13
- includes/reports/class-wcj-currency-reports.php +14 -10
- includes/reports/wcj-class-reports-sales.php +58 -22
- includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php +46 -7
- includes/shortcodes/class-wcj-general-shortcodes.php +14 -5
- includes/shortcodes/class-wcj-order-items-shortcodes.php +85 -21
- includes/shortcodes/class-wcj-orders-shortcodes.php +131 -12
- includes/shortcodes/class-wcj-products-shortcodes.php +175 -56
- includes/shortcodes/class-wcj-shortcodes.php +9 -3
- langs/woocommerce-jetpack.pot +890 -612
- readme.txt +105 -20
- woocommerce-jetpack.php +74 -12
includes/admin/class-wc-settings-jetpack.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Settings class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 1.0.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -18,7 +18,7 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
-
* @version 2.
|
22 |
*/
|
23 |
function __construct() {
|
24 |
|
@@ -38,6 +38,17 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
38 |
add_action( 'woocommerce_admin_field_custom_link', array( $this, 'output_custom_link' ) );
|
39 |
add_action( 'woocommerce_admin_field_module_tools', array( $this, 'output_module_tools' ) );
|
40 |
add_action( 'woocommerce_admin_field_custom_textarea', array( $this, 'output_custom_textarea' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
42 |
|
43 |
/**
|
@@ -267,15 +278,15 @@ class WC_Settings_Jetpack extends WC_Settings_Page {
|
|
267 |
$is_dashboard = ( '' != $current_section && 'alphabetically' != $current_section && 'by_category' != $current_section && 'active' != $current_section && 'manager' != $current_section )
|
268 |
? false : true;
|
269 |
|
270 |
-
//
|
271 |
-
$
|
272 |
'product_info' => '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=products§ion=product_custom_info' ) . '">' . __( 'Product Info', 'woocommerce-jetpack' ) . '</a>',
|
273 |
);
|
274 |
-
if ( array_key_exists( $current_section, $
|
275 |
echo '<div id="wcj_message" class="error">';
|
276 |
echo '<p>';
|
277 |
echo '<strong>';
|
278 |
-
echo sprintf( __( 'Please note that current <em>%s</em> module is
|
279 |
echo '</strong>';
|
280 |
echo '</p>';
|
281 |
echo '</div>';
|
4 |
*
|
5 |
* The WooCommerce Jetpack Settings class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 1.0.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
+
* @version 2.5.7
|
22 |
*/
|
23 |
function __construct() {
|
24 |
|
38 |
add_action( 'woocommerce_admin_field_custom_link', array( $this, 'output_custom_link' ) );
|
39 |
add_action( 'woocommerce_admin_field_module_tools', array( $this, 'output_module_tools' ) );
|
40 |
add_action( 'woocommerce_admin_field_custom_textarea', array( $this, 'output_custom_textarea' ) );
|
41 |
+
add_filter( 'woocommerce_admin_settings_sanitize_option', array( $this, 'unclean_custom_textarea' ), PHP_INT_MAX, 3 );
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* unclean_custom_textarea.
|
46 |
+
*
|
47 |
+
* @version 2.5.7
|
48 |
+
* @since 2.5.7
|
49 |
+
*/
|
50 |
+
function unclean_custom_textarea( $value, $option, $raw_value ) {
|
51 |
+
return ( 'custom_textarea' === $option['type'] ) ? $raw_value : $value;
|
52 |
}
|
53 |
|
54 |
/**
|
278 |
$is_dashboard = ( '' != $current_section && 'alphabetically' != $current_section && 'by_category' != $current_section && 'active' != $current_section && 'manager' != $current_section )
|
279 |
? false : true;
|
280 |
|
281 |
+
// Deprecated message
|
282 |
+
$deprecated_modules_and_links = array(
|
283 |
'product_info' => '<a href="' . admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=products§ion=product_custom_info' ) . '">' . __( 'Product Info', 'woocommerce-jetpack' ) . '</a>',
|
284 |
);
|
285 |
+
if ( array_key_exists( $current_section, $deprecated_modules_and_links ) ) {
|
286 |
echo '<div id="wcj_message" class="error">';
|
287 |
echo '<p>';
|
288 |
echo '<strong>';
|
289 |
+
echo sprintf( __( 'Please note that current <em>%s</em> module is deprecated and will be removed in future updates. Please use <em>%s</em> module instead.', 'woocommerce-jetpack' ), WCJ()->modules[ $current_section ]->short_desc, $deprecated_modules_and_links[ $current_section ] );
|
290 |
echo '</strong>';
|
291 |
echo '</p>';
|
292 |
echo '</div>';
|
includes/admin/class-wcj-tools.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Tools class.
|
6 |
*
|
7 |
-
* @version 2.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -26,14 +26,14 @@ class WCJ_Tools {
|
|
26 |
/**
|
27 |
* add_wcj_tools.
|
28 |
*
|
29 |
-
* @version 2.
|
30 |
*/
|
31 |
function add_wcj_tools() {
|
32 |
add_submenu_page(
|
33 |
'woocommerce',
|
34 |
__( 'Booster for WooCommerce Tools', 'woocommerce-jetpack' ),
|
35 |
__( 'Booster Tools', 'woocommerce-jetpack' ),
|
36 |
-
'
|
37 |
'wcj-tools',
|
38 |
array( $this, 'create_tools_page' )
|
39 |
);
|
4 |
*
|
5 |
* The WooCommerce Jetpack Tools class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
26 |
/**
|
27 |
* add_wcj_tools.
|
28 |
*
|
29 |
+
* @version 2.5.7
|
30 |
*/
|
31 |
function add_wcj_tools() {
|
32 |
add_submenu_page(
|
33 |
'woocommerce',
|
34 |
__( 'Booster for WooCommerce Tools', 'woocommerce-jetpack' ),
|
35 |
__( 'Booster Tools', 'woocommerce-jetpack' ),
|
36 |
+
'manage_woocommerce',
|
37 |
'wcj-tools',
|
38 |
array( $this, 'create_tools_page' )
|
39 |
);
|
includes/admin/wcj-modules-cats.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Modules Array.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -37,6 +37,7 @@ return array(
|
|
37 |
'product_open_pricing',
|
38 |
'price_by_user_role',
|
39 |
'product_price_by_formula',
|
|
|
40 |
'currency_exchange_rates',
|
41 |
'price_formats',
|
42 |
),
|
@@ -113,6 +114,7 @@ return array(
|
|
113 |
'shipping_calculator',
|
114 |
'address_formats',
|
115 |
'orders',
|
|
|
116 |
'order_numbers',
|
117 |
'order_custom_statuses',
|
118 |
),
|
@@ -139,6 +141,7 @@ return array(
|
|
139 |
'default_cat_id' => 'general',
|
140 |
'all_cat_ids' => array(
|
141 |
'general',
|
|
|
142 |
'export',
|
143 |
// 'shortcodes',
|
144 |
'eu_vat_number',
|
4 |
*
|
5 |
* The WooCommerce Modules Array.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
37 |
'product_open_pricing',
|
38 |
'price_by_user_role',
|
39 |
'product_price_by_formula',
|
40 |
+
'global_discount',
|
41 |
'currency_exchange_rates',
|
42 |
'price_formats',
|
43 |
),
|
114 |
'shipping_calculator',
|
115 |
'address_formats',
|
116 |
'orders',
|
117 |
+
'order_min_amount',
|
118 |
'order_numbers',
|
119 |
'order_custom_statuses',
|
120 |
),
|
141 |
'default_cat_id' => 'general',
|
142 |
'all_cat_ids' => array(
|
143 |
'general',
|
144 |
+
'products_xml',
|
145 |
'export',
|
146 |
// 'shortcodes',
|
147 |
'eu_vat_number',
|
includes/class-wcj-add-to-cart.php
CHANGED
@@ -244,10 +244,10 @@ class WCJ_Add_To_Cart extends WCJ_Module {
|
|
244 |
|
245 |
for ( $i = 1; $i <= apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
|
246 |
|
247 |
-
/* $
|
248 |
-
if ( false !== $
|
249 |
-
if ( '' != $
|
250 |
-
update_option( 'wcj_add_to_cart_per_category_ids_group_' . $i, explode( ',', str_replace( ' ', '', $
|
251 |
}
|
252 |
//delete_option( 'wcj_add_to_cart_per_category_group_' . $i );
|
253 |
} */
|
244 |
|
245 |
for ( $i = 1; $i <= apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_add_to_cart_per_category_total_groups_number', 1 ) ); $i++ ) {
|
246 |
|
247 |
+
/* $deprecated = get_option( 'wcj_add_to_cart_per_category_group_' . $i );
|
248 |
+
if ( false !== $deprecated ) {
|
249 |
+
if ( '' != $deprecated ) {
|
250 |
+
update_option( 'wcj_add_to_cart_per_category_ids_group_' . $i, explode( ',', str_replace( ' ', '', $deprecated ) ) );
|
251 |
}
|
252 |
//delete_option( 'wcj_add_to_cart_per_category_group_' . $i );
|
253 |
} */
|
includes/class-wcj-admin-tools.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Admin Tools class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,7 +17,7 @@ class WCJ_Admin_Tools extends WCJ_Module {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.5.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
@@ -29,17 +29,25 @@ class WCJ_Admin_Tools extends WCJ_Module {
|
|
29 |
|
30 |
$this->add_tools( array(
|
31 |
'admin_tools' => array(
|
32 |
-
'title'
|
33 |
-
'desc'
|
34 |
'tab_title' => __( 'Log', 'woocommerce-jetpack' ),
|
35 |
),
|
36 |
) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
|
39 |
/**
|
40 |
* create_tool.
|
41 |
*
|
42 |
-
* @version 2.5.
|
43 |
*/
|
44 |
public function create_admin_tools_tool() {
|
45 |
|
@@ -50,35 +58,59 @@ class WCJ_Admin_Tools extends WCJ_Module {
|
|
50 |
}
|
51 |
|
52 |
$the_tools = '';
|
53 |
-
$the_tools .= $this->
|
54 |
-
$the_tools .= '<
|
55 |
-
$the_tools .= '<a href="' . add_query_arg( 'wcj_delete_log', '1' ) . '">' . __( 'Delete Log', 'woocommerce-jetpack' ) . '</a>';
|
56 |
|
57 |
$the_log = '';
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
|
67 |
/**
|
68 |
* get_settings.
|
69 |
*
|
70 |
-
* @version 2.
|
71 |
*/
|
72 |
function get_settings() {
|
73 |
-
|
74 |
$settings = array(
|
75 |
-
|
76 |
array(
|
77 |
'title' => __( 'Admin Tools Options', 'woocommerce-jetpack' ),
|
78 |
'type' => 'title',
|
79 |
'id' => 'wcj_admin_tools_module_options',
|
80 |
),
|
81 |
-
|
82 |
array(
|
83 |
'title' => __( 'Logging', 'woocommerce-jetpack' ),
|
84 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
@@ -86,7 +118,6 @@ class WCJ_Admin_Tools extends WCJ_Module {
|
|
86 |
'default' => 'no',
|
87 |
'type' => 'checkbox',
|
88 |
),
|
89 |
-
|
90 |
array(
|
91 |
'title' => __( 'Debug', 'woocommerce-jetpack' ),
|
92 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
@@ -94,20 +125,35 @@ class WCJ_Admin_Tools extends WCJ_Module {
|
|
94 |
'default' => 'no',
|
95 |
'type' => 'checkbox',
|
96 |
),
|
97 |
-
|
98 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
'title' => __( 'Custom Shortcode', 'woocommerce-jetpack' ),
|
100 |
'id' => 'wcj_custom_shortcode_1',
|
101 |
'default' => '',
|
102 |
'type' => 'textarea',
|
103 |
-
),
|
104 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
array(
|
106 |
'type' => 'sectionend',
|
107 |
'id' => 'wcj_admin_tools_module_options',
|
108 |
),
|
109 |
);
|
110 |
-
|
111 |
return $this->add_standard_settings( $settings );
|
112 |
}
|
113 |
}
|
4 |
*
|
5 |
* The WooCommerce Jetpack Admin Tools class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
29 |
|
30 |
$this->add_tools( array(
|
31 |
'admin_tools' => array(
|
32 |
+
'title' => __( 'Admin Tools', 'woocommerce-jetpack' ),
|
33 |
+
'desc' => __( 'Log.', 'woocommerce-jetpack' ),
|
34 |
'tab_title' => __( 'Log', 'woocommerce-jetpack' ),
|
35 |
),
|
36 |
) );
|
37 |
+
|
38 |
+
$this->current_php_memory_limit = '';
|
39 |
+
if ( $this->is_enabled() ) {
|
40 |
+
if ( 0 != ( $php_memory_limit = get_option( 'wcj_admin_tools_php_memory_limit', 0 ) ) ) {
|
41 |
+
ini_set( 'memory_limit', $php_memory_limit . 'M' );
|
42 |
+
}
|
43 |
+
$this->current_php_memory_limit = sprintf( ' ' . __( 'Current PHP memory limit: %s.', 'woocommerce-jetpack' ), ini_get( 'memory_limit' ) );
|
44 |
+
}
|
45 |
}
|
46 |
|
47 |
/**
|
48 |
* create_tool.
|
49 |
*
|
50 |
+
* @version 2.5.7
|
51 |
*/
|
52 |
public function create_admin_tools_tool() {
|
53 |
|
58 |
}
|
59 |
|
60 |
$the_tools = '';
|
61 |
+
$the_tools .= $this->get_tool_header_html( 'admin_tools' );
|
62 |
+
$the_tools .= '<p><a href="' . add_query_arg( 'wcj_delete_log', '1' ) . '">' . __( 'Delete Log', 'woocommerce-jetpack' ) . '</a></p>';
|
|
|
63 |
|
64 |
$the_log = '';
|
65 |
+
$the_log .= '<pre>' . get_option( 'wcj_log', '' ) . '</pre>';
|
66 |
+
|
67 |
+
$html = '';
|
68 |
+
$html .= '<p>' . $the_tools . '</p>';
|
69 |
+
$html .= '<p>' . $the_notice . '</p>';
|
70 |
+
$html .= '<p>' . $the_log . '</p>';
|
71 |
+
echo $html;
|
72 |
+
}
|
73 |
|
74 |
+
/**
|
75 |
+
* get_system_info_table_array.
|
76 |
+
*
|
77 |
+
* @version 2.5.7
|
78 |
+
* @since 2.5.7
|
79 |
+
*/
|
80 |
+
function get_system_info_table_array() {
|
81 |
+
$system_info = array();
|
82 |
+
$constants_array = array(
|
83 |
+
'WP_MEMORY_LIMIT',
|
84 |
+
'WP_MAX_MEMORY_LIMIT',
|
85 |
+
// 'DB_NAME',
|
86 |
+
// 'DB_USER',
|
87 |
+
// 'DB_PASSWORD',
|
88 |
+
// 'DB_HOST',
|
89 |
+
// 'DB_CHARSET',
|
90 |
+
// 'DB_COLLATE',
|
91 |
+
'WP_DEBUG',
|
92 |
+
'ABSPATH',
|
93 |
+
'DISABLE_WP_CRON',
|
94 |
+
'WP_CRON_LOCK_TIMEOUT',
|
95 |
+
);
|
96 |
+
foreach ( $constants_array as $the_constant ) {
|
97 |
+
$system_info[] = array( $the_constant, ( defined( $the_constant ) ? constant( $the_constant ) : __( 'NOT DEFINED', 'woocommerce-jetpack' ) ) );
|
98 |
+
}
|
99 |
+
return $system_info;
|
100 |
}
|
101 |
|
102 |
/**
|
103 |
* get_settings.
|
104 |
*
|
105 |
+
* @version 2.5.7
|
106 |
*/
|
107 |
function get_settings() {
|
|
|
108 |
$settings = array(
|
|
|
109 |
array(
|
110 |
'title' => __( 'Admin Tools Options', 'woocommerce-jetpack' ),
|
111 |
'type' => 'title',
|
112 |
'id' => 'wcj_admin_tools_module_options',
|
113 |
),
|
|
|
114 |
array(
|
115 |
'title' => __( 'Logging', 'woocommerce-jetpack' ),
|
116 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
118 |
'default' => 'no',
|
119 |
'type' => 'checkbox',
|
120 |
),
|
|
|
121 |
array(
|
122 |
'title' => __( 'Debug', 'woocommerce-jetpack' ),
|
123 |
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
125 |
'default' => 'no',
|
126 |
'type' => 'checkbox',
|
127 |
),
|
128 |
+
array(
|
129 |
+
'title' => __( 'PHP Memory Limit', 'woocommerce-jetpack' ),
|
130 |
+
'desc' => __( 'megabytes.', 'woocommerce-jetpack' ),
|
131 |
+
'desc_tip' => __( 'Set zero to disable.', 'woocommerce-jetpack' ) . $this->current_php_memory_limit,
|
132 |
+
'id' => 'wcj_admin_tools_php_memory_limit',
|
133 |
+
'default' => 0,
|
134 |
+
'type' => 'number',
|
135 |
+
'custom_attributes' => array( 'min' => 0 ),
|
136 |
+
),
|
137 |
+
/*
|
138 |
+
array(
|
139 |
'title' => __( 'Custom Shortcode', 'woocommerce-jetpack' ),
|
140 |
'id' => 'wcj_custom_shortcode_1',
|
141 |
'default' => '',
|
142 |
'type' => 'textarea',
|
143 |
+
),
|
144 |
+
*/
|
145 |
+
array(
|
146 |
+
'title' => __( 'System Info', 'woocommerce-jetpack' ),
|
147 |
+
'id' => 'wcj_admin_tools_system_info',
|
148 |
+
'default' => '',
|
149 |
+
'type' => 'custom_link',
|
150 |
+
'link' => '<pre>' . wcj_get_table_html( $this->get_system_info_table_array(), array( 'columns_styles' => array( 'padding:0;', 'padding:0;' ), 'table_heading_type' => 'vertical' ) ) . '</pre>',
|
151 |
+
),
|
152 |
array(
|
153 |
'type' => 'sectionend',
|
154 |
'id' => 'wcj_admin_tools_module_options',
|
155 |
),
|
156 |
);
|
|
|
157 |
return $this->add_standard_settings( $settings );
|
158 |
}
|
159 |
}
|
includes/class-wcj-call-for-price.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Call for Price class.
|
6 |
*
|
7 |
-
* @version 2.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,7 +17,7 @@ class WCJ_Call_For_Price extends WCJ_module {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
@@ -32,11 +32,24 @@ class WCJ_Call_For_Price extends WCJ_module {
|
|
32 |
|
33 |
if ( $this->is_enabled() ) {
|
34 |
add_action( 'init', array( $this, 'add_hook' ), PHP_INT_MAX );
|
35 |
-
// add_filter( 'woocommerce_empty_price_html', array( $this, 'on_empty_price' ), PHP_INT_MAX );
|
36 |
add_filter( 'woocommerce_sale_flash', array( $this, 'hide_sales_flash' ), 100, 3 );
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
}
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
/**
|
41 |
* add_hook.
|
42 |
*/
|
@@ -48,9 +61,11 @@ class WCJ_Call_For_Price extends WCJ_module {
|
|
48 |
* Hide "sales" icon for empty price products.
|
49 |
*/
|
50 |
public function hide_sales_flash( $onsale_html, $post, $product ) {
|
51 |
-
if ( get_option('wcj_call_for_price_hide_sale_sign') === 'yes' )
|
52 |
-
if ( $product->get_price() === '' )
|
53 |
return '';
|
|
|
|
|
54 |
return $onsale_html;
|
55 |
}
|
56 |
|
@@ -58,14 +73,18 @@ class WCJ_Call_For_Price extends WCJ_module {
|
|
58 |
* On empty price filter - return the label.
|
59 |
*/
|
60 |
public function on_empty_price( $price ) {
|
61 |
-
if ( ( get_option('wcj_call_for_price_text') !== '' ) && is_single( get_the_ID() ) )
|
62 |
return do_shortcode( apply_filters( 'wcj_get_option_filter', $this->default_empty_price_text, get_option('wcj_call_for_price_text') ) );
|
63 |
-
|
|
|
64 |
return do_shortcode( apply_filters( 'wcj_get_option_filter', $this->default_empty_price_text, get_option('wcj_call_for_price_text_on_related') ) );
|
65 |
-
|
|
|
66 |
return do_shortcode( apply_filters( 'wcj_get_option_filter', $this->default_empty_price_text, get_option('wcj_call_for_price_text_on_archive') ) );
|
67 |
-
|
|
|
68 |
return do_shortcode( apply_filters( 'wcj_get_option_filter', $this->default_empty_price_text, get_option('wcj_call_for_price_text_on_home') ) );
|
|
|
69 |
|
70 |
// No changes
|
71 |
return $price;
|
@@ -74,7 +93,7 @@ class WCJ_Call_For_Price extends WCJ_module {
|
|
74 |
/**
|
75 |
* Get settings array.
|
76 |
*
|
77 |
-
* @version 2.
|
78 |
*/
|
79 |
function get_settings() {
|
80 |
$settings = array(
|
@@ -135,6 +154,14 @@ class WCJ_Call_For_Price extends WCJ_module {
|
|
135 |
'default' => 'yes',
|
136 |
'type' => 'checkbox',
|
137 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
array(
|
139 |
'type' => 'sectionend',
|
140 |
'id' => 'wcj_call_for_price_options',
|
4 |
*
|
5 |
* The WooCommerce Jetpack Call for Price class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
32 |
|
33 |
if ( $this->is_enabled() ) {
|
34 |
add_action( 'init', array( $this, 'add_hook' ), PHP_INT_MAX );
|
|
|
35 |
add_filter( 'woocommerce_sale_flash', array( $this, 'hide_sales_flash' ), 100, 3 );
|
36 |
+
|
37 |
+
if ( 'yes' === get_option( 'wcj_call_for_price_make_all_empty', 'no' ) ) {
|
38 |
+
add_filter( 'woocommerce_get_price', array( $this, 'make_empty_price' ), PHP_INT_MAX, 2 );
|
39 |
+
}
|
40 |
}
|
41 |
}
|
42 |
|
43 |
+
/**
|
44 |
+
* make_empty_price.
|
45 |
+
*
|
46 |
+
* @version 2.5.7
|
47 |
+
* @since 2.5.7
|
48 |
+
*/
|
49 |
+
function make_empty_price( $price, $_product ) {
|
50 |
+
return ( ! $_product->is_type( array( 'variable', 'variation' ) ) ) ? '' : $price;
|
51 |
+
}
|
52 |
+
|
53 |
/**
|
54 |
* add_hook.
|
55 |
*/
|
61 |
* Hide "sales" icon for empty price products.
|
62 |
*/
|
63 |
public function hide_sales_flash( $onsale_html, $post, $product ) {
|
64 |
+
if ( get_option('wcj_call_for_price_hide_sale_sign') === 'yes' ) {
|
65 |
+
if ( $product->get_price() === '' ) {
|
66 |
return '';
|
67 |
+
}
|
68 |
+
}
|
69 |
return $onsale_html;
|
70 |
}
|
71 |
|
73 |
* On empty price filter - return the label.
|
74 |
*/
|
75 |
public function on_empty_price( $price ) {
|
76 |
+
if ( ( get_option('wcj_call_for_price_text') !== '' ) && is_single( get_the_ID() ) ) {
|
77 |
return do_shortcode( apply_filters( 'wcj_get_option_filter', $this->default_empty_price_text, get_option('wcj_call_for_price_text') ) );
|
78 |
+
}
|
79 |
+
if ( ( get_option('wcj_call_for_price_text_on_related') !== '' ) && ( is_single() ) && ( ! is_single( get_the_ID() ) ) ) {
|
80 |
return do_shortcode( apply_filters( 'wcj_get_option_filter', $this->default_empty_price_text, get_option('wcj_call_for_price_text_on_related') ) );
|
81 |
+
}
|
82 |
+
if ( ( get_option('wcj_call_for_price_text_on_archive') !== '' ) && is_archive() ) {
|
83 |
return do_shortcode( apply_filters( 'wcj_get_option_filter', $this->default_empty_price_text, get_option('wcj_call_for_price_text_on_archive') ) );
|
84 |
+
}
|
85 |
+
if ( ( get_option('wcj_call_for_price_text_on_home') !== '' ) && is_front_page() ) {
|
86 |
return do_shortcode( apply_filters( 'wcj_get_option_filter', $this->default_empty_price_text, get_option('wcj_call_for_price_text_on_home') ) );
|
87 |
+
}
|
88 |
|
89 |
// No changes
|
90 |
return $price;
|
93 |
/**
|
94 |
* Get settings array.
|
95 |
*
|
96 |
+
* @version 2.5.7
|
97 |
*/
|
98 |
function get_settings() {
|
99 |
$settings = array(
|
154 |
'default' => 'yes',
|
155 |
'type' => 'checkbox',
|
156 |
),
|
157 |
+
array(
|
158 |
+
'title' => __( 'Make All Products Call for Price', 'woocommerce-jetpack' ),
|
159 |
+
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
160 |
+
'desc_tip' => __( 'Enable this to make all products (except variable) prices empty. When checkbox disabled, all prices go back to normal.', 'woocommerce-jetpack' ),
|
161 |
+
'id' => 'wcj_call_for_price_make_all_empty',
|
162 |
+
'default' => 'no',
|
163 |
+
'type' => 'checkbox',
|
164 |
+
),
|
165 |
array(
|
166 |
'type' => 'sectionend',
|
167 |
'id' => 'wcj_call_for_price_options',
|
includes/class-wcj-empty-cart-button.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Empty Cart Button class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.2.1
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -18,13 +18,13 @@ class WCJ_Empty_Cart_Button extends WCJ_Module {
|
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
-
* @version 2.5.
|
22 |
*/
|
23 |
function __construct() {
|
24 |
|
25 |
$this->id = 'empty_cart';
|
26 |
$this->short_desc = __( 'Empty Cart Button', 'woocommerce-jetpack' );
|
27 |
-
$this->desc = __( 'Add and customize "Empty Cart" button to cart page.', 'woocommerce-jetpack' );
|
28 |
$this->link = 'http://booster.io/features/woocommerce-empty-cart-button/';
|
29 |
parent::__construct();
|
30 |
|
4 |
*
|
5 |
* The WooCommerce Jetpack Empty Cart Button class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.2.1
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
+
* @version 2.5.7
|
22 |
*/
|
23 |
function __construct() {
|
24 |
|
25 |
$this->id = 'empty_cart';
|
26 |
$this->short_desc = __( 'Empty Cart Button', 'woocommerce-jetpack' );
|
27 |
+
$this->desc = __( 'Add and customize "Empty Cart" button to WooCommerce cart page.', 'woocommerce-jetpack' );
|
28 |
$this->link = 'http://booster.io/features/woocommerce-empty-cart-button/';
|
29 |
parent::__construct();
|
30 |
|
includes/class-wcj-eu-vat-number.php
CHANGED
@@ -4,9 +4,10 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack EU VAT Number class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.3.9
|
9 |
* @author Algoritmika Ltd.
|
|
|
10 |
*/
|
11 |
|
12 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
@@ -239,7 +240,7 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
|
|
239 |
/**
|
240 |
* maybe_exclude_vat.
|
241 |
*
|
242 |
-
* @version 2.5.
|
243 |
*/
|
244 |
// function maybe_exclude_vat( $matched_tax_rates, $args ) {
|
245 |
function maybe_exclude_vat() {
|
@@ -257,6 +258,9 @@ class WCJ_EU_VAT_Number extends WCJ_Module {
|
|
257 |
$location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
|
258 |
}
|
259 |
$selected_country = substr( $_SESSION['wcj_eu_vat_number_to_check'], 0, 2 );
|
|
|
|
|
|
|
260 |
$preserve_base_country_check_passed = ( $location['country'] !== $selected_country ) ? true : false;
|
261 |
}
|
262 |
if ( $preserve_base_country_check_passed ) {
|
4 |
*
|
5 |
* The WooCommerce Jetpack EU VAT Number class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.3.9
|
9 |
* @author Algoritmika Ltd.
|
10 |
+
* @todo Move (maybe) to "CART & CHECKOUT" category;
|
11 |
*/
|
12 |
|
13 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
240 |
/**
|
241 |
* maybe_exclude_vat.
|
242 |
*
|
243 |
+
* @version 2.5.7
|
244 |
*/
|
245 |
// function maybe_exclude_vat( $matched_tax_rates, $args ) {
|
246 |
function maybe_exclude_vat() {
|
258 |
$location = wc_format_country_state_string( apply_filters( 'woocommerce_customer_default_location', get_option( 'woocommerce_default_country' ) ) );
|
259 |
}
|
260 |
$selected_country = substr( $_SESSION['wcj_eu_vat_number_to_check'], 0, 2 );
|
261 |
+
if ( 'EL' === $selected_country ) {
|
262 |
+
$selected_country = 'GR';
|
263 |
+
}
|
264 |
$preserve_base_country_check_passed = ( $location['country'] !== $selected_country ) ? true : false;
|
265 |
}
|
266 |
if ( $preserve_base_country_check_passed ) {
|
includes/class-wcj-export-import.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Export Import class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.5.4
|
9 |
* @author Algoritmika Ltd.
|
10 |
* @todo import products (maybe orders, customers) tool(s);
|
@@ -82,7 +82,7 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
82 |
/**
|
83 |
* export_csv.
|
84 |
*
|
85 |
-
* @version 2.5.
|
86 |
* @since 2.4.8
|
87 |
*/
|
88 |
function export_csv() {
|
@@ -92,10 +92,11 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
92 |
foreach ( $data as $row ) {
|
93 |
$csv .= implode( get_option( 'wcj_export_csv_separator', ',' ), $row ) . PHP_EOL;
|
94 |
}
|
95 |
-
|
|
|
|
|
96 |
header( "Content-Disposition: attachment; filename=" . $_POST['wcj_export'] . ".csv" );
|
97 |
-
header( "Content-Type:
|
98 |
-
header( "Content-Type: application/download" );
|
99 |
header( "Content-Description: File Transfer" );
|
100 |
header( "Content-Length: " . strlen( $csv ) );
|
101 |
echo $csv;
|
@@ -139,7 +140,7 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
139 |
/**
|
140 |
* get_order_export_fields.
|
141 |
*
|
142 |
-
* @version 2.5.
|
143 |
* @since 2.5.6
|
144 |
*/
|
145 |
function get_order_export_fields() {
|
@@ -148,6 +149,7 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
148 |
'order-number' => __( 'Order Number', 'woocommerce-jetpack' ),
|
149 |
'order-status' => __( 'Order Status', 'woocommerce-jetpack' ),
|
150 |
'order-date' => __( 'Order Date', 'woocommerce-jetpack' ),
|
|
|
151 |
'order-item-count' => __( 'Order Item Count', 'woocommerce-jetpack' ),
|
152 |
'order-items' => __( 'Order Items', 'woocommerce-jetpack' ),
|
153 |
'order-items-product-input-fields' => __( 'Order Items Product Input Fields', 'woocommerce-jetpack' ),
|
@@ -182,7 +184,7 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
182 |
/**
|
183 |
* get_order_export_default_fields_ids.
|
184 |
*
|
185 |
-
* @version 2.5.
|
186 |
* @since 2.5.6
|
187 |
*/
|
188 |
function get_order_export_default_fields_ids() {
|
@@ -191,6 +193,7 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
191 |
'order-number',
|
192 |
'order-status',
|
193 |
'order-date',
|
|
|
194 |
'order-item-count',
|
195 |
'order-items',
|
196 |
'order-currency',
|
@@ -221,14 +224,80 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
221 |
);
|
222 |
}
|
223 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
/**
|
225 |
* create_export_tool.
|
226 |
*
|
227 |
-
* @version 2.5.
|
228 |
* @since 2.4.8
|
229 |
*/
|
230 |
function create_export_tool( $tool_id ) {
|
231 |
$data = $this->export( $tool_id );
|
|
|
232 |
echo '<form method="post" action="">';
|
233 |
echo '<p>' . $this->export_filter_fields( $tool_id ) . '</p>';
|
234 |
echo '<p><button class="button-primary" type="submit" name="wcj_export" value="' . $tool_id . '">' . __( 'Download CSV', 'woocommerce-jetpack' ) . '</button></p>';
|
@@ -300,7 +369,7 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
300 |
/**
|
301 |
* export_orders.
|
302 |
*
|
303 |
-
* @version 2.5.
|
304 |
* @since 2.4.8
|
305 |
*/
|
306 |
function export_orders() {
|
@@ -373,7 +442,10 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
373 |
$row[] = $order->get_status();
|
374 |
break;
|
375 |
case 'order-date':
|
376 |
-
$row[] = get_the_date( '
|
|
|
|
|
|
|
377 |
break;
|
378 |
case 'order-item-count':
|
379 |
$row[] = $order->get_item_count();
|
@@ -468,27 +540,66 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
468 |
return $data;
|
469 |
}
|
470 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
471 |
/**
|
472 |
* export_products.
|
473 |
*
|
474 |
-
* @version 2.5.
|
475 |
* @since 2.5.3
|
|
|
476 |
*/
|
477 |
function export_products() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
$data = array();
|
479 |
-
$data[] =
|
480 |
-
__( 'Product ID', 'woocommerce-jetpack' ),
|
481 |
-
__( 'Name', 'woocommerce-jetpack' ),
|
482 |
-
__( 'SKU', 'woocommerce-jetpack' ),
|
483 |
-
__( 'Stock', 'woocommerce-jetpack' ),
|
484 |
-
__( 'Regular Price', 'woocommerce-jetpack' ),
|
485 |
-
__( 'Sale Price', 'woocommerce-jetpack' ),
|
486 |
-
__( 'Price', 'woocommerce-jetpack' ),
|
487 |
-
__( 'Type', 'woocommerce-jetpack' ),
|
488 |
-
// __( 'Attributes', 'woocommerce-jetpack' ),
|
489 |
-
);
|
490 |
$offset = 0;
|
491 |
-
$block_size =
|
492 |
while( true ) {
|
493 |
$args = array(
|
494 |
'post_type' => 'product',
|
@@ -497,24 +608,154 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
497 |
'orderby' => 'date',
|
498 |
'order' => 'DESC',
|
499 |
'offset' => $offset,
|
|
|
500 |
);
|
501 |
$loop = new WP_Query( $args );
|
502 |
-
if ( ! $loop->have_posts() )
|
503 |
-
|
504 |
-
|
|
|
505 |
$_product = wc_get_product( $product_id );
|
506 |
-
$
|
507 |
-
|
508 |
-
$
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
518 |
$offset += $block_size;
|
519 |
}
|
520 |
return $data;
|
@@ -570,35 +811,100 @@ class WCJ_Export_Import extends WCJ_Module {
|
|
570 |
/**
|
571 |
* get_settings.
|
572 |
*
|
573 |
-
* @version 2.5.
|
574 |
* @since 2.5.4
|
575 |
*/
|
576 |
function get_settings() {
|
577 |
$settings = array(
|
578 |
array(
|
579 |
-
'title'
|
580 |
-
'type'
|
581 |
-
'id'
|
|
|
|
|
|
|
|
|
|
|
|
|
582 |
),
|
583 |
array(
|
584 |
-
'title'
|
585 |
-
'
|
586 |
-
'
|
587 |
-
'
|
|
|
|
|
588 |
),
|
589 |
array(
|
590 |
-
'title'
|
591 |
-
'id'
|
592 |
-
'default'
|
593 |
-
'type'
|
594 |
-
'options'
|
595 |
-
'css'
|
596 |
),
|
597 |
array(
|
598 |
-
'
|
599 |
-
'id'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
600 |
),
|
601 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
602 |
return $this->add_standard_settings( $settings );
|
603 |
}
|
604 |
}
|
4 |
*
|
5 |
* The WooCommerce Jetpack Export Import class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.5.4
|
9 |
* @author Algoritmika Ltd.
|
10 |
* @todo import products (maybe orders, customers) tool(s);
|
82 |
/**
|
83 |
* export_csv.
|
84 |
*
|
85 |
+
* @version 2.5.7
|
86 |
* @since 2.4.8
|
87 |
*/
|
88 |
function export_csv() {
|
92 |
foreach ( $data as $row ) {
|
93 |
$csv .= implode( get_option( 'wcj_export_csv_separator', ',' ), $row ) . PHP_EOL;
|
94 |
}
|
95 |
+
if ( 'yes' === get_option( 'wcj_export_csv_add_utf_8_bom', 'yes' ) ) {
|
96 |
+
$csv = "\xEF\xBB\xBF" . $csv; // UTF-8 BOM
|
97 |
+
}
|
98 |
header( "Content-Disposition: attachment; filename=" . $_POST['wcj_export'] . ".csv" );
|
99 |
+
header( "Content-Type: Content-Type: text/html; charset=utf-8" );
|
|
|
100 |
header( "Content-Description: File Transfer" );
|
101 |
header( "Content-Length: " . strlen( $csv ) );
|
102 |
echo $csv;
|
140 |
/**
|
141 |
* get_order_export_fields.
|
142 |
*
|
143 |
+
* @version 2.5.7
|
144 |
* @since 2.5.6
|
145 |
*/
|
146 |
function get_order_export_fields() {
|
149 |
'order-number' => __( 'Order Number', 'woocommerce-jetpack' ),
|
150 |
'order-status' => __( 'Order Status', 'woocommerce-jetpack' ),
|
151 |
'order-date' => __( 'Order Date', 'woocommerce-jetpack' ),
|
152 |
+
'order-time' => __( 'Order Time', 'woocommerce-jetpack' ),
|
153 |
'order-item-count' => __( 'Order Item Count', 'woocommerce-jetpack' ),
|
154 |
'order-items' => __( 'Order Items', 'woocommerce-jetpack' ),
|
155 |
'order-items-product-input-fields' => __( 'Order Items Product Input Fields', 'woocommerce-jetpack' ),
|
184 |
/**
|
185 |
* get_order_export_default_fields_ids.
|
186 |
*
|
187 |
+
* @version 2.5.7
|
188 |
* @since 2.5.6
|
189 |
*/
|
190 |
function get_order_export_default_fields_ids() {
|
193 |
'order-number',
|
194 |
'order-status',
|
195 |
'order-date',
|
196 |
+
'order-time',
|
197 |
'order-item-count',
|
198 |
'order-items',
|
199 |
'order-currency',
|
224 |
);
|
225 |
}
|
226 |
|
227 |
+
/**
|
228 |
+
* get_product_export_fields.
|
229 |
+
*
|
230 |
+
* @version 2.5.7
|
231 |
+
* @since 2.5.7
|
232 |
+
*/
|
233 |
+
function get_product_export_fields() {
|
234 |
+
return array(
|
235 |
+
'product-id' => __( 'Product ID', 'woocommerce-jetpack' ),
|
236 |
+
'product-name' => __( 'Name', 'woocommerce-jetpack' ),
|
237 |
+
'product-sku' => __( 'SKU', 'woocommerce-jetpack' ),
|
238 |
+
'product-stock' => __( 'Total Stock', 'woocommerce-jetpack' ),
|
239 |
+
'product-stock-quantity' => __( 'Stock Quantity', 'woocommerce-jetpack' ),
|
240 |
+
'product-regular-price' => __( 'Regular Price', 'woocommerce-jetpack' ),
|
241 |
+
'product-sale-price' => __( 'Sale Price', 'woocommerce-jetpack' ),
|
242 |
+
'product-price' => __( 'Price', 'woocommerce-jetpack' ),
|
243 |
+
'product-type' => __( 'Type', 'woocommerce-jetpack' ),
|
244 |
+
// 'product-attributes' => __( 'Attributes', 'woocommerce-jetpack' ),
|
245 |
+
'product-image-url' => __( 'Image URL', 'woocommerce-jetpack' ),
|
246 |
+
'product-short-description' => __( 'Short Description', 'woocommerce-jetpack' ),
|
247 |
+
'product-description' => __( 'Description', 'woocommerce-jetpack' ),
|
248 |
+
'product-status' => __( 'Status', 'woocommerce-jetpack' ),
|
249 |
+
'product-url' => __( 'URL', 'woocommerce-jetpack' ),
|
250 |
+
'product-shipping-class' => __( 'Shipping Class', 'woocommerce-jetpack' ),
|
251 |
+
'product-shipping-class-id' => __( 'Shipping Class ID', 'woocommerce-jetpack' ),
|
252 |
+
'product-width' => __( 'Width', 'woocommerce-jetpack' ),
|
253 |
+
'product-length' => __( 'Length', 'woocommerce-jetpack' ),
|
254 |
+
'product-height' => __( 'Height', 'woocommerce-jetpack' ),
|
255 |
+
'product-weight' => __( 'Weight', 'woocommerce-jetpack' ),
|
256 |
+
'product-downloadable' => __( 'Downloadable', 'woocommerce-jetpack' ),
|
257 |
+
'product-virtual' => __( 'Virtual', 'woocommerce-jetpack' ),
|
258 |
+
'product-sold-individually' => __( 'Sold Individually', 'woocommerce-jetpack' ),
|
259 |
+
'product-tax-status' => __( 'Tax Status', 'woocommerce-jetpack' ),
|
260 |
+
'product-tax-class' => __( 'Tax Class', 'woocommerce-jetpack' ),
|
261 |
+
'product-manage-stock' => __( 'Manage Stock', 'woocommerce-jetpack' ),
|
262 |
+
'product-stock-status' => __( 'Stock Status', 'woocommerce-jetpack' ),
|
263 |
+
'product-backorders' => __( 'Backorders', 'woocommerce-jetpack' ),
|
264 |
+
'product-featured' => __( 'Featured', 'woocommerce-jetpack' ),
|
265 |
+
'product-visibility' => __( 'Visibility', 'woocommerce-jetpack' ),
|
266 |
+
);
|
267 |
+
}
|
268 |
+
|
269 |
+
/**
|
270 |
+
* get_product_export_default_fields_ids.
|
271 |
+
*
|
272 |
+
* @version 2.5.7
|
273 |
+
* @since 2.5.7
|
274 |
+
*/
|
275 |
+
function get_product_export_default_fields_ids() {
|
276 |
+
return array(
|
277 |
+
'product-id',
|
278 |
+
'product-name',
|
279 |
+
'product-sku',
|
280 |
+
'product-stock',
|
281 |
+
'product-regular-price',
|
282 |
+
'product-sale-price',
|
283 |
+
'product-price',
|
284 |
+
'product-type',
|
285 |
+
'product-image-url',
|
286 |
+
'product-short-description',
|
287 |
+
'product-status',
|
288 |
+
'product-url',
|
289 |
+
);
|
290 |
+
}
|
291 |
+
|
292 |
/**
|
293 |
* create_export_tool.
|
294 |
*
|
295 |
+
* @version 2.5.7
|
296 |
* @since 2.4.8
|
297 |
*/
|
298 |
function create_export_tool( $tool_id ) {
|
299 |
$data = $this->export( $tool_id );
|
300 |
+
echo $this->get_tool_header_html( 'export_' . $tool_id );
|
301 |
echo '<form method="post" action="">';
|
302 |
echo '<p>' . $this->export_filter_fields( $tool_id ) . '</p>';
|
303 |
echo '<p><button class="button-primary" type="submit" name="wcj_export" value="' . $tool_id . '">' . __( 'Download CSV', 'woocommerce-jetpack' ) . '</button></p>';
|
369 |
/**
|
370 |
* export_orders.
|
371 |
*
|
372 |
+
* @version 2.5.7
|
373 |
* @since 2.4.8
|
374 |
*/
|
375 |
function export_orders() {
|
442 |
$row[] = $order->get_status();
|
443 |
break;
|
444 |
case 'order-date':
|
445 |
+
$row[] = get_the_date( get_option( 'date_format' ), $order_id );
|
446 |
+
break;
|
447 |
+
case 'order-time':
|
448 |
+
$row[] = get_the_time( get_option( 'time_format' ), $order_id );
|
449 |
break;
|
450 |
case 'order-item-count':
|
451 |
$row[] = $order->get_item_count();
|
540 |
return $data;
|
541 |
}
|
542 |
|
543 |
+
/**
|
544 |
+
* get_variable_or_grouped_product_info.
|
545 |
+
*
|
546 |
+
* @version 2.5.7
|
547 |
+
* @since 2.5.7
|
548 |
+
*/
|
549 |
+
function get_variable_or_grouped_product_info( $_product, $which_info ) {
|
550 |
+
$all_variations_data = array();
|
551 |
+
foreach ( $_product->get_children() as $child_id ) {
|
552 |
+
$variation = $_product->get_child( $child_id );
|
553 |
+
switch ( $which_info ) {
|
554 |
+
case 'price':
|
555 |
+
$all_variations_data[] = ( '' === $variation->get_price() ) ? '-' : $variation->get_price();
|
556 |
+
break;
|
557 |
+
case 'regular_price':
|
558 |
+
$all_variations_data[] = ( '' === $variation->get_regular_price() ) ? '-' : $variation->get_regular_price();
|
559 |
+
break;
|
560 |
+
case 'sale_price':
|
561 |
+
$all_variations_data[] = ( '' === $variation->get_sale_price() ) ? '-' : $variation->get_sale_price();
|
562 |
+
break;
|
563 |
+
case 'total_stock':
|
564 |
+
$all_variations_data[] = ( null === $variation->get_total_stock() ) ? '-' : $variation->get_total_stock();
|
565 |
+
break;
|
566 |
+
case 'stock_quantity':
|
567 |
+
$all_variations_data[] = ( null === $variation->get_stock_quantity() ) ? '-' : $variation->get_stock_quantity();
|
568 |
+
break;
|
569 |
+
}
|
570 |
+
}
|
571 |
+
return implode( '/', $all_variations_data );
|
572 |
+
}
|
573 |
+
|
574 |
/**
|
575 |
* export_products.
|
576 |
*
|
577 |
+
* @version 2.5.7
|
578 |
* @since 2.5.3
|
579 |
+
* @todo export variations; product attributes; get_price_including_tax, get_price_excluding_tax, get_display_price, get_average_rating, get_rating_count, get_review_count, get_categories, get_tags, get_dimensions, get_formatted_name, get_availability;
|
580 |
*/
|
581 |
function export_products() {
|
582 |
+
|
583 |
+
// Standard Fields
|
584 |
+
$all_fields = $this->get_product_export_fields();
|
585 |
+
$fields_ids = get_option( 'wcj_export_products_fields', $this->get_product_export_default_fields_ids() );
|
586 |
+
$titles = array();
|
587 |
+
foreach( $fields_ids as $field_id ) {
|
588 |
+
$titles[] = $all_fields[ $field_id ];
|
589 |
+
}
|
590 |
+
|
591 |
+
// Additional Fields
|
592 |
+
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_export_products_fields_additional_total_number', 1 ) );
|
593 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
594 |
+
if ( 'yes' === get_option( 'wcj_export_products_fields_additional_enabled_' . $i, 'no' ) ) {
|
595 |
+
$titles[] = get_option( 'wcj_export_products_fields_additional_title_' . $i, '' );
|
596 |
+
}
|
597 |
+
}
|
598 |
+
|
599 |
$data = array();
|
600 |
+
$data[] = $titles;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
601 |
$offset = 0;
|
602 |
+
$block_size = 1024;
|
603 |
while( true ) {
|
604 |
$args = array(
|
605 |
'post_type' => 'product',
|
608 |
'orderby' => 'date',
|
609 |
'order' => 'DESC',
|
610 |
'offset' => $offset,
|
611 |
+
'fields' => 'ids',
|
612 |
);
|
613 |
$loop = new WP_Query( $args );
|
614 |
+
if ( ! $loop->have_posts() ) {
|
615 |
+
break;
|
616 |
+
}
|
617 |
+
foreach ( $loop->posts as $product_id ) {
|
618 |
$_product = wc_get_product( $product_id );
|
619 |
+
$row = array();
|
620 |
+
foreach( $fields_ids as $field_id ) {
|
621 |
+
switch ( $field_id ) {
|
622 |
+
case 'product-id':
|
623 |
+
$row[] = $product_id;
|
624 |
+
break;
|
625 |
+
case 'product-name':
|
626 |
+
$row[] = $_product->get_title();
|
627 |
+
break;
|
628 |
+
case 'product-sku':
|
629 |
+
$row[] = $_product->get_sku();
|
630 |
+
break;
|
631 |
+
case 'product-stock-quantity':
|
632 |
+
$row[] = ( $_product->is_type( 'variable' ) || $_product->is_type( 'grouped' ) ?
|
633 |
+
$this->get_variable_or_grouped_product_info( $_product, 'stock_quantity' ) : $_product->get_stock_quantity() );
|
634 |
+
break;
|
635 |
+
case 'product-stock':
|
636 |
+
$row[] = ( $_product->is_type( 'variable' ) || $_product->is_type( 'grouped' ) ?
|
637 |
+
$this->get_variable_or_grouped_product_info( $_product, 'total_stock' ) : $_product->get_total_stock() );
|
638 |
+
break;
|
639 |
+
case 'product-regular-price':
|
640 |
+
$row[] = ( $_product->is_type( 'variable' ) || $_product->is_type( 'grouped' ) ?
|
641 |
+
$this->get_variable_or_grouped_product_info( $_product, 'regular_price' ) : $_product->get_regular_price() );
|
642 |
+
break;
|
643 |
+
case 'product-sale-price':
|
644 |
+
$row[] = ( $_product->is_type( 'variable' ) || $_product->is_type( 'grouped' ) ?
|
645 |
+
$this->get_variable_or_grouped_product_info( $_product, 'sale_price' ) : $_product->get_sale_price() );
|
646 |
+
break;
|
647 |
+
case 'product-price':
|
648 |
+
$row[] = ( $_product->is_type( 'variable' ) || $_product->is_type( 'grouped' ) ?
|
649 |
+
$this->get_variable_or_grouped_product_info( $_product, 'price' ) : $_product->get_price() );
|
650 |
+
break;
|
651 |
+
case 'product-type':
|
652 |
+
$row[] = $_product->get_type();
|
653 |
+
break;
|
654 |
+
/* todo
|
655 |
+
case 'product-attributes':
|
656 |
+
$row[] = ( ! empty( $_product->get_attributes() ) ? serialize( $_product->get_attributes() ) : '' );
|
657 |
+
break;
|
658 |
+
*/
|
659 |
+
case 'product-image-url':
|
660 |
+
$row[] = wcj_get_product_image_url( $product_id, 'full' );
|
661 |
+
break;
|
662 |
+
case 'product-short-description':
|
663 |
+
$row[] = $_product->post->post_excerpt;
|
664 |
+
break;
|
665 |
+
case 'product-description':
|
666 |
+
$row[] = $_product->post->post_content;
|
667 |
+
break;
|
668 |
+
case 'product-status':
|
669 |
+
$row[] = $_product->post->post_status;
|
670 |
+
break;
|
671 |
+
case 'product-url':
|
672 |
+
$row[] = $_product->get_permalink();
|
673 |
+
break;
|
674 |
+
case 'product-shipping-class':
|
675 |
+
$row[] = $_product->get_shipping_class();
|
676 |
+
break;
|
677 |
+
case 'product-shipping-class-id':
|
678 |
+
$row[] = $_product->get_shipping_class_id();
|
679 |
+
break;
|
680 |
+
case 'product-width':
|
681 |
+
$row[] = $_product->get_width();
|
682 |
+
break;
|
683 |
+
case 'product-length':
|
684 |
+
$row[] = $_product->get_length();
|
685 |
+
break;
|
686 |
+
case 'product-height':
|
687 |
+
$row[] = $_product->get_height();
|
688 |
+
break;
|
689 |
+
case 'product-weight':
|
690 |
+
$row[] = $_product->get_weight();
|
691 |
+
break;
|
692 |
+
case 'product-downloadable':
|
693 |
+
$row[] = $_product->downloadable;
|
694 |
+
break;
|
695 |
+
case 'product-virtual':
|
696 |
+
$row[] = $_product->virtual;
|
697 |
+
break;
|
698 |
+
case 'product-sold-individually':
|
699 |
+
$row[] = $_product->sold_individually;
|
700 |
+
break;
|
701 |
+
case 'product-tax-status':
|
702 |
+
$row[] = $_product->get_tax_status();
|
703 |
+
break;
|
704 |
+
case 'product-tax-class':
|
705 |
+
$row[] = $_product->get_tax_class();
|
706 |
+
break;
|
707 |
+
case 'product-manage-stock':
|
708 |
+
$row[] = $_product->manage_stock;
|
709 |
+
break;
|
710 |
+
case 'product-stock-status':
|
711 |
+
$row[] = $_product->stock_status;
|
712 |
+
break;
|
713 |
+
case 'product-backorders':
|
714 |
+
$row[] = $_product->backorders;
|
715 |
+
break;
|
716 |
+
case 'product-featured':
|
717 |
+
$row[] = $_product->featured;
|
718 |
+
break;
|
719 |
+
case 'product-visibility':
|
720 |
+
$row[] = $_product->visibility;
|
721 |
+
break;
|
722 |
+
// todo
|
723 |
+
// get_price_including_tax
|
724 |
+
// get_price_excluding_tax
|
725 |
+
// get_display_price
|
726 |
+
// get_average_rating
|
727 |
+
// get_rating_count
|
728 |
+
// get_review_count
|
729 |
+
// get_categories
|
730 |
+
// get_tags
|
731 |
+
// get_dimensions
|
732 |
+
// get_formatted_name
|
733 |
+
// get_availability
|
734 |
+
}
|
735 |
+
}
|
736 |
+
|
737 |
+
// Additional Fields
|
738 |
+
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_export_products_fields_additional_total_number', 1 ) );
|
739 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
740 |
+
if ( 'yes' === get_option( 'wcj_export_products_fields_additional_enabled_' . $i, 'no' ) ) {
|
741 |
+
if ( '' != $additional_field_value = get_option( 'wcj_export_products_fields_additional_value_' . $i, '' ) ) {
|
742 |
+
if ( 'meta' === get_option( 'wcj_export_products_fields_additional_type_' . $i, 'meta' ) ) {
|
743 |
+
$row[] = get_post_meta( $product_id, $additional_field_value, true );
|
744 |
+
} else {
|
745 |
+
global $post;
|
746 |
+
$post = get_post( $product_id );
|
747 |
+
setup_postdata( $post );
|
748 |
+
$row[] = do_shortcode( $additional_field_value );
|
749 |
+
wp_reset_postdata();
|
750 |
+
}
|
751 |
+
} else {
|
752 |
+
$row[] = '';
|
753 |
+
}
|
754 |
+
}
|
755 |
+
}
|
756 |
+
|
757 |
+
$data[] = $row;
|
758 |
+
}
|
759 |
$offset += $block_size;
|
760 |
}
|
761 |
return $data;
|
811 |
/**
|
812 |
* get_settings.
|
813 |
*
|
814 |
+
* @version 2.5.7
|
815 |
* @since 2.5.4
|
816 |
*/
|
817 |
function get_settings() {
|
818 |
$settings = array(
|
819 |
array(
|
820 |
+
'title' => __( 'Export Options', 'woocommerce-jetpack' ),
|
821 |
+
'type' => 'title',
|
822 |
+
'id' => 'wcj_export_options',
|
823 |
+
),
|
824 |
+
array(
|
825 |
+
'title' => __( 'CSV Separator', 'woocommerce-jetpack' ),
|
826 |
+
'id' => 'wcj_export_csv_separator',
|
827 |
+
'default' => ',',
|
828 |
+
'type' => 'text',
|
829 |
),
|
830 |
array(
|
831 |
+
'title' => __( 'UTF-8 BOM', 'woocommerce-jetpack' ),
|
832 |
+
'desc' => __( 'Add', 'woocommerce-jetpack' ),
|
833 |
+
'desc_tip' => __( 'Add UTF-8 BOM sequence', 'woocommerce-jetpack' ),
|
834 |
+
'id' => 'wcj_export_csv_add_utf_8_bom',
|
835 |
+
'default' => 'yes',
|
836 |
+
'type' => 'checkbox',
|
837 |
),
|
838 |
array(
|
839 |
+
'title' => __( 'Export Orders Fields', 'woocommerce-jetpack' ),
|
840 |
+
'id' => 'wcj_export_orders_fields',
|
841 |
+
'default' => $this->get_order_export_default_fields_ids(),
|
842 |
+
'type' => 'multiselect',
|
843 |
+
'options' => $this->get_order_export_fields(),
|
844 |
+
'css' => 'height:300px;',
|
845 |
),
|
846 |
array(
|
847 |
+
'title' => __( 'Export Products Fields', 'woocommerce-jetpack' ),
|
848 |
+
'id' => 'wcj_export_products_fields',
|
849 |
+
'default' => $this->get_product_export_default_fields_ids(),
|
850 |
+
'type' => 'multiselect',
|
851 |
+
'options' => $this->get_product_export_fields(),
|
852 |
+
'css' => 'height:300px;',
|
853 |
+
),
|
854 |
+
array(
|
855 |
+
'title' => __( 'Additional Export Products Fields', 'woocommerce-jetpack' ),
|
856 |
+
'id' => 'wcj_export_products_fields_additional_total_number',
|
857 |
+
'default' => 1,
|
858 |
+
'type' => 'custom_number',
|
859 |
+
'desc' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc' ),
|
860 |
+
'custom_attributes' => array_merge(
|
861 |
+
is_array( apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ) ) ?
|
862 |
+
apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ) : array(),
|
863 |
+
array( 'step' => '1', 'min' => '0', )
|
864 |
+
),
|
865 |
),
|
866 |
);
|
867 |
+
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_export_products_fields_additional_total_number', 1 ) );
|
868 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
869 |
+
$settings = array_merge( $settings, array(
|
870 |
+
array(
|
871 |
+
'title' => __( 'Field', 'woocommerce-jetpack' ) . ' #' . $i,
|
872 |
+
'id' => 'wcj_export_products_fields_additional_enabled_' . $i,
|
873 |
+
'desc' => __( 'Enabled', 'woocommerce-jetpack' ),
|
874 |
+
'type' => 'checkbox',
|
875 |
+
'default' => 'no',
|
876 |
+
),
|
877 |
+
array(
|
878 |
+
'desc' => __( 'Title', 'woocommerce-jetpack' ),
|
879 |
+
'id' => 'wcj_export_products_fields_additional_title_' . $i,
|
880 |
+
'type' => 'text',
|
881 |
+
'default' => '',
|
882 |
+
),
|
883 |
+
array(
|
884 |
+
'desc' => __( 'Type', 'woocommerce-jetpack' ),
|
885 |
+
'id' => 'wcj_export_products_fields_additional_type_' . $i,
|
886 |
+
'type' => 'select',
|
887 |
+
'default' => 'meta',
|
888 |
+
'options' => array(
|
889 |
+
'meta' => __( 'Meta', 'woocommerce-jetpack' ),
|
890 |
+
'shortcode' => __( 'Shortcode', 'woocommerce-jetpack' ),
|
891 |
+
),
|
892 |
+
),
|
893 |
+
array(
|
894 |
+
'desc' => __( 'Value', 'woocommerce-jetpack' ),
|
895 |
+
'desc_tip' => __( 'If field\'s "Type" is set to "Meta", enter product meta key to retrieve (can be custom field name).', 'woocommerce-jetpack' ),
|
896 |
+
'id' => 'wcj_export_products_fields_additional_value_' . $i,
|
897 |
+
'type' => 'text',
|
898 |
+
'default' => '',
|
899 |
+
),
|
900 |
+
) );
|
901 |
+
}
|
902 |
+
$settings = array_merge( $settings, array(
|
903 |
+
array(
|
904 |
+
'type' => 'sectionend',
|
905 |
+
'id' => 'wcj_export_options',
|
906 |
+
),
|
907 |
+
) );
|
908 |
return $this->add_standard_settings( $settings );
|
909 |
}
|
910 |
}
|
includes/class-wcj-general.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack General class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,7 +17,7 @@ class WCJ_General extends WCJ_Module {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.5.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
@@ -63,9 +63,34 @@ class WCJ_General extends WCJ_Module {
|
|
63 |
|
64 |
add_filter( 'woocommerce_payment_gateways', array( $this, 'maybe_change_paypal_email' ) );
|
65 |
}
|
|
|
|
|
|
|
|
|
|
|
66 |
}
|
67 |
}
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
/**
|
70 |
* create_custom_roles_tool.
|
71 |
*
|
@@ -285,7 +310,7 @@ class WCJ_General extends WCJ_Module {
|
|
285 |
/**
|
286 |
* get_settings.
|
287 |
*
|
288 |
-
* @version 2.5.
|
289 |
* @todo add link to Booster's shortcodes list
|
290 |
*/
|
291 |
function get_settings() {
|
@@ -447,6 +472,38 @@ class WCJ_General extends WCJ_Module {
|
|
447 |
'type' => 'sectionend',
|
448 |
'id' => 'wcj_paypal_email_per_product_options',
|
449 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
450 |
/* array(
|
451 |
'title' => __( 'WooCommerce Templates Editor Links', 'woocommerce-jetpack' ),
|
452 |
'type' => 'title',
|
4 |
*
|
5 |
* The WooCommerce Jetpack General class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
63 |
|
64 |
add_filter( 'woocommerce_payment_gateways', array( $this, 'maybe_change_paypal_email' ) );
|
65 |
}
|
66 |
+
|
67 |
+
if ( 'yes' === get_option( 'wcj_session_expiration_section_enabled', 'no' ) ) {
|
68 |
+
add_filter( 'wc_session_expiring', array( $this, 'change_session_expiring' ), PHP_INT_MAX );
|
69 |
+
add_filter( 'wc_session_expiration', array( $this, 'change_session_expiration' ), PHP_INT_MAX );
|
70 |
+
}
|
71 |
}
|
72 |
}
|
73 |
|
74 |
+
/**
|
75 |
+
* change_session_expiring.
|
76 |
+
*
|
77 |
+
* @version 2.5.7
|
78 |
+
* @since 2.5.7
|
79 |
+
*/
|
80 |
+
function change_session_expiring( $the_time ) {
|
81 |
+
return get_option( 'wcj_session_expiring', 47 * 60 * 60 );
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* change_session_expiration.
|
86 |
+
*
|
87 |
+
* @version 2.5.7
|
88 |
+
* @since 2.5.7
|
89 |
+
*/
|
90 |
+
function change_session_expiration( $the_time ) {
|
91 |
+
return get_option( 'wcj_session_expiration', 48 * 60 * 60 );
|
92 |
+
}
|
93 |
+
|
94 |
/**
|
95 |
* create_custom_roles_tool.
|
96 |
*
|
310 |
/**
|
311 |
* get_settings.
|
312 |
*
|
313 |
+
* @version 2.5.7
|
314 |
* @todo add link to Booster's shortcodes list
|
315 |
*/
|
316 |
function get_settings() {
|
472 |
'type' => 'sectionend',
|
473 |
'id' => 'wcj_paypal_email_per_product_options',
|
474 |
),
|
475 |
+
array(
|
476 |
+
'title' => __( 'Session Expiration Options', 'woocommerce-jetpack' ),
|
477 |
+
'type' => 'title',
|
478 |
+
'id' => 'wcj_session_expiration_options',
|
479 |
+
),
|
480 |
+
array(
|
481 |
+
'title' => __( 'Session Expiration', 'woocommerce-jetpack' ),
|
482 |
+
'desc' => __( 'Enable Section', 'woocommerce-jetpack' ),
|
483 |
+
'id' => 'wcj_session_expiration_section_enabled',
|
484 |
+
'default' => 'no',
|
485 |
+
'type' => 'checkbox',
|
486 |
+
),
|
487 |
+
array(
|
488 |
+
'title' => __( 'Session Expiring', 'woocommerce-jetpack' ),
|
489 |
+
'desc' => __( 'In seconds. Default: 47 hours (60 * 60 * 47)', 'woocommerce-jetpack' ),
|
490 |
+
'id' => 'wcj_session_expiring',
|
491 |
+
'default' => 47 * 60 * 60,
|
492 |
+
'type' => 'number',
|
493 |
+
'custom_attributes' => array( 'min' => 0 ),
|
494 |
+
),
|
495 |
+
array(
|
496 |
+
'title' => __( 'Session Expiration', 'woocommerce-jetpack' ),
|
497 |
+
'desc' => __( 'In seconds. Default: 48 hours (60 * 60 * 48)', 'woocommerce-jetpack' ),
|
498 |
+
'id' => 'wcj_session_expiration',
|
499 |
+
'default' => 48 * 60 * 60,
|
500 |
+
'type' => 'number',
|
501 |
+
'custom_attributes' => array( 'min' => 0 ),
|
502 |
+
),
|
503 |
+
array(
|
504 |
+
'type' => 'sectionend',
|
505 |
+
'id' => 'wcj_session_expiration_options',
|
506 |
+
),
|
507 |
/* array(
|
508 |
'title' => __( 'WooCommerce Templates Editor Links', 'woocommerce-jetpack' ),
|
509 |
'type' => 'title',
|
includes/class-wcj-global-discount.php
ADDED
@@ -0,0 +1,298 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WooCommerce Jetpack Global Discount
|
4 |
+
*
|
5 |
+
* The WooCommerce Jetpack Global Discount class.
|
6 |
+
*
|
7 |
+
* @version 2.5.7
|
8 |
+
* @since 2.5.7
|
9 |
+
* @author Algoritmika Ltd.
|
10 |
+
* @todo products and cats/tags to include/exclude (cats to include - done); (maybe) product scope - apply only to products that are NOT on sale; regular price coefficient; fee instead of discount;
|
11 |
+
*/
|
12 |
+
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) exit;
|
14 |
+
|
15 |
+
if ( ! class_exists( 'WCJ_Global_Discount' ) ) :
|
16 |
+
|
17 |
+
class WCJ_Global_Discount extends WCJ_Module {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Constructor.
|
21 |
+
*
|
22 |
+
* @version 2.5.7
|
23 |
+
* @since 2.5.7
|
24 |
+
*/
|
25 |
+
function __construct() {
|
26 |
+
|
27 |
+
$this->id = 'global_discount';
|
28 |
+
$this->short_desc = __( 'Global Discount', 'woocommerce-jetpack' );
|
29 |
+
$this->desc = __( 'Add global discount to all WooCommerce products.', 'woocommerce-jetpack' );
|
30 |
+
$this->link = 'http://booster.io/features/woocommerce-shop-global-discount/';
|
31 |
+
parent::__construct();
|
32 |
+
|
33 |
+
if ( $this->is_enabled() ) {
|
34 |
+
if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
35 |
+
// Prices
|
36 |
+
add_filter( 'woocommerce_get_price', array( $this, 'add_global_discount_price' ), PHP_INT_MAX, 2 );
|
37 |
+
add_filter( 'woocommerce_get_sale_price', array( $this, 'add_global_discount_sale_price' ), PHP_INT_MAX, 2 );
|
38 |
+
// add_filter( 'woocommerce_get_regular_price', array( $this, 'add_global_discount_regular_price' ), PHP_INT_MAX, 2 );
|
39 |
+
// Variations
|
40 |
+
add_filter( 'woocommerce_variation_prices_price', array( $this, 'add_global_discount_price' ), PHP_INT_MAX, 2 );
|
41 |
+
add_filter( 'woocommerce_variation_prices_sale_price', array( $this, 'add_global_discount_sale_price' ), PHP_INT_MAX, 2 );
|
42 |
+
// add_filter( 'woocommerce_variation_prices_regular_price', array( $this, 'add_global_discount_regular_price' ), PHP_INT_MAX, 2 );
|
43 |
+
add_filter( 'woocommerce_get_variation_prices_hash', array( $this, 'get_variation_prices_hash' ), PHP_INT_MAX, 3 );
|
44 |
+
// Grouped products
|
45 |
+
add_filter( 'woocommerce_get_price_including_tax', array( $this, 'add_global_discount_grouped' ), PHP_INT_MAX, 3 );
|
46 |
+
add_filter( 'woocommerce_get_price_excluding_tax', array( $this, 'add_global_discount_grouped' ), PHP_INT_MAX, 3 );
|
47 |
+
}
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* add_global_discount_grouped.
|
53 |
+
*
|
54 |
+
* @version 2.5.7
|
55 |
+
* @since 2.5.7
|
56 |
+
*/
|
57 |
+
function add_global_discount_grouped( $price, $qty, $_product ) {
|
58 |
+
if ( $_product->is_type( 'grouped' ) ) {
|
59 |
+
$get_price_method = 'get_price_' . get_option( 'woocommerce_tax_display_shop' ) . 'uding_tax';
|
60 |
+
foreach ( $_product->get_children() as $child_id ) {
|
61 |
+
$the_price = get_post_meta( $child_id, '_price', true );
|
62 |
+
$the_product = wc_get_product( $child_id );
|
63 |
+
$the_price = $the_product->$get_price_method( 1, $the_price );
|
64 |
+
if ( $the_price == $price ) {
|
65 |
+
return $this->add_global_discount_price( $price, $the_product );
|
66 |
+
}
|
67 |
+
}
|
68 |
+
}
|
69 |
+
return $price;
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* calculate_price.
|
74 |
+
*
|
75 |
+
* @version 2.5.7
|
76 |
+
* @since 2.5.7
|
77 |
+
*/
|
78 |
+
function calculate_price( $price, $coefficient, $group ) {
|
79 |
+
$return_price = ( 'percent' === get_option( 'wcj_global_discount_sale_coefficient_type_' . $group, 'percent' ) ) ?
|
80 |
+
( $price + $price * ( $coefficient / 100 ) ) :
|
81 |
+
( $price + $coefficient );
|
82 |
+
return ( $return_price >= 0 ) ? $return_price : 0;
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* check_if_applicable.
|
87 |
+
*
|
88 |
+
* @version 2.5.7
|
89 |
+
* @since 2.5.7
|
90 |
+
* @return bool
|
91 |
+
*/
|
92 |
+
function check_if_applicable( $_product, $group ) {
|
93 |
+
return ( 'yes' === get_option( 'wcj_global_discount_sale_enabled_' . $group, 'yes' ) && $this->check_product_categories( $_product, $group ) );
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* check_product_categories.
|
98 |
+
*
|
99 |
+
* @version 2.5.7
|
100 |
+
* @since 2.5.7
|
101 |
+
* @return bool
|
102 |
+
*/
|
103 |
+
function check_product_categories( $_product, $group ) {
|
104 |
+
// Check product category - include
|
105 |
+
$categories_in = get_option( 'wcj_global_discount_sale_categories_incl_' . $group, '' );
|
106 |
+
if ( ! empty( $categories_in ) ) {
|
107 |
+
$product_categories = get_the_terms( $_product->id, 'product_cat' );
|
108 |
+
if ( empty( $product_categories ) ) {
|
109 |
+
return false; // option set to some categories, but product has no categories
|
110 |
+
}
|
111 |
+
foreach( $product_categories as $product_category ) {
|
112 |
+
if ( in_array( $product_category->term_id, $categories_in ) ) {
|
113 |
+
return true; // category found
|
114 |
+
}
|
115 |
+
}
|
116 |
+
return false; // no categories found
|
117 |
+
}
|
118 |
+
return true; // option not set (i.e. left blank)
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* add_global_discount_any_price.
|
123 |
+
*
|
124 |
+
* @version 2.5.7
|
125 |
+
* @since 2.5.7
|
126 |
+
*/
|
127 |
+
function add_global_discount_any_price( $price_type, $price, $_product ) {
|
128 |
+
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_global_discount_groups_total_number', 1 ) );
|
129 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
130 |
+
if ( ! $this->check_if_applicable( $_product, $i ) ) {
|
131 |
+
continue; // no changes by current discount group
|
132 |
+
}
|
133 |
+
$coefficient = get_option( 'wcj_global_discount_sale_coefficient_' . $i, 0 );
|
134 |
+
if ( 0 != $coefficient ) {
|
135 |
+
if ( 'sale_price' === $price_type ) {
|
136 |
+
if ( 0 == $price ) {
|
137 |
+
// The product is currently not on sale
|
138 |
+
if ( 'only_on_sale' === get_option( 'wcj_global_discount_sale_product_scope_' . $i, 'all' ) ) {
|
139 |
+
continue; // no changes by current discount group
|
140 |
+
} else {
|
141 |
+
$price = $_product->get_regular_price();
|
142 |
+
}
|
143 |
+
}
|
144 |
+
} else { // if ( 'price' === $price_type )
|
145 |
+
if ( 'only_on_sale' === get_option( 'wcj_global_discount_sale_product_scope_' . $i, 'all' ) && 0 == $_product->get_sale_price() ) {
|
146 |
+
continue; // no changes by current discount group
|
147 |
+
}
|
148 |
+
}
|
149 |
+
return $this->calculate_price( $price, $coefficient, $i ); // discount applied
|
150 |
+
}
|
151 |
+
}
|
152 |
+
return $price; // no changes
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* add_global_discount_sale_price.
|
157 |
+
*
|
158 |
+
* @version 2.5.7
|
159 |
+
* @since 2.5.7
|
160 |
+
*/
|
161 |
+
function add_global_discount_sale_price( $price, $_product ) {
|
162 |
+
return $this->add_global_discount_any_price( 'sale_price', $price, $_product );
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* add_global_discount_price.
|
167 |
+
*
|
168 |
+
* @version 2.5.7
|
169 |
+
* @since 2.5.7
|
170 |
+
*/
|
171 |
+
function add_global_discount_price( $price, $_product ) {
|
172 |
+
if ( '' === $price ) {
|
173 |
+
return $price; // no changes
|
174 |
+
}
|
175 |
+
return $this->add_global_discount_any_price( 'price', $price, $_product );
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* get_variation_prices_hash.
|
180 |
+
*
|
181 |
+
* @version 2.5.7
|
182 |
+
* @since 2.5.7
|
183 |
+
*/
|
184 |
+
function get_variation_prices_hash( $price_hash, $_product, $display ) {
|
185 |
+
$wcj_global_discount_price_hash = array();
|
186 |
+
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_global_discount_groups_total_number', 1 ) );
|
187 |
+
$wcj_global_discount_price_hash['total_number'] = $total_number;
|
188 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
189 |
+
$wcj_global_discount_price_hash[ 'enabled_' . $i ] = get_option( 'wcj_global_discount_sale_enabled_' . $i, 'yes' );
|
190 |
+
$wcj_global_discount_price_hash[ 'type_' . $i ] = get_option( 'wcj_global_discount_sale_coefficient_type_' . $i, 'percent' );
|
191 |
+
$wcj_global_discount_price_hash[ 'value_' . $i ] = get_option( 'wcj_global_discount_sale_coefficient_' . $i, 0 );
|
192 |
+
$wcj_global_discount_price_hash[ 'scope_' . $i ] = get_option( 'wcj_global_discount_sale_product_scope_' . $i, 'all' );
|
193 |
+
$wcj_global_discount_price_hash[ 'cats_in_' . $i ] = get_option( 'wcj_global_discount_sale_categories_incl_' . $i, '' );
|
194 |
+
}
|
195 |
+
$price_hash['wcj_global_discount_price_hash'] = $wcj_global_discount_price_hash;
|
196 |
+
return $price_hash;
|
197 |
+
}
|
198 |
+
|
199 |
+
/**
|
200 |
+
* get_settings.
|
201 |
+
*
|
202 |
+
* @version 2.5.7
|
203 |
+
* @since 2.5.7
|
204 |
+
*/
|
205 |
+
function get_settings() {
|
206 |
+
$product_cats_options = array();
|
207 |
+
$product_cats = get_terms( 'product_cat', 'orderby=name&hide_empty=0' );
|
208 |
+
if ( ! empty( $product_cats ) && ! is_wp_error( $product_cats ) ){
|
209 |
+
foreach ( $product_cats as $product_cat ) {
|
210 |
+
$product_cats_options[ $product_cat->term_id ] = $product_cat->name;
|
211 |
+
}
|
212 |
+
}
|
213 |
+
$settings = array(
|
214 |
+
array(
|
215 |
+
'title' => __( 'Options', 'woocommerce-jetpack' ),
|
216 |
+
'type' => 'title',
|
217 |
+
'id' => 'wcj_global_discount_options',
|
218 |
+
),
|
219 |
+
array(
|
220 |
+
'title' => __( 'Total Groups', 'woocommerce-jetpack' ),
|
221 |
+
'id' => 'wcj_global_discount_groups_total_number',
|
222 |
+
'default' => 1,
|
223 |
+
'type' => 'custom_number',
|
224 |
+
'desc_tip' => __( 'Press Save changes after you change this number.', 'woocommerce-jetpack' ),
|
225 |
+
'desc' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc' ),
|
226 |
+
'custom_attributes' => is_array( apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ) ) ?
|
227 |
+
apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1', ),
|
228 |
+
),
|
229 |
+
array(
|
230 |
+
'type' => 'sectionend',
|
231 |
+
'id' => 'wcj_global_discount_options',
|
232 |
+
),
|
233 |
+
);
|
234 |
+
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_global_discount_groups_total_number', 1 ) );
|
235 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
236 |
+
$settings = array_merge( $settings, array(
|
237 |
+
array(
|
238 |
+
'title' => __( 'Discount Group', 'woocommerce-jetpack' ) . ' #' . $i,
|
239 |
+
'type' => 'title',
|
240 |
+
'id' => 'wcj_global_discount_options_' . $i,
|
241 |
+
),
|
242 |
+
array(
|
243 |
+
'title' => __( 'Enabled', 'woocommerce-jetpack' ),
|
244 |
+
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
245 |
+
'id' => 'wcj_global_discount_sale_enabled_' . $i,
|
246 |
+
'default' => 'yes',
|
247 |
+
'type' => 'checkbox',
|
248 |
+
),
|
249 |
+
array(
|
250 |
+
'title' => __( 'Type', 'woocommerce-jetpack' ),
|
251 |
+
'id' => 'wcj_global_discount_sale_coefficient_type_' . $i,
|
252 |
+
'default' => 'percent',
|
253 |
+
'type' => 'select',
|
254 |
+
'options' => array(
|
255 |
+
'percent' => __( 'Percent', 'woocommerce-jetpack' ),
|
256 |
+
'fixed' => __( 'Fixed', 'woocommerce-jetpack' ),
|
257 |
+
),
|
258 |
+
),
|
259 |
+
array(
|
260 |
+
'title' => __( 'Value', 'woocommerce-jetpack' ),
|
261 |
+
'desc_tip' => __( 'Must be negative number.', 'woocommerce-jetpack' ),
|
262 |
+
'id' => 'wcj_global_discount_sale_coefficient_' . $i,
|
263 |
+
'default' => 0,
|
264 |
+
'type' => 'number',
|
265 |
+
'custom_attributes' => array( /* 'min' => 0, */ 'max' => 0, 'step' => 0.0001 ), // todo
|
266 |
+
),
|
267 |
+
array(
|
268 |
+
'title' => __( 'Product Scope', 'woocommerce-jetpack' ),
|
269 |
+
'id' => 'wcj_global_discount_sale_product_scope_' . $i,
|
270 |
+
'default' => 'all',
|
271 |
+
'type' => 'select',
|
272 |
+
'options' => array(
|
273 |
+
'all' => __( 'All products', 'woocommerce-jetpack' ),
|
274 |
+
'only_on_sale' => __( 'Only products that are already on sale', 'woocommerce-jetpack' ),
|
275 |
+
),
|
276 |
+
),
|
277 |
+
array(
|
278 |
+
'title' => __( 'Include Product Categories', 'woocommerce-jetpack' ),
|
279 |
+
'desc_tip' => __( 'Set this field to apply discount to selected categories only. Leave blank to apply to all categories.', 'woocommerce-jetpack' ),
|
280 |
+
'id' => 'wcj_global_discount_sale_categories_incl_' . $i,
|
281 |
+
'default' => '',
|
282 |
+
'class' => 'chosen_select',
|
283 |
+
'type' => 'multiselect',
|
284 |
+
'options' => $product_cats_options,
|
285 |
+
),
|
286 |
+
array(
|
287 |
+
'type' => 'sectionend',
|
288 |
+
'id' => 'wcj_global_discount_options_' . $i,
|
289 |
+
),
|
290 |
+
) );
|
291 |
+
}
|
292 |
+
return $this->add_standard_settings( $settings );
|
293 |
+
}
|
294 |
+
}
|
295 |
+
|
296 |
+
endif;
|
297 |
+
|
298 |
+
return new WCJ_Global_Discount();
|
includes/class-wcj-multicurrency.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Multicurrency class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.4.3
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -96,7 +96,7 @@ class WCJ_Multicurrency extends WCJ_Module {
|
|
96 |
/**
|
97 |
* add_hooks.
|
98 |
*
|
99 |
-
* @version 2.5.
|
100 |
*/
|
101 |
function add_hooks() {
|
102 |
// Session
|
@@ -107,6 +107,9 @@ class WCJ_Multicurrency extends WCJ_Module {
|
|
107 |
$_SESSION['wcj-currency'] = $_REQUEST['wcj-currency'];
|
108 |
}
|
109 |
if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
|
|
|
|
|
|
110 |
// Prices
|
111 |
add_filter( 'woocommerce_get_price', array( $this, 'change_price_by_currency' ), PHP_INT_MAX - 1, 2 );
|
112 |
add_filter( 'woocommerce_get_sale_price', array( $this, 'change_price_by_currency' ), PHP_INT_MAX - 1, 2 );
|
@@ -127,6 +130,26 @@ class WCJ_Multicurrency extends WCJ_Module {
|
|
127 |
}
|
128 |
}
|
129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
/**
|
131 |
* change_price_by_currency_grouped.
|
132 |
*
|
4 |
*
|
5 |
* The WooCommerce Jetpack Multicurrency class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.4.3
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
96 |
/**
|
97 |
* add_hooks.
|
98 |
*
|
99 |
+
* @version 2.5.7
|
100 |
*/
|
101 |
function add_hooks() {
|
102 |
// Session
|
107 |
$_SESSION['wcj-currency'] = $_REQUEST['wcj-currency'];
|
108 |
}
|
109 |
if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
110 |
+
// Prices - Compatibility - "WooCommerce TM Extra Product Options" plugin
|
111 |
+
add_filter( 'woocommerce_tm_epo_price_on_cart', array( $this, 'change_price_by_currency_tm_extra_product_options_plugin_cart' ), PHP_INT_MAX - 1, 1 );
|
112 |
+
add_filter( 'wc_epo_price', array( $this, 'change_price_by_currency_tm_extra_product_options_plugin' ), PHP_INT_MAX - 1, 3 );
|
113 |
// Prices
|
114 |
add_filter( 'woocommerce_get_price', array( $this, 'change_price_by_currency' ), PHP_INT_MAX - 1, 2 );
|
115 |
add_filter( 'woocommerce_get_sale_price', array( $this, 'change_price_by_currency' ), PHP_INT_MAX - 1, 2 );
|
130 |
}
|
131 |
}
|
132 |
|
133 |
+
/**
|
134 |
+
* change_price_by_currency_tm_extra_product_options_plugin_cart.
|
135 |
+
*
|
136 |
+
* @version 2.5.7
|
137 |
+
* @since 2.5.7
|
138 |
+
*/
|
139 |
+
function change_price_by_currency_tm_extra_product_options_plugin_cart( $price ) {
|
140 |
+
return $this->change_price_by_currency( $price, null );
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* change_price_by_currency_tm_extra_product_options_plugin.
|
145 |
+
*
|
146 |
+
* @version 2.5.7
|
147 |
+
* @since 2.5.7
|
148 |
+
*/
|
149 |
+
function change_price_by_currency_tm_extra_product_options_plugin( $price, $type, $post_id ) {
|
150 |
+
return $this->change_price_by_currency( $price, null );
|
151 |
+
}
|
152 |
+
|
153 |
/**
|
154 |
* change_price_by_currency_grouped.
|
155 |
*
|
includes/class-wcj-order-custom-statuses.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Order Custom Statuses class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -151,26 +151,26 @@ class WCJ_Order_Custom_Statuses extends WCJ_Module {
|
|
151 |
/**
|
152 |
* Add new custom status to wcj_orders_custom_statuses_array.
|
153 |
*
|
154 |
-
* @version 2.5.
|
155 |
*/
|
156 |
public function add_custom_status( $new_status, $new_status_label, $new_status_icon_content, $new_status_icon_color ) {
|
157 |
|
158 |
// Checking function arguments
|
159 |
if ( ! isset( $new_status ) || '' == $new_status ) {
|
160 |
-
return '<div class="error"><p>' . __( 'Status slug is empty. Status not added
|
161 |
}
|
162 |
if ( strlen( $new_status ) > 17 ) {
|
163 |
-
return '<div class="error"><p>' . __( 'The length of status slug must be 17 or less characters.', 'woocommerce-jetpack' ) . '</p></div>';
|
164 |
}
|
165 |
if ( ! isset( $new_status_label ) || '' == $new_status_label ) {
|
166 |
-
return '<div class="error"><p>' . __( 'Status label is empty. Status not added
|
167 |
}
|
168 |
|
169 |
// Checking status
|
170 |
$statuses_updated = ( '' == get_option( 'wcj_orders_custom_statuses_array' ) ) ? array() : get_option( 'wcj_orders_custom_statuses_array' );
|
171 |
$new_key = 'wc-' . $_POST['new_status'];
|
172 |
if ( isset( $statuses_updated[ $new_key ] ) )
|
173 |
-
return '<div class="error"><p>' . __( 'Duplicate slug. Status not added
|
174 |
$statuses_updated[ $new_key ] = $_POST['new_status_label'];
|
175 |
|
176 |
// Adding custom status
|
@@ -180,7 +180,7 @@ class WCJ_Order_Custom_Statuses extends WCJ_Module {
|
|
180 |
'color' => $new_status_icon_color,
|
181 |
) );
|
182 |
if ( true === $result ) {
|
183 |
-
return '<div class="updated"><p>' . __( 'New status
|
184 |
} else {
|
185 |
return '<div class="error"><p>' . __( 'Status was not added.', 'woocommerce-jetpack' ) . '</p></div>';
|
186 |
}
|
@@ -189,18 +189,18 @@ class WCJ_Order_Custom_Statuses extends WCJ_Module {
|
|
189 |
/**
|
190 |
* create_custom_statuses_tool.
|
191 |
*
|
192 |
-
* @version 2.5.
|
193 |
*/
|
194 |
public function create_custom_statuses_tool() {
|
195 |
$result_message = '';
|
196 |
if ( isset( $_POST['add_custom_status'] ) ) {
|
197 |
$result_message = $this->add_custom_status( $_POST['new_status'], $_POST['new_status_label'], $_POST['new_status_icon_content'], $_POST['new_status_icon_color'] );
|
198 |
} elseif ( isset( $_GET['delete'] ) && ( '' != $_GET['delete'] ) ) {
|
199 |
-
$statuses_updated = apply_filters( 'wc_order_statuses',
|
200 |
unset( $statuses_updated[ $_GET['delete'] ] );
|
201 |
$result = update_option( 'wcj_orders_custom_statuses_array', $statuses_updated );
|
202 |
if ( true === $result ) {
|
203 |
-
$result_message = '<div class="updated"><p>' . __( 'Status
|
204 |
} else {
|
205 |
$result_message = '<div class="error"><p>' . __( 'Delete failed.', 'woocommerce-jetpack' ) . '</p></div>';
|
206 |
}
|
@@ -254,11 +254,11 @@ class WCJ_Order_Custom_Statuses extends WCJ_Module {
|
|
254 |
<ul>
|
255 |
<li><?php _e( 'Slug (without wc- prefix)', 'woocommerce-jetpack' ); ?> <input type="text" name="new_status" style="width:100%;"></li>
|
256 |
<li><?php _e( 'Label', 'woocommerce-jetpack' ); ?> <input type="text" name="new_status_label" style="width:100%;"></li>
|
257 |
-
<li><?php _e( 'Icon Code', 'woocommerce-jetpack' ); ?> <input type="text" name="new_status_icon_content" value="e011"
|
258 |
-
|
259 |
-
|
260 |
</ul>
|
261 |
-
<input class="button-primary" type="submit" name="add_custom_status" value="Add new custom status">
|
262 |
</form>
|
263 |
</div>
|
264 |
</div>
|
4 |
*
|
5 |
* The WooCommerce Jetpack Order Custom Statuses class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
151 |
/**
|
152 |
* Add new custom status to wcj_orders_custom_statuses_array.
|
153 |
*
|
154 |
+
* @version 2.5.7
|
155 |
*/
|
156 |
public function add_custom_status( $new_status, $new_status_label, $new_status_icon_content, $new_status_icon_color ) {
|
157 |
|
158 |
// Checking function arguments
|
159 |
if ( ! isset( $new_status ) || '' == $new_status ) {
|
160 |
+
return '<div class="error"><p>' . __( 'Status slug is empty. Status was not added!', 'woocommerce-jetpack' ) . '</p></div>';
|
161 |
}
|
162 |
if ( strlen( $new_status ) > 17 ) {
|
163 |
+
return '<div class="error"><p>' . __( 'The length of status slug must be 17 or less characters. Status was not added!', 'woocommerce-jetpack' ) . '</p></div>';
|
164 |
}
|
165 |
if ( ! isset( $new_status_label ) || '' == $new_status_label ) {
|
166 |
+
return '<div class="error"><p>' . __( 'Status label is empty. Status was not added!', 'woocommerce-jetpack' ) . '</p></div>';
|
167 |
}
|
168 |
|
169 |
// Checking status
|
170 |
$statuses_updated = ( '' == get_option( 'wcj_orders_custom_statuses_array' ) ) ? array() : get_option( 'wcj_orders_custom_statuses_array' );
|
171 |
$new_key = 'wc-' . $_POST['new_status'];
|
172 |
if ( isset( $statuses_updated[ $new_key ] ) )
|
173 |
+
return '<div class="error"><p>' . __( 'Duplicate slug. Status was not added!', 'woocommerce-jetpack' ) . '</p></div>';
|
174 |
$statuses_updated[ $new_key ] = $_POST['new_status_label'];
|
175 |
|
176 |
// Adding custom status
|
180 |
'color' => $new_status_icon_color,
|
181 |
) );
|
182 |
if ( true === $result ) {
|
183 |
+
return '<div class="updated"><p>' . __( 'New status has been successfully added!', 'woocommerce-jetpack' ) . '</p></div>';
|
184 |
} else {
|
185 |
return '<div class="error"><p>' . __( 'Status was not added.', 'woocommerce-jetpack' ) . '</p></div>';
|
186 |
}
|
189 |
/**
|
190 |
* create_custom_statuses_tool.
|
191 |
*
|
192 |
+
* @version 2.5.7
|
193 |
*/
|
194 |
public function create_custom_statuses_tool() {
|
195 |
$result_message = '';
|
196 |
if ( isset( $_POST['add_custom_status'] ) ) {
|
197 |
$result_message = $this->add_custom_status( $_POST['new_status'], $_POST['new_status_label'], $_POST['new_status_icon_content'], $_POST['new_status_icon_color'] );
|
198 |
} elseif ( isset( $_GET['delete'] ) && ( '' != $_GET['delete'] ) ) {
|
199 |
+
$statuses_updated = apply_filters( 'wc_order_statuses', array() );
|
200 |
unset( $statuses_updated[ $_GET['delete'] ] );
|
201 |
$result = update_option( 'wcj_orders_custom_statuses_array', $statuses_updated );
|
202 |
if ( true === $result ) {
|
203 |
+
$result_message = '<div class="updated"><p>' . __( 'Status has been successfully deleted.', 'woocommerce-jetpack' ) . '</p></div>';
|
204 |
} else {
|
205 |
$result_message = '<div class="error"><p>' . __( 'Delete failed.', 'woocommerce-jetpack' ) . '</p></div>';
|
206 |
}
|
254 |
<ul>
|
255 |
<li><?php _e( 'Slug (without wc- prefix)', 'woocommerce-jetpack' ); ?> <input type="text" name="new_status" style="width:100%;"></li>
|
256 |
<li><?php _e( 'Label', 'woocommerce-jetpack' ); ?> <input type="text" name="new_status_label" style="width:100%;"></li>
|
257 |
+
<li><?php _e( 'Icon Code', 'woocommerce-jetpack' ); ?> <input type="text" name="new_status_icon_content" value="e011"><br><?php
|
258 |
+
echo '<em>' . sprintf( __( 'You can check icon codes <a target="_blank" href="%s">here</a>.', 'woocommerce-jetpack' ), 'https://rawgit.com/woothemes/woocommerce-icons/master/demo.html' ) . '</em>'; ?></li>
|
259 |
+
<li><?php _e( 'Icon Color', 'woocommerce-jetpack' ); ?> <input type="color" name="new_status_icon_color" value="#999999"></li>
|
260 |
</ul>
|
261 |
+
<input class="button-primary" type="submit" name="add_custom_status" value="<?php echo __( 'Add new custom status', 'woocommerce-jetpack' ); ?>">
|
262 |
</form>
|
263 |
</div>
|
264 |
</div>
|
includes/class-wcj-order-min-amount.php
ADDED
@@ -0,0 +1,296 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WooCommerce Jetpack Orders
|
4 |
+
*
|
5 |
+
* The WooCommerce Jetpack Orders class.
|
6 |
+
*
|
7 |
+
* @version 2.5.7
|
8 |
+
* @since 2.5.7
|
9 |
+
* @author Algoritmika Ltd.
|
10 |
+
*/
|
11 |
+
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
13 |
+
|
14 |
+
if ( ! class_exists( 'WCJ_Order_Min_Amount' ) ) :
|
15 |
+
|
16 |
+
class WCJ_Order_Min_Amount extends WCJ_Module {
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Constructor.
|
20 |
+
*
|
21 |
+
* @version 2.5.7
|
22 |
+
* @since 2.5.7
|
23 |
+
*/
|
24 |
+
public function __construct() {
|
25 |
+
|
26 |
+
$this->id = 'order_min_amount';
|
27 |
+
$this->short_desc = __( 'Order Minimum Amount', 'woocommerce-jetpack' );
|
28 |
+
$this->desc = __( 'Minimum WooCommerce order amount (optionally by user role).', 'woocommerce-jetpack' );
|
29 |
+
$this->link = 'http://booster.io/features/woocommerce-order-minimum-amount/';
|
30 |
+
parent::__construct();
|
31 |
+
|
32 |
+
add_action( 'init', array( $this, 'add_settings_hook' ) );
|
33 |
+
|
34 |
+
if ( $this->is_enabled() ) {
|
35 |
+
add_action( 'init', array( $this, 'add_order_minimum_amount_hooks' ) );
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* add_order_minimum_amount_hooks.
|
41 |
+
*
|
42 |
+
* @version 2.5.3
|
43 |
+
* @since 2.5.3
|
44 |
+
*/
|
45 |
+
function add_order_minimum_amount_hooks() {
|
46 |
+
$is_order_minimum_amount_enabled = false;
|
47 |
+
if ( get_option( 'wcj_order_minimum_amount', 0 ) > 0 ) {
|
48 |
+
$is_order_minimum_amount_enabled = true;
|
49 |
+
} else {
|
50 |
+
foreach ( wcj_get_user_roles() as $role_key => $role_data ) {
|
51 |
+
if ( get_option( 'wcj_order_minimum_amount_by_user_role_' . $role_key, 0 ) > 0 ) {
|
52 |
+
$is_order_minimum_amount_enabled = true;
|
53 |
+
break;
|
54 |
+
}
|
55 |
+
}
|
56 |
+
}
|
57 |
+
if ( $is_order_minimum_amount_enabled ) {
|
58 |
+
add_action( 'woocommerce_checkout_process', array( $this, 'order_minimum_amount' ) );
|
59 |
+
add_action( 'woocommerce_before_cart', array( $this, 'order_minimum_amount' ) );
|
60 |
+
if ( 'yes' === get_option( 'wcj_order_minimum_amount_stop_from_seeing_checkout' ) ) {
|
61 |
+
add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), 100 );
|
62 |
+
// add_action( 'template_redirect', array( $this, 'stop_from_seeing_checkout' ), 100 );
|
63 |
+
}
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* get_order_minimum_amount_with_user_roles.
|
69 |
+
*
|
70 |
+
* @version 2.5.3
|
71 |
+
* @since 2.5.3
|
72 |
+
*/
|
73 |
+
function get_order_minimum_amount_with_user_roles() {
|
74 |
+
$minimum = get_option( 'wcj_order_minimum_amount' );
|
75 |
+
$current_user_role = wcj_get_current_user_first_role();
|
76 |
+
foreach ( wcj_get_user_roles() as $role_key => $role_data ) {
|
77 |
+
if ( $role_key === $current_user_role ) {
|
78 |
+
$order_minimum_amount_by_user_role = get_option( 'wcj_order_minimum_amount_by_user_role_' . $role_key, 0 );
|
79 |
+
if ( $order_minimum_amount_by_user_role > /* $minimum */ 0 ) {
|
80 |
+
$minimum = $order_minimum_amount_by_user_role;
|
81 |
+
}
|
82 |
+
break;
|
83 |
+
}
|
84 |
+
}
|
85 |
+
return $minimum;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* get_cart_total_for_minimal_order_amount.
|
90 |
+
*
|
91 |
+
* @version 2.5.5
|
92 |
+
* @since 2.5.5
|
93 |
+
*/
|
94 |
+
private function get_cart_total_for_minimal_order_amount() {
|
95 |
+
$cart_total = WC()->cart->total;
|
96 |
+
if ( 'yes' === get_option( 'wcj_order_minimum_amount_exclude_shipping', 'no' ) ) {
|
97 |
+
$shipping_total = isset( WC()->cart->shipping_total ) ? WC()->cart->shipping_total : 0;
|
98 |
+
$shipping_tax_total = isset( WC()->cart->shipping_tax_total ) ? WC()->cart->shipping_tax_total : 0;
|
99 |
+
$cart_total -= ( $shipping_total + $shipping_tax_total );
|
100 |
+
}
|
101 |
+
return $cart_total;
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* order_minimum_amount.
|
106 |
+
*
|
107 |
+
* @version 2.5.5
|
108 |
+
*/
|
109 |
+
public function order_minimum_amount() {
|
110 |
+
$minimum = $this->get_order_minimum_amount_with_user_roles();
|
111 |
+
if ( 0 == $minimum ) {
|
112 |
+
return;
|
113 |
+
}
|
114 |
+
$cart_total = $this->get_cart_total_for_minimal_order_amount();
|
115 |
+
if ( $cart_total < $minimum ) {
|
116 |
+
if( is_cart() ) {
|
117 |
+
if ( 'yes' === get_option( 'wcj_order_minimum_amount_cart_notice_enabled' ) ) {
|
118 |
+
wc_print_notice(
|
119 |
+
sprintf( apply_filters( 'wcj_get_option_filter', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_cart_notice_message' ) ),
|
120 |
+
woocommerce_price( $minimum ),
|
121 |
+
woocommerce_price( $cart_total )
|
122 |
+
),
|
123 |
+
'notice'
|
124 |
+
);
|
125 |
+
}
|
126 |
+
} else {
|
127 |
+
wc_add_notice(
|
128 |
+
sprintf( apply_filters( 'wcj_get_option_filter', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_error_message' ) ),
|
129 |
+
woocommerce_price( $minimum ),
|
130 |
+
woocommerce_price( $cart_total )
|
131 |
+
),
|
132 |
+
'error'
|
133 |
+
);
|
134 |
+
}
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* stop_from_seeing_checkout.
|
140 |
+
*
|
141 |
+
* @version 2.5.5
|
142 |
+
*/
|
143 |
+
public function stop_from_seeing_checkout( $wp ) {
|
144 |
+
// if ( is_admin() ) return;
|
145 |
+
global $woocommerce;
|
146 |
+
if ( ! isset( $woocommerce ) || ! is_object( $woocommerce ) ) {
|
147 |
+
return;
|
148 |
+
}
|
149 |
+
if ( ! isset( $woocommerce->cart ) || ! is_object( $woocommerce->cart ) ) {
|
150 |
+
return;
|
151 |
+
}
|
152 |
+
if ( ! is_checkout() ) {
|
153 |
+
return;
|
154 |
+
}
|
155 |
+
$minimum = $this->get_order_minimum_amount_with_user_roles();
|
156 |
+
if ( 0 == $minimum ) {
|
157 |
+
return;
|
158 |
+
}
|
159 |
+
$the_cart_total = $this->get_cart_total_for_minimal_order_amount();
|
160 |
+
if ( 0 == $the_cart_total ) {
|
161 |
+
return;
|
162 |
+
}
|
163 |
+
if ( $the_cart_total < $minimum ) {
|
164 |
+
wp_safe_redirect( $woocommerce->cart->get_cart_url() );
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* add_settings_hook.
|
170 |
+
*
|
171 |
+
* @version 2.5.7
|
172 |
+
* @since 2.5.7
|
173 |
+
*/
|
174 |
+
function add_settings_hook() {
|
175 |
+
add_filter( 'wcj_order_min_amount_settings', array( $this, 'add_settings' ) );
|
176 |
+
}
|
177 |
+
|
178 |
+
/**
|
179 |
+
* get_settings.
|
180 |
+
*
|
181 |
+
* @version 2.5.7
|
182 |
+
* @since 2.5.7
|
183 |
+
*/
|
184 |
+
function get_settings() {
|
185 |
+
$settings = apply_filters( 'wcj_order_min_amount_settings', array() );
|
186 |
+
return $this->add_standard_settings( $settings );
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* add_settings.
|
191 |
+
*
|
192 |
+
* @version 2.5.7
|
193 |
+
* @since 2.5.7
|
194 |
+
*/
|
195 |
+
function add_settings() {
|
196 |
+
$settings = array(
|
197 |
+
array(
|
198 |
+
'title' => __( 'Order Minimum Amount', 'woocommerce-jetpack' ),
|
199 |
+
'type' => 'title',
|
200 |
+
'desc' => __( 'This section lets you set minimum order amount.', 'woocommerce-jetpack' ),
|
201 |
+
'id' => 'wcj_order_minimum_amount_options',
|
202 |
+
),
|
203 |
+
array(
|
204 |
+
'title' => __( 'Amount', 'woocommerce-jetpack' ),
|
205 |
+
'desc' => __( 'Minimum order amount. Set to 0 to disable.', 'woocommerce-jetpack' ),
|
206 |
+
'id' => 'wcj_order_minimum_amount',
|
207 |
+
'default' => 0,
|
208 |
+
'type' => 'number',
|
209 |
+
'custom_attributes' => array(
|
210 |
+
'step' => '0.0001',
|
211 |
+
'min' => '0',
|
212 |
+
),
|
213 |
+
),
|
214 |
+
array(
|
215 |
+
'title' => __( 'Exclude Shipping from Cart Total', 'woocommerce-jetpack' ),
|
216 |
+
'desc' => __( 'Exclude', 'woocommerce-jetpack' ),
|
217 |
+
'id' => 'wcj_order_minimum_amount_exclude_shipping',
|
218 |
+
'default' => 'no',
|
219 |
+
'type' => 'checkbox',
|
220 |
+
),
|
221 |
+
array(
|
222 |
+
'title' => __( 'Error message', 'woocommerce-jetpack' ),
|
223 |
+
'desc' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc' ),
|
224 |
+
'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
|
225 |
+
'id' => 'wcj_order_minimum_amount_error_message',
|
226 |
+
'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
|
227 |
+
'type' => 'textarea',
|
228 |
+
'custom_attributes' => apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ),
|
229 |
+
'css' => 'width:50%;min-width:300px;',
|
230 |
+
),
|
231 |
+
array(
|
232 |
+
'title' => __( 'Add notice to cart page also', 'woocommerce-jetpack' ),
|
233 |
+
'desc' => __( 'Add', 'woocommerce-jetpack' ),
|
234 |
+
'id' => 'wcj_order_minimum_amount_cart_notice_enabled',
|
235 |
+
'default' => 'no',
|
236 |
+
'type' => 'checkbox',
|
237 |
+
),
|
238 |
+
array(
|
239 |
+
'title' => __( 'Message on cart page', 'woocommerce-jetpack' ),
|
240 |
+
'desc' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc' ),
|
241 |
+
'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
|
242 |
+
'id' => 'wcj_order_minimum_amount_cart_notice_message',
|
243 |
+
'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
|
244 |
+
'type' => 'textarea',
|
245 |
+
'custom_attributes' => apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ),
|
246 |
+
'css' => 'width:50%;min-width:300px;',
|
247 |
+
),
|
248 |
+
array(
|
249 |
+
'title' => __( 'Stop customer from seeing the Checkout page if minimum amount not reached.', 'woocommerce-jetpack' ),
|
250 |
+
'desc' => __( 'Redirect back to Cart page', 'woocommerce-jetpack' ),
|
251 |
+
'id' => 'wcj_order_minimum_amount_stop_from_seeing_checkout',
|
252 |
+
'default' => 'no',
|
253 |
+
'type' => 'checkbox',
|
254 |
+
),
|
255 |
+
array(
|
256 |
+
'type' => 'sectionend',
|
257 |
+
'id' => 'wcj_order_minimum_amount_options',
|
258 |
+
),
|
259 |
+
array(
|
260 |
+
'title' => __( 'Order Minimum Amount by User Role', 'woocommerce-jetpack' ),
|
261 |
+
'type' => 'title',
|
262 |
+
'id' => 'wcj_order_minimum_amount_by_ser_role_options',
|
263 |
+
'desc' => sprintf( __( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
264 |
+
admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=emails_and_misc§ion=general' ) ),
|
265 |
+
),
|
266 |
+
);
|
267 |
+
$c = array( 'guest', 'administrator', 'customer' );
|
268 |
+
$is_r = apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' );
|
269 |
+
if ( '' == $is_r ) {
|
270 |
+
$is_r = array();
|
271 |
+
}
|
272 |
+
foreach ( wcj_get_user_roles() as $role_key => $role_data ) {
|
273 |
+
$settings = array_merge( $settings, array(
|
274 |
+
array(
|
275 |
+
'title' => $role_data['name'],
|
276 |
+
'id' => 'wcj_order_minimum_amount_by_user_role_' . $role_key,
|
277 |
+
'default' => 0,
|
278 |
+
'type' => 'number',
|
279 |
+
'custom_attributes' => ( ! in_array( $role_key, $c ) ? array_merge( array( 'step' => '0.0001', 'min' => '0', ), $is_r ) : array( 'step' => '0.0001', 'min' => '0', ) ),
|
280 |
+
'desc_tip' => ( ! in_array( $role_key, $c ) ? apply_filters( 'get_wc_jetpack_plus_message', '', 'desc_no_link' ) : '' ),
|
281 |
+
),
|
282 |
+
) );
|
283 |
+
}
|
284 |
+
$settings = array_merge( $settings, array(
|
285 |
+
array(
|
286 |
+
'type' => 'sectionend',
|
287 |
+
'id' => 'wcj_order_minimum_amount_by_ser_role_options',
|
288 |
+
),
|
289 |
+
) );
|
290 |
+
return $settings;
|
291 |
+
}
|
292 |
+
}
|
293 |
+
|
294 |
+
endif;
|
295 |
+
|
296 |
+
return new WCJ_Order_Min_Amount();
|
includes/class-wcj-orders.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Orders class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,13 +17,13 @@ class WCJ_Orders extends WCJ_Module {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.5.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
24 |
$this->id = 'orders';
|
25 |
$this->short_desc = __( 'Orders', 'woocommerce-jetpack' );
|
26 |
-
$this->desc = __( '
|
27 |
$this->link = 'http://booster.io/features/woocommerce-orders/';
|
28 |
parent::__construct();
|
29 |
|
@@ -31,16 +31,13 @@ class WCJ_Orders extends WCJ_Module {
|
|
31 |
|
32 |
if ( $this->is_enabled() ) {
|
33 |
|
34 |
-
// Order minimum amount
|
35 |
-
add_action( 'init', array( $this, 'add_order_minimum_amount_hooks' ) );
|
36 |
-
|
37 |
// Order auto complete
|
38 |
if ( 'yes' === get_option( 'wcj_order_auto_complete_enabled' ) ) {
|
39 |
add_action( 'woocommerce_thankyou', array( $this, 'auto_complete_order' ) );
|
40 |
}
|
41 |
|
42 |
// Custom columns
|
43 |
-
add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_column' ), PHP_INT_MAX );
|
44 |
add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), PHP_INT_MAX );
|
45 |
if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
|
46 |
// Country filtering
|
@@ -48,7 +45,7 @@ class WCJ_Orders extends WCJ_Module {
|
|
48 |
add_filter( 'parse_query', array( $this, 'orders_by_country_admin_filter_query' ) );
|
49 |
}
|
50 |
|
51 |
-
// Order
|
52 |
if ( 'yes' === get_option( 'wcj_order_admin_currency', 'no' ) ) {
|
53 |
$this->meta_box_screen = 'shop_order';
|
54 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
@@ -57,6 +54,156 @@ class WCJ_Orders extends WCJ_Module {
|
|
57 |
add_filter( 'woocommerce_get_order_currency', array( $this, 'change_order_currency' ), PHP_INT_MAX, 2 );
|
58 |
}
|
59 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
61 |
}
|
62 |
|
@@ -92,34 +239,6 @@ class WCJ_Orders extends WCJ_Module {
|
|
92 |
return $options;
|
93 |
}
|
94 |
|
95 |
-
/**
|
96 |
-
* add_order_minimum_amount_hooks.
|
97 |
-
*
|
98 |
-
* @version 2.5.3
|
99 |
-
* @since 2.5.3
|
100 |
-
*/
|
101 |
-
function add_order_minimum_amount_hooks() {
|
102 |
-
$is_order_minimum_amount_enabled = false;
|
103 |
-
if ( get_option( 'wcj_order_minimum_amount', 0 ) > 0 ) {
|
104 |
-
$is_order_minimum_amount_enabled = true;
|
105 |
-
} else {
|
106 |
-
foreach ( wcj_get_user_roles() as $role_key => $role_data ) {
|
107 |
-
if ( get_option( 'wcj_order_minimum_amount_by_user_role_' . $role_key, 0 ) > 0 ) {
|
108 |
-
$is_order_minimum_amount_enabled = true;
|
109 |
-
break;
|
110 |
-
}
|
111 |
-
}
|
112 |
-
}
|
113 |
-
if ( $is_order_minimum_amount_enabled ) {
|
114 |
-
add_action( 'woocommerce_checkout_process', array( $this, 'order_minimum_amount' ) );
|
115 |
-
add_action( 'woocommerce_before_cart', array( $this, 'order_minimum_amount' ) );
|
116 |
-
if ( 'yes' === get_option( 'wcj_order_minimum_amount_stop_from_seeing_checkout' ) ) {
|
117 |
-
add_action( 'wp', array( $this, 'stop_from_seeing_checkout' ), 100 );
|
118 |
-
// add_action( 'template_redirect', array( $this, 'stop_from_seeing_checkout' ), 100 );
|
119 |
-
}
|
120 |
-
}
|
121 |
-
}
|
122 |
-
|
123 |
/**
|
124 |
* Filter the orders in admin based on options
|
125 |
*
|
@@ -151,6 +270,29 @@ class WCJ_Orders extends WCJ_Module {
|
|
151 |
}
|
152 |
}
|
153 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
/**
|
155 |
* add_order_column.
|
156 |
*
|
@@ -214,107 +356,6 @@ class WCJ_Orders extends WCJ_Module {
|
|
214 |
$order->update_status( 'completed' );
|
215 |
}
|
216 |
|
217 |
-
/**
|
218 |
-
* get_order_minimum_amount_with_user_roles.
|
219 |
-
*
|
220 |
-
* @version 2.5.3
|
221 |
-
* @since 2.5.3
|
222 |
-
*/
|
223 |
-
function get_order_minimum_amount_with_user_roles() {
|
224 |
-
$minimum = get_option( 'wcj_order_minimum_amount' );
|
225 |
-
$current_user_role = wcj_get_current_user_first_role();
|
226 |
-
foreach ( wcj_get_user_roles() as $role_key => $role_data ) {
|
227 |
-
if ( $role_key === $current_user_role ) {
|
228 |
-
$order_minimum_amount_by_user_role = get_option( 'wcj_order_minimum_amount_by_user_role_' . $role_key, 0 );
|
229 |
-
if ( $order_minimum_amount_by_user_role > /* $minimum */ 0 ) {
|
230 |
-
$minimum = $order_minimum_amount_by_user_role;
|
231 |
-
}
|
232 |
-
break;
|
233 |
-
}
|
234 |
-
}
|
235 |
-
return $minimum;
|
236 |
-
}
|
237 |
-
|
238 |
-
/**
|
239 |
-
* get_cart_total_for_minimal_order_amount.
|
240 |
-
*
|
241 |
-
* @version 2.5.5
|
242 |
-
* @since 2.5.5
|
243 |
-
*/
|
244 |
-
private function get_cart_total_for_minimal_order_amount() {
|
245 |
-
$cart_total = WC()->cart->total;
|
246 |
-
if ( 'yes' === get_option( 'wcj_order_minimum_amount_exclude_shipping', 'no' ) ) {
|
247 |
-
$shipping_total = isset( WC()->cart->shipping_total ) ? WC()->cart->shipping_total : 0;
|
248 |
-
$shipping_tax_total = isset( WC()->cart->shipping_tax_total ) ? WC()->cart->shipping_tax_total : 0;
|
249 |
-
$cart_total -= ( $shipping_total + $shipping_tax_total );
|
250 |
-
}
|
251 |
-
return $cart_total;
|
252 |
-
}
|
253 |
-
|
254 |
-
/**
|
255 |
-
* order_minimum_amount.
|
256 |
-
*
|
257 |
-
* @version 2.5.5
|
258 |
-
*/
|
259 |
-
public function order_minimum_amount() {
|
260 |
-
$minimum = $this->get_order_minimum_amount_with_user_roles();
|
261 |
-
if ( 0 == $minimum ) {
|
262 |
-
return;
|
263 |
-
}
|
264 |
-
$cart_total = $this->get_cart_total_for_minimal_order_amount();
|
265 |
-
if ( $cart_total < $minimum ) {
|
266 |
-
if( is_cart() ) {
|
267 |
-
if ( 'yes' === get_option( 'wcj_order_minimum_amount_cart_notice_enabled' ) ) {
|
268 |
-
wc_print_notice(
|
269 |
-
sprintf( apply_filters( 'wcj_get_option_filter', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_cart_notice_message' ) ),
|
270 |
-
woocommerce_price( $minimum ),
|
271 |
-
woocommerce_price( $cart_total )
|
272 |
-
),
|
273 |
-
'notice'
|
274 |
-
);
|
275 |
-
}
|
276 |
-
} else {
|
277 |
-
wc_add_notice(
|
278 |
-
sprintf( apply_filters( 'wcj_get_option_filter', 'You must have an order with a minimum of %s to place your order, your current order total is %s.', get_option( 'wcj_order_minimum_amount_error_message' ) ),
|
279 |
-
woocommerce_price( $minimum ),
|
280 |
-
woocommerce_price( $cart_total )
|
281 |
-
),
|
282 |
-
'error'
|
283 |
-
);
|
284 |
-
}
|
285 |
-
}
|
286 |
-
}
|
287 |
-
|
288 |
-
/**
|
289 |
-
* stop_from_seeing_checkout.
|
290 |
-
*
|
291 |
-
* @version 2.5.5
|
292 |
-
*/
|
293 |
-
public function stop_from_seeing_checkout( $wp ) {
|
294 |
-
// if ( is_admin() ) return;
|
295 |
-
global $woocommerce;
|
296 |
-
if ( ! isset( $woocommerce ) || ! is_object( $woocommerce ) ) {
|
297 |
-
return;
|
298 |
-
}
|
299 |
-
if ( ! isset( $woocommerce->cart ) || ! is_object( $woocommerce->cart ) ) {
|
300 |
-
return;
|
301 |
-
}
|
302 |
-
if ( ! is_checkout() ) {
|
303 |
-
return;
|
304 |
-
}
|
305 |
-
$minimum = $this->get_order_minimum_amount_with_user_roles();
|
306 |
-
if ( 0 == $minimum ) {
|
307 |
-
return;
|
308 |
-
}
|
309 |
-
$the_cart_total = $this->get_cart_total_for_minimal_order_amount();
|
310 |
-
if ( 0 == $the_cart_total ) {
|
311 |
-
return;
|
312 |
-
}
|
313 |
-
if ( $the_cart_total < $minimum ) {
|
314 |
-
wp_safe_redirect( $woocommerce->cart->get_cart_url() );
|
315 |
-
}
|
316 |
-
}
|
317 |
-
|
318 |
/**
|
319 |
* add_settings_hook.
|
320 |
*
|
@@ -338,7 +379,7 @@ class WCJ_Orders extends WCJ_Module {
|
|
338 |
/**
|
339 |
* add_settings.
|
340 |
*
|
341 |
-
* @version 2.5.
|
342 |
* @since 2.5.3
|
343 |
*/
|
344 |
function add_settings() {
|
@@ -371,98 +412,6 @@ class WCJ_Orders extends WCJ_Module {
|
|
371 |
'type' => 'sectionend',
|
372 |
'id' => 'wcj_order_admin_currency_options',
|
373 |
),
|
374 |
-
array(
|
375 |
-
'title' => __( 'Order Minimum Amount', 'woocommerce-jetpack' ),
|
376 |
-
'type' => 'title',
|
377 |
-
'desc' => __( 'This section lets you set minimum order amount.', 'woocommerce-jetpack' ),
|
378 |
-
'id' => 'wcj_order_minimum_amount_options',
|
379 |
-
),
|
380 |
-
array(
|
381 |
-
'title' => __( 'Amount', 'woocommerce-jetpack' ),
|
382 |
-
'desc' => __( 'Minimum order amount. Set to 0 to disable.', 'woocommerce-jetpack' ),
|
383 |
-
'id' => 'wcj_order_minimum_amount',
|
384 |
-
'default' => 0,
|
385 |
-
'type' => 'number',
|
386 |
-
'custom_attributes' => array(
|
387 |
-
'step' => '0.0001',
|
388 |
-
'min' => '0',
|
389 |
-
),
|
390 |
-
),
|
391 |
-
array(
|
392 |
-
'title' => __( 'Exclude Shipping from Cart Total', 'woocommerce-jetpack' ),
|
393 |
-
'desc' => __( 'Exclude', 'woocommerce-jetpack' ),
|
394 |
-
'id' => 'wcj_order_minimum_amount_exclude_shipping',
|
395 |
-
'default' => 'no',
|
396 |
-
'type' => 'checkbox',
|
397 |
-
),
|
398 |
-
array(
|
399 |
-
'title' => __( 'Error message', 'woocommerce-jetpack' ),
|
400 |
-
'desc' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc' ),
|
401 |
-
'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
|
402 |
-
'id' => 'wcj_order_minimum_amount_error_message',
|
403 |
-
'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
|
404 |
-
'type' => 'textarea',
|
405 |
-
'custom_attributes' => apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ),
|
406 |
-
'css' => 'width:50%;min-width:300px;',
|
407 |
-
),
|
408 |
-
array(
|
409 |
-
'title' => __( 'Add notice to cart page also', 'woocommerce-jetpack' ),
|
410 |
-
'desc' => __( 'Add', 'woocommerce-jetpack' ),
|
411 |
-
'id' => 'wcj_order_minimum_amount_cart_notice_enabled',
|
412 |
-
'default' => 'no',
|
413 |
-
'type' => 'checkbox',
|
414 |
-
),
|
415 |
-
array(
|
416 |
-
'title' => __( 'Message on cart page', 'woocommerce-jetpack' ),
|
417 |
-
'desc' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc' ),
|
418 |
-
'desc_tip' => __( 'Message to customer if order is below minimum amount. Default: You must have an order with a minimum of %s to place your order, your current order total is %s.', 'woocommerce-jetpack' ),
|
419 |
-
'id' => 'wcj_order_minimum_amount_cart_notice_message',
|
420 |
-
'default' => 'You must have an order with a minimum of %s to place your order, your current order total is %s.',
|
421 |
-
'type' => 'textarea',
|
422 |
-
'custom_attributes' => apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ),
|
423 |
-
'css' => 'width:50%;min-width:300px;',
|
424 |
-
),
|
425 |
-
array(
|
426 |
-
'title' => __( 'Stop customer from seeing the Checkout page if minimum amount not reached.', 'woocommerce-jetpack' ),
|
427 |
-
'desc' => __( 'Redirect back to Cart page', 'woocommerce-jetpack' ),
|
428 |
-
'id' => 'wcj_order_minimum_amount_stop_from_seeing_checkout',
|
429 |
-
'default' => 'no',
|
430 |
-
'type' => 'checkbox',
|
431 |
-
),
|
432 |
-
array(
|
433 |
-
'type' => 'sectionend',
|
434 |
-
'id' => 'wcj_order_minimum_amount_options',
|
435 |
-
),
|
436 |
-
array(
|
437 |
-
'title' => __( 'Order Minimum Amount by User Role', 'woocommerce-jetpack' ),
|
438 |
-
'type' => 'title',
|
439 |
-
'id' => 'wcj_order_minimum_amount_by_ser_role_options',
|
440 |
-
'desc' => sprintf( __( 'Custom roles can be added via "Add/Manage Custom Roles" tool in Booster\'s <a href="%s">General</a> module.', 'woocommerce-jetpack' ),
|
441 |
-
admin_url( 'admin.php?page=wc-settings&tab=jetpack&wcj-cat=emails_and_misc§ion=general' ) ),
|
442 |
-
),
|
443 |
-
);
|
444 |
-
$c = array( 'guest', 'administrator', 'customer' );
|
445 |
-
$is_r = apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' );
|
446 |
-
if ( '' == $is_r ) {
|
447 |
-
$is_r = array();
|
448 |
-
}
|
449 |
-
foreach ( wcj_get_user_roles() as $role_key => $role_data ) {
|
450 |
-
$settings = array_merge( $settings, array(
|
451 |
-
array(
|
452 |
-
'title' => $role_data['name'],
|
453 |
-
'id' => 'wcj_order_minimum_amount_by_user_role_' . $role_key,
|
454 |
-
'default' => 0,
|
455 |
-
'type' => 'number',
|
456 |
-
'custom_attributes' => ( ! in_array( $role_key, $c ) ? array_merge( array( 'step' => '0.0001', 'min' => '0', ), $is_r ) : array( 'step' => '0.0001', 'min' => '0', ) ),
|
457 |
-
'desc_tip' => ( ! in_array( $role_key, $c ) ? apply_filters( 'get_wc_jetpack_plus_message', '', 'desc_no_link' ) : '' ),
|
458 |
-
),
|
459 |
-
) );
|
460 |
-
}
|
461 |
-
$settings = array_merge( $settings, array(
|
462 |
-
array(
|
463 |
-
'type' => 'sectionend',
|
464 |
-
'id' => 'wcj_order_minimum_amount_by_ser_role_options',
|
465 |
-
),
|
466 |
array(
|
467 |
'title' => __( 'Orders Auto-Complete', 'woocommerce-jetpack' ),
|
468 |
'type' => 'title',
|
@@ -482,7 +431,7 @@ class WCJ_Orders extends WCJ_Module {
|
|
482 |
'id' => 'wcj_order_auto_complete_options',
|
483 |
),
|
484 |
array(
|
485 |
-
'title' => __( 'Orders List Custom Columns', 'woocommerce-jetpack' ),
|
486 |
'type' => 'title',
|
487 |
'desc' => __( 'This section lets you add custom columns to WooCommerce orders list.', 'woocommerce-jetpack' ),
|
488 |
'id' => 'wcj_orders_list_custom_columns_options',
|
@@ -505,7 +454,7 @@ class WCJ_Orders extends WCJ_Module {
|
|
505 |
array( 'step' => '1', 'min' => '0', )
|
506 |
),
|
507 |
),
|
508 |
-
)
|
509 |
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
|
510 |
for ( $i = 1; $i <= $total_number; $i++ ) {
|
511 |
$settings = array_merge( $settings, array(
|
@@ -538,6 +487,63 @@ class WCJ_Orders extends WCJ_Module {
|
|
538 |
'type' => 'sectionend',
|
539 |
'id' => 'wcj_orders_list_custom_columns_options',
|
540 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
541 |
) );
|
542 |
return $settings;
|
543 |
}
|
4 |
*
|
5 |
* The WooCommerce Jetpack Orders class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
24 |
$this->id = 'orders';
|
25 |
$this->short_desc = __( 'Orders', 'woocommerce-jetpack' );
|
26 |
+
$this->desc = __( 'Orders auto-complete. Custom admin order list columns. Admin order currency. Admin order list multiple status filtering.', 'woocommerce-jetpack' );
|
27 |
$this->link = 'http://booster.io/features/woocommerce-orders/';
|
28 |
parent::__construct();
|
29 |
|
31 |
|
32 |
if ( $this->is_enabled() ) {
|
33 |
|
|
|
|
|
|
|
34 |
// Order auto complete
|
35 |
if ( 'yes' === get_option( 'wcj_order_auto_complete_enabled' ) ) {
|
36 |
add_action( 'woocommerce_thankyou', array( $this, 'auto_complete_order' ) );
|
37 |
}
|
38 |
|
39 |
// Custom columns
|
40 |
+
add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_column' ), PHP_INT_MAX - 1 );
|
41 |
add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), PHP_INT_MAX );
|
42 |
if ( 'yes' === get_option( 'wcj_orders_list_custom_columns_country', 'no' ) ) {
|
43 |
// Country filtering
|
45 |
add_filter( 'parse_query', array( $this, 'orders_by_country_admin_filter_query' ) );
|
46 |
}
|
47 |
|
48 |
+
// Order currency
|
49 |
if ( 'yes' === get_option( 'wcj_order_admin_currency', 'no' ) ) {
|
50 |
$this->meta_box_screen = 'shop_order';
|
51 |
add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ) );
|
54 |
add_filter( 'woocommerce_get_order_currency', array( $this, 'change_order_currency' ), PHP_INT_MAX, 2 );
|
55 |
}
|
56 |
}
|
57 |
+
|
58 |
+
// Multiple status
|
59 |
+
if ( 'yes' === get_option( 'wcj_order_admin_list_multiple_status_not_completed_link', 'no' ) ) {
|
60 |
+
add_filter( 'views_edit-shop_order', array( $this, 'add_shop_order_multiple_statuses_not_completed_link' ) );
|
61 |
+
add_action( 'pre_get_posts', array( $this, 'filter_shop_order_multiple_statuses_not_completed_link' ), PHP_INT_MAX, 1 );
|
62 |
+
}
|
63 |
+
if ( 'no' != get_option( 'wcj_order_admin_list_multiple_status_filter', 'no' ) ) {
|
64 |
+
add_action( 'restrict_manage_posts', array( $this, 'add_shop_order_multiple_statuses' ), PHP_INT_MAX, 2 );
|
65 |
+
add_action( 'pre_get_posts', array( $this, 'filter_shop_order_multiple_statuses' ), PHP_INT_MAX, 1 );
|
66 |
+
}
|
67 |
+
if ( 'yes' === get_option( 'wcj_order_admin_list_hide_default_statuses_menu', 'no' ) ) {
|
68 |
+
add_action( 'admin_head', array( $this, 'hide_default_statuses_menu' ), PHP_INT_MAX );
|
69 |
+
}
|
70 |
+
|
71 |
+
// Columns Order
|
72 |
+
if ( 'yes' === get_option( 'wcj_order_admin_list_columns_order_enabled', 'no' ) ) {
|
73 |
+
add_filter( 'manage_edit-shop_order_columns', array( $this, 'rearange_order_columns' ), PHP_INT_MAX );
|
74 |
+
}
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* hide_default_statuses_menu.
|
80 |
+
*
|
81 |
+
* @version 2.5.7
|
82 |
+
* @since 2.5.7
|
83 |
+
*/
|
84 |
+
function hide_default_statuses_menu() {
|
85 |
+
echo '<style>body.post-type-shop_order ul.subsubsub {display: none !important;}</style>';
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* get_orders_default_columns_in_order.
|
90 |
+
*
|
91 |
+
* @version 2.5.7
|
92 |
+
* @since 2.5.7
|
93 |
+
*/
|
94 |
+
function get_orders_default_columns_in_order() {
|
95 |
+
$columns = array(
|
96 |
+
'cb',
|
97 |
+
'order_status',
|
98 |
+
'order_title',
|
99 |
+
'order_items',
|
100 |
+
'billing_address',
|
101 |
+
'shipping_address',
|
102 |
+
'customer_message',
|
103 |
+
'order_notes',
|
104 |
+
'order_date',
|
105 |
+
'order_total',
|
106 |
+
'order_actions',
|
107 |
+
);
|
108 |
+
return implode( PHP_EOL, $columns );
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* add_shop_order_multiple_statuses_not_completed_link.
|
113 |
+
*
|
114 |
+
* @version 2.5.7
|
115 |
+
* @since 2.5.7
|
116 |
+
*/
|
117 |
+
function add_shop_order_multiple_statuses_not_completed_link( $views ) {
|
118 |
+
global $wp_query;
|
119 |
+
if ( ! current_user_can( 'edit_others_pages' ) ) {
|
120 |
+
return $views;
|
121 |
+
}
|
122 |
+
$all_not_completed_statuses = wc_get_order_statuses();
|
123 |
+
unset( $all_not_completed_statuses['wc-completed'] );
|
124 |
+
$all_not_completed_statuses = array_keys( $all_not_completed_statuses );
|
125 |
+
$all_not_completed_statuses_param = urlencode( implode( ',', $all_not_completed_statuses ) );
|
126 |
+
$class = ( isset( $wp_query->query['post_status'] ) && is_array( $wp_query->query['post_status'] ) && $all_not_completed_statuses === $wp_query->query['post_status'] ) ? 'current' : '';
|
127 |
+
$query_string = remove_query_arg( array( 'post_status', 'wcj_admin_filter_statuses' ) );
|
128 |
+
$query_string = add_query_arg( 'post_status', $all_not_completed_statuses_param, $query_string );
|
129 |
+
$views['wcj_statuses_not_completed'] = '<a href="' . esc_url( $query_string ) . '" class="' . esc_attr( $class ) . '">' . __( 'Not Completed', 'woocommerce-jetpack' ) . '</a>';
|
130 |
+
return $views;
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* filter_shop_order_multiple_statuses_not_completed_link.
|
135 |
+
*
|
136 |
+
* @version 2.5.7
|
137 |
+
* @since 2.5.7
|
138 |
+
*/
|
139 |
+
function filter_shop_order_multiple_statuses_not_completed_link( $query ) {
|
140 |
+
if ( false !== strpos( $_SERVER['REQUEST_URI'], '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
|
141 |
+
if ( current_user_can( 'edit_others_pages' ) ) {
|
142 |
+
if ( isset( $_GET['post_status'] ) && false !== strpos( $_GET['post_status'], ',' ) ) {
|
143 |
+
$post_statuses = explode( ',', $_GET['post_status'] );
|
144 |
+
// $query->set( 'post_status', $post_statuses );
|
145 |
+
$query->query['post_status'] = $post_statuses;
|
146 |
+
$query->query_vars['post_status'] = $post_statuses;
|
147 |
+
}
|
148 |
+
}
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* multiple_shop_order_statuses.
|
154 |
+
*
|
155 |
+
* @version 2.5.7
|
156 |
+
* @since 2.5.7
|
157 |
+
*/
|
158 |
+
function multiple_shop_order_statuses( $type ) {
|
159 |
+
$checked_post_statuses = isset( $_GET['wcj_admin_filter_statuses'] ) ? $_GET['wcj_admin_filter_statuses'] : array();
|
160 |
+
$html = '';
|
161 |
+
$html .= ( 'checkboxes' === $type ) ?
|
162 |
+
'<span id="wcj_admin_filter_shop_order_statuses">' :
|
163 |
+
'<select multiple name="wcj_admin_filter_statuses[]" id="wcj_admin_filter_shop_order_statuses">';
|
164 |
+
$num_posts = wp_count_posts( 'shop_order', 'readable' );
|
165 |
+
foreach ( wc_get_order_statuses() as $status_id => $status_title ) {
|
166 |
+
$total_number = ( isset( $num_posts->{$status_id} ) ) ? $num_posts->{$status_id} : 0;
|
167 |
+
if ( $total_number > 0 ) {
|
168 |
+
$html .= ( 'checkboxes' === $type ) ?
|
169 |
+
'<input type="checkbox" name="wcj_admin_filter_statuses[]" value="' . $status_id . '"' . checked( in_array( $status_id, $checked_post_statuses ), true, false ) . '>' . $status_title . ' (' . $total_number . ') ' :
|
170 |
+
'<option value="' . $status_id . '"' . selected( in_array( $status_id, $checked_post_statuses ), true, false ) . '>' . $status_title . ' (' . $total_number . ') ' . '</option>';
|
171 |
+
}
|
172 |
+
}
|
173 |
+
$html .= ( 'checkboxes' === $type ) ?
|
174 |
+
'</span>' :
|
175 |
+
'</select>';
|
176 |
+
return $html;
|
177 |
+
}
|
178 |
+
|
179 |
+
/**
|
180 |
+
* add_shop_order_multiple_statuses.
|
181 |
+
*
|
182 |
+
* @version 2.5.7
|
183 |
+
* @since 2.5.7
|
184 |
+
*/
|
185 |
+
function add_shop_order_multiple_statuses( $post_type, $which ) {
|
186 |
+
if ( 'shop_order' === $post_type ) {
|
187 |
+
echo $this->multiple_shop_order_statuses( get_option( 'wcj_order_admin_list_multiple_status_filter', 'no' ) );
|
188 |
+
}
|
189 |
+
}
|
190 |
+
|
191 |
+
/**
|
192 |
+
* filter_shop_order_multiple_statuses.
|
193 |
+
*
|
194 |
+
* @version 2.5.7
|
195 |
+
* @since 2.5.7
|
196 |
+
*/
|
197 |
+
function filter_shop_order_multiple_statuses( $query ) {
|
198 |
+
if ( false !== strpos( $_SERVER['REQUEST_URI'], '/wp-admin/edit.php' ) && isset( $_GET['post_type'] ) && 'shop_order' === $_GET['post_type'] ) {
|
199 |
+
if ( current_user_can( 'edit_others_pages' ) ) {
|
200 |
+
if ( isset( $_GET['wcj_admin_filter_statuses'] ) ) {
|
201 |
+
$post_statuses = $_GET['wcj_admin_filter_statuses'];
|
202 |
+
// $query->set( 'post_status', $post_statuses );
|
203 |
+
$query->query['post_status'] = $post_statuses;
|
204 |
+
$query->query_vars['post_status'] = $post_statuses;
|
205 |
+
}
|
206 |
+
}
|
207 |
}
|
208 |
}
|
209 |
|
239 |
return $options;
|
240 |
}
|
241 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
/**
|
243 |
* Filter the orders in admin based on options
|
244 |
*
|
270 |
}
|
271 |
}
|
272 |
|
273 |
+
/**
|
274 |
+
* rearange_order_columns.
|
275 |
+
*
|
276 |
+
* @version 2.5.7
|
277 |
+
* @version 2.5.7
|
278 |
+
*/
|
279 |
+
function rearange_order_columns( $columns ) {
|
280 |
+
$reordered_columns = get_option( 'wcj_order_admin_list_columns_order', $this->get_orders_default_columns_in_order() );
|
281 |
+
$reordered_columns = explode( PHP_EOL, $reordered_columns );
|
282 |
+
$reordered_columns_result = array();
|
283 |
+
if ( ! empty( $reordered_columns ) ) {
|
284 |
+
foreach ( $reordered_columns as $column_id ) {
|
285 |
+
$column_id = str_replace( "\n", '', $column_id );
|
286 |
+
$column_id = str_replace( "\r", '', $column_id );
|
287 |
+
if ( '' != $column_id && isset( $columns[ $column_id ] ) ) {
|
288 |
+
$reordered_columns_result[ $column_id ] = $columns[ $column_id ];
|
289 |
+
unset( $columns[ $column_id ] );
|
290 |
+
}
|
291 |
+
}
|
292 |
+
}
|
293 |
+
return array_merge( $reordered_columns_result, $columns );
|
294 |
+
}
|
295 |
+
|
296 |
/**
|
297 |
* add_order_column.
|
298 |
*
|
356 |
$order->update_status( 'completed' );
|
357 |
}
|
358 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
359 |
/**
|
360 |
* add_settings_hook.
|
361 |
*
|
379 |
/**
|
380 |
* add_settings.
|
381 |
*
|
382 |
+
* @version 2.5.7
|
383 |
* @since 2.5.3
|
384 |
*/
|
385 |
function add_settings() {
|
412 |
'type' => 'sectionend',
|
413 |
'id' => 'wcj_order_admin_currency_options',
|
414 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
415 |
array(
|
416 |
'title' => __( 'Orders Auto-Complete', 'woocommerce-jetpack' ),
|
417 |
'type' => 'title',
|
431 |
'id' => 'wcj_order_auto_complete_options',
|
432 |
),
|
433 |
array(
|
434 |
+
'title' => __( 'Admin Orders List Custom Columns', 'woocommerce-jetpack' ),
|
435 |
'type' => 'title',
|
436 |
'desc' => __( 'This section lets you add custom columns to WooCommerce orders list.', 'woocommerce-jetpack' ),
|
437 |
'id' => 'wcj_orders_list_custom_columns_options',
|
454 |
array( 'step' => '1', 'min' => '0', )
|
455 |
),
|
456 |
),
|
457 |
+
);
|
458 |
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_orders_list_custom_columns_total_number', 1 ) );
|
459 |
for ( $i = 1; $i <= $total_number; $i++ ) {
|
460 |
$settings = array_merge( $settings, array(
|
487 |
'type' => 'sectionend',
|
488 |
'id' => 'wcj_orders_list_custom_columns_options',
|
489 |
),
|
490 |
+
array(
|
491 |
+
'title' => __( 'Admin Orders List Multiple Status', 'woocommerce-jetpack' ),
|
492 |
+
'type' => 'title',
|
493 |
+
'id' => 'wcj_order_admin_list_multiple_status_options',
|
494 |
+
),
|
495 |
+
array(
|
496 |
+
'title' => __( 'Multiple Status Filtering', 'woocommerce-jetpack' ),
|
497 |
+
'id' => 'wcj_order_admin_list_multiple_status_filter',
|
498 |
+
'default' => 'no',
|
499 |
+
'type' => 'select',
|
500 |
+
'options' => array(
|
501 |
+
'no' => __( 'Do not add', 'woocommerce-jetpack' ),
|
502 |
+
'multiple_select' => __( 'Add as multiple select', 'woocommerce-jetpack' ),
|
503 |
+
'checkboxes' => __( 'Add as checkboxes', 'woocommerce-jetpack' ),
|
504 |
+
),
|
505 |
+
),
|
506 |
+
array(
|
507 |
+
'title' => __( 'Hide Default Statuses Menu', 'woocommerce-jetpack' ),
|
508 |
+
'desc' => __( 'Hide', 'woocommerce-jetpack' ),
|
509 |
+
'id' => 'wcj_order_admin_list_hide_default_statuses_menu',
|
510 |
+
'default' => 'no',
|
511 |
+
'type' => 'checkbox',
|
512 |
+
),
|
513 |
+
array(
|
514 |
+
'title' => __( 'Add "Not Completed" Status Link to Default Statuses Menu', 'woocommerce-jetpack' ),
|
515 |
+
'desc' => __( 'Add', 'woocommerce-jetpack' ),
|
516 |
+
'id' => 'wcj_order_admin_list_multiple_status_not_completed_link',
|
517 |
+
'default' => 'no',
|
518 |
+
'type' => 'checkbox',
|
519 |
+
),
|
520 |
+
array(
|
521 |
+
'type' => 'sectionend',
|
522 |
+
'id' => 'wcj_order_admin_list_multiple_status_options',
|
523 |
+
),
|
524 |
+
array(
|
525 |
+
'title' => __( 'Admin Orders List Columns Order', 'woocommerce-jetpack' ),
|
526 |
+
'type' => 'title',
|
527 |
+
'id' => 'wcj_order_admin_list_columns_order_options',
|
528 |
+
),
|
529 |
+
array(
|
530 |
+
'title' => __( 'Columns Order', 'woocommerce-jetpack' ),
|
531 |
+
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
532 |
+
'id' => 'wcj_order_admin_list_columns_order_enabled',
|
533 |
+
'default' => 'no',
|
534 |
+
'type' => 'checkbox',
|
535 |
+
),
|
536 |
+
array(
|
537 |
+
'id' => 'wcj_order_admin_list_columns_order',
|
538 |
+
'desc_tip' => __( 'Default columns order', 'woocommerce-jetpack' ) . ':<br>' . str_replace( PHP_EOL, '<br>', $this->get_orders_default_columns_in_order() ),
|
539 |
+
'default' => $this->get_orders_default_columns_in_order(),
|
540 |
+
'type' => 'textarea',
|
541 |
+
'css' => 'height:300px;',
|
542 |
+
),
|
543 |
+
array(
|
544 |
+
'type' => 'sectionend',
|
545 |
+
'id' => 'wcj_order_admin_list_columns_order_options',
|
546 |
+
),
|
547 |
) );
|
548 |
return $settings;
|
549 |
}
|
includes/class-wcj-payment-gateways-icons.php
CHANGED
@@ -36,9 +36,9 @@ class WCJ_Payment_Gateways_Icons extends WCJ_Module {
|
|
36 |
// compatibility with 2.3.0 or below
|
37 |
$default_gateways = array( 'cod', 'cheque', 'bacs', 'mijireh_checkout', 'paypal' );
|
38 |
foreach ( $default_gateways as $key ) {
|
39 |
-
$
|
40 |
-
if ( '' != $
|
41 |
-
update_option( 'wcj_gateways_icons_' . $key . '_icon', $
|
42 |
delete_option( 'wcj_payment_gateways_icons_' . 'woocommerce_' . $key . '_icon' );
|
43 |
}
|
44 |
}
|
36 |
// compatibility with 2.3.0 or below
|
37 |
$default_gateways = array( 'cod', 'cheque', 'bacs', 'mijireh_checkout', 'paypal' );
|
38 |
foreach ( $default_gateways as $key ) {
|
39 |
+
$deprecated_option = get_option( 'wcj_payment_gateways_icons_' . 'woocommerce_' . $key . '_icon', '' );
|
40 |
+
if ( '' != $deprecated_option ) {
|
41 |
+
update_option( 'wcj_gateways_icons_' . $key . '_icon', $deprecated_option );
|
42 |
delete_option( 'wcj_payment_gateways_icons_' . 'woocommerce_' . $key . '_icon' );
|
43 |
}
|
44 |
}
|
includes/class-wcj-pdf-invoicing.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack PDF Invoicing class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,7 +17,7 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.5.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
@@ -44,6 +44,11 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
|
|
44 |
add_action( 'init', array( $this, 'catch_args' ) );
|
45 |
add_action( 'init', array( $this, 'generate_pdf_on_init' ) );
|
46 |
|
|
|
|
|
|
|
|
|
|
|
47 |
$this->the_pdf_invoicing_report_tool = include_once( 'pdf-invoices/class-wcj-pdf-invoicing-report-tool.php' );
|
48 |
|
49 |
$invoice_types = wcj_get_enabled_invoice_types();
|
@@ -62,6 +67,161 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
|
|
62 |
}
|
63 |
}
|
64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
/**
|
66 |
* create_invoices_report_tool.
|
67 |
*
|
@@ -123,11 +283,15 @@ class WCJ_PDF_Invoicing extends WCJ_Module {
|
|
123 |
|
124 |
/**
|
125 |
* create_document.
|
|
|
|
|
126 |
*/
|
127 |
function create_document( $order_id, $invoice_type ) {
|
128 |
if ( false == wcj_is_invoice_created( $order_id, $invoice_type ) ) {
|
129 |
wcj_create_invoice( $order_id, $invoice_type );
|
|
|
130 |
}
|
|
|
131 |
}
|
132 |
|
133 |
/**
|
4 |
*
|
5 |
* The WooCommerce Jetpack PDF Invoicing class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
44 |
add_action( 'init', array( $this, 'catch_args' ) );
|
45 |
add_action( 'init', array( $this, 'generate_pdf_on_init' ) );
|
46 |
|
47 |
+
// Bulk actions
|
48 |
+
add_action( 'admin_footer-edit.php', array( $this, 'bulk_actions_pdfs_admin_footer' ) );
|
49 |
+
add_action( 'load-edit.php', array( $this, 'bulk_actions_pdfs' ) );
|
50 |
+
add_action( 'admin_notices', array( $this, 'bulk_actions_pdfs_notices' ) );
|
51 |
+
|
52 |
$this->the_pdf_invoicing_report_tool = include_once( 'pdf-invoices/class-wcj-pdf-invoicing-report-tool.php' );
|
53 |
|
54 |
$invoice_types = wcj_get_enabled_invoice_types();
|
67 |
}
|
68 |
}
|
69 |
|
70 |
+
/**
|
71 |
+
* Add extra bulk action options to generate/download documents
|
72 |
+
*
|
73 |
+
* Using Javascript until WordPress core fixes: http://core.trac.wordpress.org/ticket/16031
|
74 |
+
*
|
75 |
+
* @todo add "print" action
|
76 |
+
* @see https://www.skyverge.com/blog/add-custom-bulk-action/
|
77 |
+
* @version 2.5.7
|
78 |
+
* @since 2.5.7
|
79 |
+
*/
|
80 |
+
function bulk_actions_pdfs_admin_footer() {
|
81 |
+
global $post_type;
|
82 |
+
if ( 'shop_order' == $post_type ) {
|
83 |
+
?><script type="text/javascript"><?php
|
84 |
+
$invoice_types = wcj_get_enabled_invoice_types();
|
85 |
+
foreach ( $invoice_types as $invoice_type ) {
|
86 |
+
$key = $invoice_type['id'];
|
87 |
+
$title = $invoice_type['title'];
|
88 |
+
?>jQuery(function() {
|
89 |
+
jQuery('<option>').val('generate_<?php echo $key; ?>').text('<?php echo __( 'Generate', 'woocommerce-jetpack' ) . ' ' . $title; ?>').appendTo('select[name="action"]');
|
90 |
+
jQuery('<option>').val('generate_<?php echo $key; ?>').text('<?php echo __( 'Generate', 'woocommerce-jetpack' ) . ' ' . $title; ?>').appendTo('select[name="action2"]');
|
91 |
+
});<?php
|
92 |
+
}
|
93 |
+
foreach ( $invoice_types as $invoice_type ) {
|
94 |
+
$key = $invoice_type['id'];
|
95 |
+
$title = $invoice_type['title'];
|
96 |
+
?>jQuery(function() {
|
97 |
+
jQuery('<option>').val('download_<?php echo $key; ?>').text('<?php echo __( 'Download', 'woocommerce-jetpack' ) . ' ' . $title; ?>').appendTo('select[name="action"]');
|
98 |
+
jQuery('<option>').val('download_<?php echo $key; ?>').text('<?php echo __( 'Download', 'woocommerce-jetpack' ) . ' ' . $title; ?>').appendTo('select[name="action2"]');
|
99 |
+
});<?php
|
100 |
+
}
|
101 |
+
?></script><?php
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* bulk_actions_pdfs_notices.
|
107 |
+
*
|
108 |
+
* @version 2.5.7
|
109 |
+
* @since 2.5.7
|
110 |
+
*/
|
111 |
+
function bulk_actions_pdfs_notices() {
|
112 |
+
global $post_type, $pagenow;
|
113 |
+
if ( $pagenow == 'edit.php' && 'shop_order' == $post_type && isset( $_REQUEST['generated'] ) && (int) $_REQUEST['generated'] ) {
|
114 |
+
$message = sprintf( _n( 'Document generated.', '%s documents generated.', $_REQUEST['generated'] ), number_format_i18n( $_REQUEST['generated'] ) );
|
115 |
+
echo "<div class='updated'><p>{$message}</p></div>";
|
116 |
+
}
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* bulk_actions_pdfs.
|
121 |
+
*
|
122 |
+
* @version 2.5.7
|
123 |
+
* @since 2.5.7
|
124 |
+
*/
|
125 |
+
function bulk_actions_pdfs() {
|
126 |
+
|
127 |
+
// Get the action
|
128 |
+
$wp_list_table = _get_list_table( 'WP_Posts_List_Table' );
|
129 |
+
$action = $wp_list_table->current_action();
|
130 |
+
|
131 |
+
// TODO: Security check
|
132 |
+
// check_admin_referer('bulk-posts');
|
133 |
+
|
134 |
+
// Validate the action
|
135 |
+
$action_exploded = explode( '_', $action, 2 );
|
136 |
+
if ( empty( $action_exploded ) || ! is_array( $action_exploded ) || 2 !== count( $action_exploded ) || ! in_array( $action_exploded[0], array( 'generate', 'download' ) ) ) {
|
137 |
+
return;
|
138 |
+
}
|
139 |
+
// Perform the action
|
140 |
+
$post_ids = $_GET['post'];
|
141 |
+
$the_action = $action_exploded[0];
|
142 |
+
$the_type = $action_exploded[1];
|
143 |
+
switch( $the_action ) {
|
144 |
+
case 'generate':
|
145 |
+
// TODO: Validate user permissions/capabilities
|
146 |
+
// if ( ! current_user_can( $post_type_object->cap->export_post, $post_id ) ) {
|
147 |
+
// wp_die( __( 'You are not allowed to export this post.' ) );
|
148 |
+
// }
|
149 |
+
$generated = 0;
|
150 |
+
foreach( $post_ids as $post_id ) {
|
151 |
+
if ( $this->create_document( $post_id, $the_type ) ) {
|
152 |
+
$generated++;
|
153 |
+
}
|
154 |
+
}
|
155 |
+
// Build the redirect url
|
156 |
+
$sendback = add_query_arg(
|
157 |
+
array(
|
158 |
+
'post_type' => 'shop_order',
|
159 |
+
'generated' => $generated,
|
160 |
+
'generated_type' => $the_type,
|
161 |
+
'generated_' . $the_type => 1,
|
162 |
+
'ids' => join( ',', $post_ids ),
|
163 |
+
'post_status' => $_GET['post_status'],
|
164 |
+
),
|
165 |
+
$sendback
|
166 |
+
);
|
167 |
+
break;
|
168 |
+
case 'download':
|
169 |
+
$this->get_invoices_zip( $the_type, $post_ids );
|
170 |
+
exit();
|
171 |
+
default:
|
172 |
+
return;
|
173 |
+
}
|
174 |
+
|
175 |
+
// Redirect client
|
176 |
+
wp_redirect( esc_url_raw( $sendback ) );
|
177 |
+
exit();
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* get_invoices_zip.
|
182 |
+
*
|
183 |
+
* @version 2.5.7
|
184 |
+
* @since 2.5.7
|
185 |
+
*/
|
186 |
+
function get_invoices_zip( $invoice_type_id, $post_ids ) {
|
187 |
+
|
188 |
+
$zip = new ZipArchive();
|
189 |
+
$zip_file_name = $invoice_type_id . '.zip';
|
190 |
+
$zip_file_path = sys_get_temp_dir() . '/' . $zip_file_name;
|
191 |
+
if ( file_exists( $zip_file_path ) ) {
|
192 |
+
unlink ( $zip_file_path );
|
193 |
+
}
|
194 |
+
if ( $zip->open( $zip_file_path, ZipArchive::CREATE ) !== TRUE ) {
|
195 |
+
return false;
|
196 |
+
}
|
197 |
+
foreach( $post_ids as $post_id ) {
|
198 |
+
if ( wcj_is_invoice_created( $post_id, $invoice_type_id ) ) {
|
199 |
+
$the_invoice = wcj_get_pdf_invoice( $post_id, $invoice_type_id );
|
200 |
+
$file_name = $the_invoice->get_pdf( 'F' );
|
201 |
+
$zip->addFile( $file_name, $the_invoice->get_file_name() );
|
202 |
+
}
|
203 |
+
}
|
204 |
+
$zip->close();
|
205 |
+
|
206 |
+
header( "Content-Type: application/octet-stream" );
|
207 |
+
header( "Content-Disposition: attachment; filename=" . urlencode( $zip_file_name ) );
|
208 |
+
header( "Content-Type: application/octet-stream" );
|
209 |
+
header( "Content-Type: application/download" );
|
210 |
+
header( "Content-Description: File Transfer" );
|
211 |
+
header( "Content-Length: " . filesize( $zip_file_path ) );
|
212 |
+
flush(); // this doesn't really matter.
|
213 |
+
if ( false !== ( $fp = fopen( $zip_file_path, "r" ) ) ) {
|
214 |
+
while ( ! feof( $fp ) ) {
|
215 |
+
echo fread( $fp, 65536 );
|
216 |
+
flush(); // this is essential for large downloads
|
217 |
+
}
|
218 |
+
fclose( $fp );
|
219 |
+
} else {
|
220 |
+
die( __( 'Unexpected error', 'woocommerce-jetpack' ) );
|
221 |
+
}
|
222 |
+
return true;
|
223 |
+
}
|
224 |
+
|
225 |
/**
|
226 |
* create_invoices_report_tool.
|
227 |
*
|
283 |
|
284 |
/**
|
285 |
* create_document.
|
286 |
+
*
|
287 |
+
* @version 2.5.7
|
288 |
*/
|
289 |
function create_document( $order_id, $invoice_type ) {
|
290 |
if ( false == wcj_is_invoice_created( $order_id, $invoice_type ) ) {
|
291 |
wcj_create_invoice( $order_id, $invoice_type );
|
292 |
+
return true;
|
293 |
}
|
294 |
+
return false;
|
295 |
}
|
296 |
|
297 |
/**
|
includes/class-wcj-price-by-user-role.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Price by User Role class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.5.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
* @todo Fix "Make Empty Price" option for variable products
|
@@ -19,7 +19,7 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
19 |
/**
|
20 |
* Constructor.
|
21 |
*
|
22 |
-
* @version 2.5.
|
23 |
* @since 2.5.0
|
24 |
*/
|
25 |
function __construct() {
|
@@ -38,7 +38,9 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
38 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
39 |
}
|
40 |
if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
41 |
-
|
|
|
|
|
42 |
}
|
43 |
add_filter( 'wcj_save_meta_box_value', array( $this, 'save_meta_box_value' ), PHP_INT_MAX, 3 );
|
44 |
add_action( 'admin_notices', array( $this, 'admin_notices' ) );
|
@@ -270,7 +272,7 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
270 |
/**
|
271 |
* change_price_by_role.
|
272 |
*
|
273 |
-
* @version 2.5.
|
274 |
* @since 2.5.0
|
275 |
*/
|
276 |
function change_price_by_role( $price, $_product ) {
|
@@ -291,7 +293,8 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
291 |
return $_product->$get_price_method();
|
292 |
} elseif ( 'woocommerce_get_price' == $the_current_filter || 'woocommerce_variation_prices_price' == $the_current_filter ) {
|
293 |
$sale_price_per_product = get_post_meta( $the_product_id, '_' . 'wcj_price_by_user_role_sale_price_' . $current_user_role, true );
|
294 |
-
return ( '' != $sale_price_per_product && $sale_price_per_product < $regular_price_per_product ) ? $sale_price_per_product : $regular_price_per_product;
|
|
|
295 |
} elseif ( 'woocommerce_get_regular_price' == $the_current_filter || 'wcj_price_by_user_role_regular_price_' == $the_current_filter ) {
|
296 |
return $regular_price_per_product;
|
297 |
} elseif ( 'woocommerce_get_sale_price' == $the_current_filter || 'woocommerce_variation_prices_sale_price' == $the_current_filter ) {
|
@@ -357,7 +360,7 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
357 |
/**
|
358 |
* add_settings.
|
359 |
*
|
360 |
-
* @version 2.5.
|
361 |
* @since 2.5.0
|
362 |
*/
|
363 |
function add_settings() {
|
@@ -393,6 +396,13 @@ class WCJ_Price_By_User_Role extends WCJ_Module {
|
|
393 |
'id' => 'wcj_price_by_user_role_shipping_enabled',
|
394 |
'default' => 'no',
|
395 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
396 |
array(
|
397 |
'type' => 'sectionend',
|
398 |
'id' => 'wcj_price_by_user_role_options',
|
4 |
*
|
5 |
* The WooCommerce Jetpack Price by User Role class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.5.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
* @todo Fix "Make Empty Price" option for variable products
|
19 |
/**
|
20 |
* Constructor.
|
21 |
*
|
22 |
+
* @version 2.5.7
|
23 |
* @since 2.5.0
|
24 |
*/
|
25 |
function __construct() {
|
38 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
39 |
}
|
40 |
if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
|
41 |
+
if ( 'no' === get_option( 'wcj_price_by_user_role_for_bots_disabled', 'no' ) || ! wcj_is_bot() ) {
|
42 |
+
$this->add_hooks();
|
43 |
+
}
|
44 |
}
|
45 |
add_filter( 'wcj_save_meta_box_value', array( $this, 'save_meta_box_value' ), PHP_INT_MAX, 3 );
|
46 |
add_action( 'admin_notices', array( $this, 'admin_notices' ) );
|
272 |
/**
|
273 |
* change_price_by_role.
|
274 |
*
|
275 |
+
* @version 2.5.7
|
276 |
* @since 2.5.0
|
277 |
*/
|
278 |
function change_price_by_role( $price, $_product ) {
|
293 |
return $_product->$get_price_method();
|
294 |
} elseif ( 'woocommerce_get_price' == $the_current_filter || 'woocommerce_variation_prices_price' == $the_current_filter ) {
|
295 |
$sale_price_per_product = get_post_meta( $the_product_id, '_' . 'wcj_price_by_user_role_sale_price_' . $current_user_role, true );
|
296 |
+
$return = ( '' != $sale_price_per_product && $sale_price_per_product < $regular_price_per_product ) ? $sale_price_per_product : $regular_price_per_product;
|
297 |
+
return apply_filters( 'wcj_price_by_user_role_get_price', $return, $_product );
|
298 |
} elseif ( 'woocommerce_get_regular_price' == $the_current_filter || 'wcj_price_by_user_role_regular_price_' == $the_current_filter ) {
|
299 |
return $regular_price_per_product;
|
300 |
} elseif ( 'woocommerce_get_sale_price' == $the_current_filter || 'woocommerce_variation_prices_sale_price' == $the_current_filter ) {
|
360 |
/**
|
361 |
* add_settings.
|
362 |
*
|
363 |
+
* @version 2.5.7
|
364 |
* @since 2.5.0
|
365 |
*/
|
366 |
function add_settings() {
|
396 |
'id' => 'wcj_price_by_user_role_shipping_enabled',
|
397 |
'default' => 'no',
|
398 |
),
|
399 |
+
array(
|
400 |
+
'title' => __( 'Search Engine Bots', 'woocommerce-jetpack' ),
|
401 |
+
'desc' => __( 'Disable Price by User Role for Bots', 'woocommerce-jetpack' ),
|
402 |
+
'id' => 'wcj_price_by_user_role_for_bots_disabled',
|
403 |
+
'default' => 'no',
|
404 |
+
'type' => 'checkbox',
|
405 |
+
),
|
406 |
array(
|
407 |
'type' => 'sectionend',
|
408 |
'id' => 'wcj_price_by_user_role_options',
|
includes/class-wcj-price-labels.php
CHANGED
@@ -32,7 +32,7 @@ class WCJ_Price_Labels extends WCJ_Module {
|
|
32 |
'title' => __( 'Migrate from Custom Price Labels (Pro)', 'woocommerce-jetpack' ),
|
33 |
'desc' => __( 'Tool lets you copy all the data (that is labels) from Custom Price labels (Pro) plugin to Booster.', 'woocommerce-jetpack' ),
|
34 |
// 'tab_title' => __( 'Migrate from Custom Price Labels (Pro)', 'woocommerce-jetpack' ),
|
35 |
-
'
|
36 |
),
|
37 |
), array( 'tools_dashboard_hook_priority' => PHP_INT_MAX ) );
|
38 |
|
32 |
'title' => __( 'Migrate from Custom Price Labels (Pro)', 'woocommerce-jetpack' ),
|
33 |
'desc' => __( 'Tool lets you copy all the data (that is labels) from Custom Price labels (Pro) plugin to Booster.', 'woocommerce-jetpack' ),
|
34 |
// 'tab_title' => __( 'Migrate from Custom Price Labels (Pro)', 'woocommerce-jetpack' ),
|
35 |
+
'deprecated' => true,
|
36 |
),
|
37 |
), array( 'tools_dashboard_hook_priority' => PHP_INT_MAX ) );
|
38 |
|
includes/class-wcj-product-by-user.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Product by User class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.5.2
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -18,7 +18,7 @@ class WCJ_Product_By_User extends WCJ_Module {
|
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
-
* @version 2.5.
|
22 |
* @since 2.5.2
|
23 |
*/
|
24 |
public function __construct() {
|
@@ -33,34 +33,77 @@ class WCJ_Product_By_User extends WCJ_Module {
|
|
33 |
|
34 |
if ( $this->is_enabled() ) {
|
35 |
if ( 'yes' === get_option( 'wcj_product_by_user_add_to_my_account', 'yes' ) ) {
|
36 |
-
add_filter( 'woocommerce_account_menu_items',
|
37 |
-
add_action( '
|
|
|
38 |
}
|
39 |
}
|
40 |
}
|
41 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
/**
|
43 |
* add_my_products_tab_my_account_page.
|
44 |
*
|
45 |
-
* @version 2.5.
|
46 |
* @since 2.5.2
|
47 |
* @todo check if any user's products exist
|
48 |
*/
|
49 |
function add_my_products_tab_my_account_page( $items ) {
|
50 |
-
$items['wcj-my-products'] = __( 'My Products', 'woocommerce-jetpack' );
|
51 |
-
|
|
|
52 |
}
|
53 |
|
54 |
/**
|
55 |
* add_my_products_content_my_account_page.
|
56 |
*
|
57 |
-
* @version 2.5.
|
58 |
* @since 2.5.2
|
59 |
*/
|
60 |
function add_my_products_content_my_account_page() {
|
61 |
-
if ( ! isset( $_GET['wcj-my-products'] ) ) {
|
62 |
return;
|
63 |
-
}
|
64 |
$user_ID = get_current_user_id();
|
65 |
if ( 0 == $user_ID ) {
|
66 |
return;
|
@@ -108,7 +151,7 @@ class WCJ_Product_By_User extends WCJ_Module {
|
|
108 |
}
|
109 |
wp_reset_postdata();
|
110 |
if ( 0 != count( $products ) ) {
|
111 |
-
echo '<h2>' . __( 'My Products', 'woocommerce-jetpack' ) . '</h2>';
|
112 |
$table_data = array();
|
113 |
$table_data[] = array( '', __( 'Status', 'woocommerce-jetpack' ), __( 'Title', 'woocommerce-jetpack' ), __( 'Actions', 'woocommerce-jetpack' ) );
|
114 |
$i = 0;
|
4 |
*
|
5 |
* The WooCommerce Jetpack Product by User class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.5.2
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
+
* @version 2.5.7
|
22 |
* @since 2.5.2
|
23 |
*/
|
24 |
public function __construct() {
|
33 |
|
34 |
if ( $this->is_enabled() ) {
|
35 |
if ( 'yes' === get_option( 'wcj_product_by_user_add_to_my_account', 'yes' ) ) {
|
36 |
+
add_filter( 'woocommerce_account_menu_items', array( $this, 'add_my_products_tab_my_account_page' ) );
|
37 |
+
add_action( 'woocommerce_account_wcj-my-products_endpoint', array( $this, 'add_my_products_content_my_account_page' ) );
|
38 |
+
add_filter( 'the_title', array( $this, 'change_my_products_endpoint_title' ) );
|
39 |
}
|
40 |
}
|
41 |
}
|
42 |
|
43 |
+
/*
|
44 |
+
* Change endpoint title.
|
45 |
+
*
|
46 |
+
* @version 2.5.7
|
47 |
+
* @since 2.5.7
|
48 |
+
* @param string $title
|
49 |
+
* @return string
|
50 |
+
* @see https://github.com/woocommerce/woocommerce/wiki/2.6-Tabbed-My-Account-page
|
51 |
+
*/
|
52 |
+
function change_my_products_endpoint_title( $title ) {
|
53 |
+
global $wp_query;
|
54 |
+
$is_endpoint = isset( $wp_query->query_vars['wcj-my-products'] );
|
55 |
+
if ( $is_endpoint && ! is_admin() && is_main_query() && in_the_loop() && is_account_page() ) {
|
56 |
+
// New page title.
|
57 |
+
$title = __( 'Products', 'woocommerce-jetpack' );
|
58 |
+
remove_filter( 'the_title', array( $this, 'change_my_products_endpoint_title' ) );
|
59 |
+
}
|
60 |
+
return $title;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Custom help to add new items into an array after a selected item.
|
65 |
+
*
|
66 |
+
* @version 2.5.7
|
67 |
+
* @since 2.5.7
|
68 |
+
* @param array $items
|
69 |
+
* @param array $new_items
|
70 |
+
* @param string $after
|
71 |
+
* @return array
|
72 |
+
* @see https://github.com/woocommerce/woocommerce/wiki/2.6-Tabbed-My-Account-page
|
73 |
+
*/
|
74 |
+
function insert_after_helper( $items, $new_items, $after ) {
|
75 |
+
// Search for the item position and +1 since is after the selected item key.
|
76 |
+
$position = array_search( $after, array_keys( $items ) ) + 1;
|
77 |
+
// Insert the new item.
|
78 |
+
$array = array_slice( $items, 0, $position, true );
|
79 |
+
$array += $new_items;
|
80 |
+
$array += array_slice( $items, $position, count( $items ) - $position, true );
|
81 |
+
return $array;
|
82 |
+
}
|
83 |
+
|
84 |
/**
|
85 |
* add_my_products_tab_my_account_page.
|
86 |
*
|
87 |
+
* @version 2.5.7
|
88 |
* @since 2.5.2
|
89 |
* @todo check if any user's products exist
|
90 |
*/
|
91 |
function add_my_products_tab_my_account_page( $items ) {
|
92 |
+
// $items['wcj-my-products'] = __( 'My Products', 'woocommerce-jetpack' );
|
93 |
+
$new_items = array( 'wcj-my-products' => __( 'Products', 'woocommerce-jetpack' ) );
|
94 |
+
return $this->insert_after_helper( $items, $new_items, 'orders' );
|
95 |
}
|
96 |
|
97 |
/**
|
98 |
* add_my_products_content_my_account_page.
|
99 |
*
|
100 |
+
* @version 2.5.7
|
101 |
* @since 2.5.2
|
102 |
*/
|
103 |
function add_my_products_content_my_account_page() {
|
104 |
+
/* if ( ! isset( $_GET['wcj-my-products'] ) ) {
|
105 |
return;
|
106 |
+
} */
|
107 |
$user_ID = get_current_user_id();
|
108 |
if ( 0 == $user_ID ) {
|
109 |
return;
|
151 |
}
|
152 |
wp_reset_postdata();
|
153 |
if ( 0 != count( $products ) ) {
|
154 |
+
// echo '<h2>' . __( 'My Products', 'woocommerce-jetpack' ) . '</h2>';
|
155 |
$table_data = array();
|
156 |
$table_data[] = array( '', __( 'Status', 'woocommerce-jetpack' ), __( 'Title', 'woocommerce-jetpack' ), __( 'Actions', 'woocommerce-jetpack' ) );
|
157 |
$i = 0;
|
includes/class-wcj-product-info.php
CHANGED
@@ -15,13 +15,13 @@ if ( ! class_exists( 'WCJ_Product_Info' ) ) :
|
|
15 |
class WCJ_Product_Info extends WCJ_Module {
|
16 |
|
17 |
/**
|
18 |
-
*
|
19 |
*
|
20 |
* @version 2.4.0
|
21 |
* @since 2.4.0
|
22 |
*/
|
23 |
-
private function
|
24 |
-
$
|
25 |
'%sku%' => '[wcj_product_sku]',
|
26 |
'wcj_sku' => 'wcj_product_sku',
|
27 |
'%title%' => '[wcj_product_title]',
|
@@ -86,8 +86,8 @@ class WCJ_Product_Info extends WCJ_Module {
|
|
86 |
'wcj_available_variations' => 'wcj_product_available_variations',
|
87 |
);
|
88 |
return str_replace(
|
89 |
-
array_keys( $
|
90 |
-
array_values( $
|
91 |
$data
|
92 |
);
|
93 |
}
|
@@ -168,12 +168,12 @@ class WCJ_Product_Info extends WCJ_Module {
|
|
168 |
$the_action_name = current_filter();
|
169 |
if ( array_key_exists( $the_action_name, $this->product_info_on_archive_filters_array ) ) {
|
170 |
$the_product_info = get_option( 'wcj_product_info_on_archive' );
|
171 |
-
$the_product_info = $this->
|
172 |
$this->apply_product_info_short_codes( $the_product_info, false );
|
173 |
}
|
174 |
else if ( array_key_exists( $the_action_name, $this->product_info_on_single_filters_array ) ) {
|
175 |
$the_product_info = get_option( 'wcj_product_info_on_single' );
|
176 |
-
$the_product_info = $this->
|
177 |
$this->apply_product_info_short_codes( $the_product_info, false );
|
178 |
}
|
179 |
}
|
@@ -199,7 +199,7 @@ class WCJ_Product_Info extends WCJ_Module {
|
|
199 |
for ( $i = 1; $i <= apply_filters( 'wcj_get_option_filter', 4, get_option( 'wcj_more_product_info_on_' . $single_or_archive . '_fields_total', 4 ) ); $i++ ) {
|
200 |
$field_id = 'wcj_more_product_info_on_' . $single_or_archive . '_' . $i ;
|
201 |
$the_product_info = get_option( $field_id );
|
202 |
-
$the_product_info = $this->
|
203 |
$this->apply_product_info_short_codes( $the_product_info, true );
|
204 |
}
|
205 |
}
|
15 |
class WCJ_Product_Info extends WCJ_Module {
|
16 |
|
17 |
/**
|
18 |
+
* search_and_replace_deprecated_shortcodes.
|
19 |
*
|
20 |
* @version 2.4.0
|
21 |
* @since 2.4.0
|
22 |
*/
|
23 |
+
private function search_and_replace_deprecated_shortcodes( $data ) {
|
24 |
+
$search_and_replace_deprecated_shortcodes_array = array(
|
25 |
'%sku%' => '[wcj_product_sku]',
|
26 |
'wcj_sku' => 'wcj_product_sku',
|
27 |
'%title%' => '[wcj_product_title]',
|
86 |
'wcj_available_variations' => 'wcj_product_available_variations',
|
87 |
);
|
88 |
return str_replace(
|
89 |
+
array_keys( $search_and_replace_deprecated_shortcodes_array ),
|
90 |
+
array_values( $search_and_replace_deprecated_shortcodes_array ),
|
91 |
$data
|
92 |
);
|
93 |
}
|
168 |
$the_action_name = current_filter();
|
169 |
if ( array_key_exists( $the_action_name, $this->product_info_on_archive_filters_array ) ) {
|
170 |
$the_product_info = get_option( 'wcj_product_info_on_archive' );
|
171 |
+
$the_product_info = $this->search_and_replace_deprecated_shortcodes( $the_product_info );
|
172 |
$this->apply_product_info_short_codes( $the_product_info, false );
|
173 |
}
|
174 |
else if ( array_key_exists( $the_action_name, $this->product_info_on_single_filters_array ) ) {
|
175 |
$the_product_info = get_option( 'wcj_product_info_on_single' );
|
176 |
+
$the_product_info = $this->search_and_replace_deprecated_shortcodes( $the_product_info );
|
177 |
$this->apply_product_info_short_codes( $the_product_info, false );
|
178 |
}
|
179 |
}
|
199 |
for ( $i = 1; $i <= apply_filters( 'wcj_get_option_filter', 4, get_option( 'wcj_more_product_info_on_' . $single_or_archive . '_fields_total', 4 ) ); $i++ ) {
|
200 |
$field_id = 'wcj_more_product_info_on_' . $single_or_archive . '_' . $i ;
|
201 |
$the_product_info = get_option( $field_id );
|
202 |
+
$the_product_info = $this->search_and_replace_deprecated_shortcodes( $the_product_info );
|
203 |
$this->apply_product_info_short_codes( $the_product_info, true );
|
204 |
}
|
205 |
}
|
includes/class-wcj-product-listings.php
CHANGED
@@ -195,10 +195,10 @@ class WCJ_Product_Listings extends WCJ_Module {
|
|
195 |
public function filter_subcategories( $args ) {
|
196 |
if ( is_shop() ) {
|
197 |
$args['exclude'] = get_option( 'wcj_product_listings_exclude_cats_on_shop' );
|
198 |
-
$args['hide_empty'] = ( 'yes' === get_option( 'wcj_product_listings_hide_empty_cats_on_shop' ) ) ? 1 : 0; //
|
199 |
} else {
|
200 |
$args['exclude'] = get_option( 'wcj_product_listings_exclude_cats_on_archives' );
|
201 |
-
$args['hide_empty'] = ( 'yes' === get_option( 'wcj_product_listings_hide_empty_cats_on_archives' ) ) ? 1 : 0; //
|
202 |
}
|
203 |
return $args;
|
204 |
}
|
195 |
public function filter_subcategories( $args ) {
|
196 |
if ( is_shop() ) {
|
197 |
$args['exclude'] = get_option( 'wcj_product_listings_exclude_cats_on_shop' );
|
198 |
+
$args['hide_empty'] = ( 'yes' === get_option( 'wcj_product_listings_hide_empty_cats_on_shop' ) ) ? 1 : 0; // deprecated?
|
199 |
} else {
|
200 |
$args['exclude'] = get_option( 'wcj_product_listings_exclude_cats_on_archives' );
|
201 |
+
$args['hide_empty'] = ( 'yes' === get_option( 'wcj_product_listings_hide_empty_cats_on_archives' ) ) ? 1 : 0; // deprecated?
|
202 |
}
|
203 |
return $args;
|
204 |
}
|
includes/class-wcj-product-tabs.php
CHANGED
@@ -623,7 +623,7 @@ class WCJ_Product_Tabs extends WCJ_Module {
|
|
623 |
),
|
624 |
array(
|
625 |
'title' => '',
|
626 |
-
'desc' => __( 'Comma separated PRODUCT IDs to HIDE this tab', 'woocommerce-jetpack' ) . '. <strong><em>' . __( '
|
627 |
'desc_tip' => __( 'To hide this tab from some products, enter product IDs here.', 'woocommerce-jetpack' ),
|
628 |
'id' => 'wcj_custom_product_tabs_title_global_hide_in_product_ids_' . $i,
|
629 |
'default' => '',
|
@@ -632,7 +632,7 @@ class WCJ_Product_Tabs extends WCJ_Module {
|
|
632 |
),
|
633 |
array(
|
634 |
'title' => '',
|
635 |
-
'desc' => __( 'Comma separated PRODUCT IDs to SHOW this tab', 'woocommerce-jetpack' ) . '. <strong><em>' . __( '
|
636 |
'desc_tip' => __( 'To show this tab only for some products, enter product IDs here.', 'woocommerce-jetpack' ),
|
637 |
'id' => 'wcj_custom_product_tabs_title_global_show_in_product_ids_' . $i,
|
638 |
'default' => '',
|
@@ -641,7 +641,7 @@ class WCJ_Product_Tabs extends WCJ_Module {
|
|
641 |
),
|
642 |
array(
|
643 |
'title' => '',
|
644 |
-
'desc' => __( 'Comma separated CATEGORY IDs to HIDE this tab', 'woocommerce-jetpack' ) . '. <strong><em>' . __( '
|
645 |
'desc_tip' => __( 'To hide this tab from some categories, enter category IDs here.', 'woocommerce-jetpack' ),
|
646 |
'id' => 'wcj_custom_product_tabs_title_global_hide_in_cats_ids_' . $i,
|
647 |
'default' => '',
|
@@ -650,7 +650,7 @@ class WCJ_Product_Tabs extends WCJ_Module {
|
|
650 |
),
|
651 |
array(
|
652 |
'title' => '',
|
653 |
-
'desc' => __( 'Comma separated CATEGORY IDs to SHOW this tab', 'woocommerce-jetpack' ) . '. <strong><em>' . __( '
|
654 |
'desc_tip' => __( 'To show this tab only for some categories, enter category IDs here.', 'woocommerce-jetpack' ),
|
655 |
'id' => 'wcj_custom_product_tabs_title_global_show_in_cats_ids_' . $i,
|
656 |
'default' => '',
|
623 |
),
|
624 |
array(
|
625 |
'title' => '',
|
626 |
+
'desc' => __( 'Comma separated PRODUCT IDs to HIDE this tab', 'woocommerce-jetpack' ) . '. <strong><em>' . __( 'Deprecated', 'woocommerce-jetpack' ) . '!</em></strong>',
|
627 |
'desc_tip' => __( 'To hide this tab from some products, enter product IDs here.', 'woocommerce-jetpack' ),
|
628 |
'id' => 'wcj_custom_product_tabs_title_global_hide_in_product_ids_' . $i,
|
629 |
'default' => '',
|
632 |
),
|
633 |
array(
|
634 |
'title' => '',
|
635 |
+
'desc' => __( 'Comma separated PRODUCT IDs to SHOW this tab', 'woocommerce-jetpack' ) . '. <strong><em>' . __( 'Deprecated', 'woocommerce-jetpack' ) . '!</em></strong>',
|
636 |
'desc_tip' => __( 'To show this tab only for some products, enter product IDs here.', 'woocommerce-jetpack' ),
|
637 |
'id' => 'wcj_custom_product_tabs_title_global_show_in_product_ids_' . $i,
|
638 |
'default' => '',
|
641 |
),
|
642 |
array(
|
643 |
'title' => '',
|
644 |
+
'desc' => __( 'Comma separated CATEGORY IDs to HIDE this tab', 'woocommerce-jetpack' ) . '. <strong><em>' . __( 'Deprecated', 'woocommerce-jetpack' ) . '!</em></strong>',
|
645 |
'desc_tip' => __( 'To hide this tab from some categories, enter category IDs here.', 'woocommerce-jetpack' ),
|
646 |
'id' => 'wcj_custom_product_tabs_title_global_hide_in_cats_ids_' . $i,
|
647 |
'default' => '',
|
650 |
),
|
651 |
array(
|
652 |
'title' => '',
|
653 |
+
'desc' => __( 'Comma separated CATEGORY IDs to SHOW this tab', 'woocommerce-jetpack' ) . '. <strong><em>' . __( 'Deprecated', 'woocommerce-jetpack' ) . '!</em></strong>',
|
654 |
'desc_tip' => __( 'To show this tab only for some categories, enter category IDs here.', 'woocommerce-jetpack' ),
|
655 |
'id' => 'wcj_custom_product_tabs_title_global_show_in_cats_ids_' . $i,
|
656 |
'default' => '',
|
includes/class-wcj-products-xml.php
ADDED
@@ -0,0 +1,312 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* WooCommerce Jetpack Products XML
|
4 |
+
*
|
5 |
+
* The WooCommerce Jetpack Products XML class.
|
6 |
+
*
|
7 |
+
* @version 2.5.7
|
8 |
+
* @since 2.5.7
|
9 |
+
* @author Algoritmika Ltd.
|
10 |
+
* @todo create all files at once (manually and synchronize update); move (maybe) to "PRODUCTS" category;
|
11 |
+
*/
|
12 |
+
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
14 |
+
|
15 |
+
if ( ! class_exists( 'WCJ_Products_XML' ) ) :
|
16 |
+
|
17 |
+
class WCJ_Products_XML extends WCJ_Module {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Constructor.
|
21 |
+
*
|
22 |
+
* @version 2.5.7
|
23 |
+
* @since 2.5.7
|
24 |
+
*/
|
25 |
+
public function __construct() {
|
26 |
+
|
27 |
+
$this->id = 'products_xml';
|
28 |
+
$this->short_desc = __( 'Products XML', 'woocommerce-jetpack' );
|
29 |
+
$this->desc = __( 'WooCommerce products XML feed.', 'woocommerce-jetpack' );
|
30 |
+
$this->link = 'http://booster.io/features/woocommerce-products-xml-feed/';
|
31 |
+
parent::__construct();
|
32 |
+
|
33 |
+
if ( $this->is_enabled() ) {
|
34 |
+
add_action( 'init', array( $this, 'schedule_the_events' ) );
|
35 |
+
add_action( 'admin_init', array( $this, 'schedule_the_events' ) );
|
36 |
+
add_action( 'admin_init', array( $this, 'wcj_create_products_xml' ) );
|
37 |
+
add_filter( 'cron_schedules', array( $this, 'cron_add_custom_intervals' ) );
|
38 |
+
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_products_xml_total_files', 1 ) );
|
39 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
40 |
+
add_action( 'wcj_create_products_xml_hook_' . $i, array( $this, 'create_products_xml_cron' ), PHP_INT_MAX, 2 );
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* On an early action hook, check if the hook is scheduled - if not, schedule it.
|
47 |
+
*
|
48 |
+
* @version 2.5.7
|
49 |
+
* @since 2.5.7
|
50 |
+
*/
|
51 |
+
function schedule_the_events() {
|
52 |
+
$update_intervals = array(
|
53 |
+
'minutely',
|
54 |
+
'hourly',
|
55 |
+
'twicedaily',
|
56 |
+
'daily',
|
57 |
+
'weekly',
|
58 |
+
);
|
59 |
+
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_products_xml_total_files', 1 ) );
|
60 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
61 |
+
$event_hook = 'wcj_create_products_xml_hook_' . $i;
|
62 |
+
if ( 'yes' === get_option( 'wcj_products_xml_enabled_' . $i, 'yes' ) ) {
|
63 |
+
$selected_interval = apply_filters( 'wcj_get_option_filter', 'weekly', get_option( 'wcj_create_products_xml_period_' . $i, 'weekly' ) );
|
64 |
+
foreach ( $update_intervals as $interval ) {
|
65 |
+
$event_timestamp = wp_next_scheduled( $event_hook, array( $interval, $i ) );
|
66 |
+
if ( $selected_interval === $interval ) {
|
67 |
+
update_option( 'wcj_create_products_xml_cron_time_' . $i, $event_timestamp );
|
68 |
+
}
|
69 |
+
if ( ! $event_timestamp && $selected_interval === $interval ) {
|
70 |
+
wp_schedule_event( time(), $selected_interval, $event_hook, array( $selected_interval, $i ) );
|
71 |
+
} elseif ( $event_timestamp && $selected_interval !== $interval ) {
|
72 |
+
wp_unschedule_event( $event_timestamp, $event_hook, array( $interval, $i ) );
|
73 |
+
}
|
74 |
+
}
|
75 |
+
} else { // unschedule all events
|
76 |
+
update_option( 'wcj_create_products_xml_cron_time_' . $i, '' );
|
77 |
+
foreach ( $update_intervals as $interval ) {
|
78 |
+
$event_timestamp = wp_next_scheduled( $event_hook, array( $interval, $i ) );
|
79 |
+
if ( $event_timestamp ) {
|
80 |
+
wp_unschedule_event( $event_timestamp, $event_hook, array( $interval, $i ) );
|
81 |
+
}
|
82 |
+
}
|
83 |
+
}
|
84 |
+
}
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* cron_add_custom_intervals.
|
89 |
+
*
|
90 |
+
* @version 2.5.7
|
91 |
+
* @since 2.5.7
|
92 |
+
*/
|
93 |
+
function cron_add_custom_intervals( $schedules ) {
|
94 |
+
$schedules['weekly'] = array(
|
95 |
+
'interval' => 604800,
|
96 |
+
'display' => __( 'Once Weekly', 'woocommerce-jetpack' )
|
97 |
+
);
|
98 |
+
$schedules['minutely'] = array(
|
99 |
+
'interval' => 60,
|
100 |
+
'display' => __( 'Once a Minute', 'woocommerce-jetpack' )
|
101 |
+
);
|
102 |
+
return $schedules;
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* admin_notice__success.
|
107 |
+
*
|
108 |
+
* @version 2.5.7
|
109 |
+
* @since 2.5.7
|
110 |
+
*/
|
111 |
+
function admin_notice__success() {
|
112 |
+
echo '<div class="notice notice-success is-dismissible"><p>' . __( 'Products XML file created successfully.', 'woocommerce-jetpack' ) . '</p></div>';
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* admin_notice__error.
|
117 |
+
*
|
118 |
+
* @version 2.5.7
|
119 |
+
* @since 2.5.7
|
120 |
+
*/
|
121 |
+
function admin_notice__error() {
|
122 |
+
echo '<div class="notice notice-error"><p>' . __( 'An error has occurred while creating products XML file.', 'woocommerce-jetpack' ) . '</p></div>';
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* wcj_create_products_xml.
|
127 |
+
*
|
128 |
+
* @version 2.5.7
|
129 |
+
* @since 2.5.7
|
130 |
+
*/
|
131 |
+
function wcj_create_products_xml() {
|
132 |
+
if ( isset( $_GET['wcj_create_products_xml'] ) ) {
|
133 |
+
$result = $this->create_products_xml( $_GET['wcj_create_products_xml'] );
|
134 |
+
add_action( 'admin_notices', array( $this, ( ( false !== $result ) ? 'admin_notice__success' : 'admin_notice__error' ) ) );
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* create_products_xml_cron.
|
140 |
+
*
|
141 |
+
* @version 2.5.7
|
142 |
+
* @since 2.5.7
|
143 |
+
*/
|
144 |
+
function create_products_xml_cron( $interval, $file_num ) {
|
145 |
+
$this->create_products_xml( $file_num );
|
146 |
+
die();
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* create_products_xml.
|
151 |
+
*
|
152 |
+
* @version 2.5.7
|
153 |
+
* @since 2.5.7
|
154 |
+
*/
|
155 |
+
function create_products_xml( $file_num ) {
|
156 |
+
$xml_items = '';
|
157 |
+
$xml_header_template = get_option( 'wcj_products_xml_header_' . $file_num, '' );
|
158 |
+
$xml_footer_template = get_option( 'wcj_products_xml_footer_' . $file_num, '' );
|
159 |
+
$xml_item_template = get_option( 'wcj_products_xml_item_' . $file_num, '' );
|
160 |
+
$offset = 0;
|
161 |
+
$block_size = 256;
|
162 |
+
while( true ) {
|
163 |
+
$args = array(
|
164 |
+
'post_type' => 'product',
|
165 |
+
'post_status' => 'publish',
|
166 |
+
'posts_per_page' => $block_size,
|
167 |
+
'orderby' => 'date',
|
168 |
+
'order' => 'DESC',
|
169 |
+
'offset' => $offset,
|
170 |
+
);
|
171 |
+
$loop = new WP_Query( $args );
|
172 |
+
if ( ! $loop->have_posts() ) {
|
173 |
+
break;
|
174 |
+
}
|
175 |
+
while ( $loop->have_posts() ) {
|
176 |
+
$loop->the_post();
|
177 |
+
$xml_items .= str_replace( '&', '&', html_entity_decode( do_shortcode( $xml_item_template ) ) ); // todo
|
178 |
+
}
|
179 |
+
$offset += $block_size;
|
180 |
+
}
|
181 |
+
wp_reset_postdata();
|
182 |
+
return file_put_contents(
|
183 |
+
ABSPATH . get_option( 'wcj_products_xml_file_path_' . $file_num, ( ( 1 == $file_num ) ? 'products.xml' : 'products_' . $file_num . '.xml' ) ),
|
184 |
+
$xml_header_template . $xml_items . $xml_footer_template
|
185 |
+
);
|
186 |
+
}
|
187 |
+
|
188 |
+
/**
|
189 |
+
* get_settings.
|
190 |
+
*
|
191 |
+
* @version 2.5.7
|
192 |
+
* @since 2.5.7
|
193 |
+
*/
|
194 |
+
function get_settings() {
|
195 |
+
$settings = array(
|
196 |
+
array(
|
197 |
+
'title' => __( 'Options', 'woocommerce-jetpack' ),
|
198 |
+
'type' => 'title',
|
199 |
+
'id' => 'wcj_products_xml_options',
|
200 |
+
),
|
201 |
+
array(
|
202 |
+
'title' => __( 'Total Files', 'woocommerce-jetpack' ),
|
203 |
+
'id' => 'wcj_products_xml_total_files',
|
204 |
+
'default' => 1,
|
205 |
+
'type' => 'custom_number',
|
206 |
+
'desc_tip' => __( 'Press Save changes after you change this number.', 'woocommerce-jetpack' ),
|
207 |
+
'desc' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc' ),
|
208 |
+
'custom_attributes' => is_array( apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ) ) ?
|
209 |
+
apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ) : array( 'step' => '1', 'min' => '1', ),
|
210 |
+
),
|
211 |
+
array(
|
212 |
+
'type' => 'sectionend',
|
213 |
+
'id' => 'wcj_products_xml_options',
|
214 |
+
),
|
215 |
+
);
|
216 |
+
$total_number = apply_filters( 'wcj_get_option_filter', 1, get_option( 'wcj_products_xml_total_files', 1 ) );
|
217 |
+
for ( $i = 1; $i <= $total_number; $i++ ) {
|
218 |
+
$products_xml_cron_desc = '';
|
219 |
+
if ( $this->is_enabled() ) {
|
220 |
+
if ( '' != get_option( 'wcj_create_products_xml_cron_time_' . $i, '' ) ) {
|
221 |
+
$scheduled_time_diff = get_option( 'wcj_create_products_xml_cron_time_' . $i, '' ) - time();
|
222 |
+
if ( $scheduled_time_diff > 0 ) {
|
223 |
+
$products_xml_cron_desc = '<em>' . sprintf( __( '%s seconds till next update.', 'woocommerce-jetpack' ), $scheduled_time_diff ) . '</em>';
|
224 |
+
}
|
225 |
+
}
|
226 |
+
$products_xml_cron_desc .= '<br><a href="' . add_query_arg( 'wcj_create_products_xml', $i ) . '">' . __( 'Create Now', 'woocommerce-jetpack' ) . '</a>';
|
227 |
+
}
|
228 |
+
$default_file_name = ( ( 1 == $i ) ? 'products.xml' : 'products_' . $i . '.xml' );
|
229 |
+
$settings = array_merge( $settings, array(
|
230 |
+
array(
|
231 |
+
'title' => __( 'XML File', 'woocommerce-jetpack' ) . ' #' . $i,
|
232 |
+
'type' => 'title',
|
233 |
+
'id' => 'wcj_products_xml_options_' . $i,
|
234 |
+
),
|
235 |
+
array(
|
236 |
+
'title' => __( 'Enabled', 'woocommerce-jetpack' ),
|
237 |
+
'desc' => __( 'Enable', 'woocommerce-jetpack' ),
|
238 |
+
'id' => 'wcj_products_xml_enabled_' . $i,
|
239 |
+
'default' => 'yes',
|
240 |
+
'type' => 'checkbox',
|
241 |
+
),
|
242 |
+
array(
|
243 |
+
'title' => __( 'XML Header', 'woocommerce-jetpack' ),
|
244 |
+
'id' => 'wcj_products_xml_header_' . $i,
|
245 |
+
'default' => '<?xml version = "1.0" encoding = "utf-8" ?>' . PHP_EOL . '<root>' . PHP_EOL,
|
246 |
+
'type' => 'custom_textarea',
|
247 |
+
'css' => 'width:66%;min-width:300px;min-height:150px;',
|
248 |
+
),
|
249 |
+
array(
|
250 |
+
'title' => __( 'XML Item', 'woocommerce-jetpack' ),
|
251 |
+
'desc' => sprintf(
|
252 |
+
__( 'You can use shortcodes here. Please take a look at <a target="_blank" href="%s">Booster\'s products shortcodes</a>.', 'woocommerce-jetpack' ),
|
253 |
+
'http://booster.io/category/shortcodes/products-shortcodes/'
|
254 |
+
),
|
255 |
+
'id' => 'wcj_products_xml_item_' . $i,
|
256 |
+
'default' =>
|
257 |
+
'<item>' . PHP_EOL .
|
258 |
+
"\t" . '<name>[wcj_product_title]</name>' . PHP_EOL .
|
259 |
+
"\t" . '<link>[wcj_product_url]</link>' . PHP_EOL .
|
260 |
+
"\t" . '<price>[wcj_product_price hide_currency="yes"]</price>' . PHP_EOL .
|
261 |
+
"\t" . '<image>[wcj_product_image_url image_size="full"]</image>' . PHP_EOL .
|
262 |
+
"\t" . '<category_full>[wcj_product_categories_names]</category_full>' . PHP_EOL .
|
263 |
+
"\t" . '<category_link>[wcj_product_categories_urls]</category_link>' . PHP_EOL .
|
264 |
+
'</item>' . PHP_EOL,
|
265 |
+
'type' => 'custom_textarea',
|
266 |
+
'css' => 'width:66%;min-width:300px;min-height:300px;',
|
267 |
+
),
|
268 |
+
array(
|
269 |
+
'title' => __( 'XML Footer', 'woocommerce-jetpack' ),
|
270 |
+
'id' => 'wcj_products_xml_footer_' . $i,
|
271 |
+
'default' => '</root>',
|
272 |
+
'type' => 'custom_textarea',
|
273 |
+
'css' => 'width:66%;min-width:300px;min-height:150px;',
|
274 |
+
),
|
275 |
+
array(
|
276 |
+
'title' => __( 'XML File Path and Name', 'woocommerce-jetpack' ),
|
277 |
+
'desc_tip' => __( 'Path on server:', 'woocommerce-jetpack' ) . ' ' . ABSPATH . get_option( 'wcj_products_xml_file_path_' . $i, $default_file_name ),
|
278 |
+
'desc' => __( 'URL:', 'woocommerce-jetpack' ) . ' ' . '<a target="_blank" href="' . site_url() . '/' . get_option( 'wcj_products_xml_file_path_' . $i, $default_file_name ) . '">' . site_url() . '/' . get_option( 'wcj_products_xml_file_path_' . $i, $default_file_name ) . '</a>', // todo
|
279 |
+
'id' => 'wcj_products_xml_file_path_' . $i,
|
280 |
+
'default' => $default_file_name,
|
281 |
+
'type' => 'text',
|
282 |
+
'css' => 'width:66%;min-width:300px;',
|
283 |
+
),
|
284 |
+
array(
|
285 |
+
'title' => __( 'Update Period', 'woocommerce-jetpack' ),
|
286 |
+
'desc' => $products_xml_cron_desc,
|
287 |
+
'id' => 'wcj_create_products_xml_period_' . $i,
|
288 |
+
'default' => 'weekly',
|
289 |
+
'type' => 'select',
|
290 |
+
'options' => array(
|
291 |
+
'minutely' => __( 'Update Every Minute', 'woocommerce-jetpack' ),
|
292 |
+
'hourly' => __( 'Update Hourly', 'woocommerce-jetpack' ),
|
293 |
+
'twicedaily' => __( 'Update Twice Daily', 'woocommerce-jetpack' ),
|
294 |
+
'daily' => __( 'Update Daily', 'woocommerce-jetpack' ),
|
295 |
+
'weekly' => __( 'Update Weekly', 'woocommerce-jetpack' ),
|
296 |
+
),
|
297 |
+
'desc_tip' => __( 'Possible update periods are: every minute, hourly, twice daily, daily and weekly.', 'woocommerce-jetpack' ) . ' ' . apply_filters( 'get_wc_jetpack_plus_message', '', 'desc_no_link' ),
|
298 |
+
'custom_attributes' => apply_filters( 'get_wc_jetpack_plus_message', '', 'disabled' ),
|
299 |
+
),
|
300 |
+
array(
|
301 |
+
'type' => 'sectionend',
|
302 |
+
'id' => 'wcj_products_xml_options_' . $i,
|
303 |
+
),
|
304 |
+
) );
|
305 |
+
}
|
306 |
+
return $this->add_standard_settings( $settings );
|
307 |
+
}
|
308 |
+
}
|
309 |
+
|
310 |
+
endif;
|
311 |
+
|
312 |
+
return new WCJ_Products_XML();
|
includes/class-wcj-purchase-data.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Purchase Data class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -18,7 +18,7 @@ class WCJ_Purchase_Data extends WCJ_Module {
|
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
-
* @version 2.
|
22 |
*/
|
23 |
function __construct() {
|
24 |
|
@@ -34,7 +34,7 @@ class WCJ_Purchase_Data extends WCJ_Module {
|
|
34 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
35 |
|
36 |
if ( 'yes' === get_option( 'wcj_purchase_data_custom_columns_profit', 'no' ) ) {
|
37 |
-
add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_columns' ),
|
38 |
add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), PHP_INT_MAX );
|
39 |
}
|
40 |
}
|
4 |
*
|
5 |
* The WooCommerce Jetpack Purchase Data class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
+
* @version 2.5.7
|
22 |
*/
|
23 |
function __construct() {
|
24 |
|
34 |
add_action( 'save_post_product', array( $this, 'save_meta_box' ), PHP_INT_MAX, 2 );
|
35 |
|
36 |
if ( 'yes' === get_option( 'wcj_purchase_data_custom_columns_profit', 'no' ) ) {
|
37 |
+
add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_columns' ), PHP_INT_MAX - 2 );
|
38 |
add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), PHP_INT_MAX );
|
39 |
}
|
40 |
}
|
includes/class-wcj-reports.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Reports class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -308,16 +308,22 @@ class WCJ_Reports extends WCJ_Module {
|
|
308 |
/*
|
309 |
* Add the settings.
|
310 |
*
|
311 |
-
* @version 2.
|
312 |
*/
|
313 |
function get_settings() {
|
314 |
-
$
|
315 |
array(
|
316 |
'title' => __( 'Product Sales', 'woocommerce-jetpack' ),
|
317 |
'tab' => 'orders',
|
318 |
'tab_title' => 'Orders',
|
319 |
'report' => 'booster_products_sales',
|
320 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
321 |
array(
|
322 |
'title' => __( 'Monthly Sales (with currency conversions)', 'woocommerce-jetpack' ),
|
323 |
'tab' => 'orders',
|
@@ -362,21 +368,24 @@ class WCJ_Reports extends WCJ_Module {
|
|
362 |
'id' => 'wcj_reports_more_options'
|
363 |
),
|
364 |
);
|
365 |
-
|
366 |
-
$
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
//
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
|
|
|
|
|
|
380 |
}
|
381 |
$settings = array_merge( $settings, array(
|
382 |
array(
|
4 |
*
|
5 |
* The WooCommerce Jetpack Reports class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
308 |
/*
|
309 |
* Add the settings.
|
310 |
*
|
311 |
+
* @version 2.5.7
|
312 |
*/
|
313 |
function get_settings() {
|
314 |
+
$reports_and_settings = array(
|
315 |
array(
|
316 |
'title' => __( 'Product Sales', 'woocommerce-jetpack' ),
|
317 |
'tab' => 'orders',
|
318 |
'tab_title' => 'Orders',
|
319 |
'report' => 'booster_products_sales',
|
320 |
),
|
321 |
+
array(
|
322 |
+
'id' => 'wcj_reports_products_sales_count_variations',
|
323 |
+
'desc' => __( 'Count variations in product sales report', 'woocommerce-jetpack' ),
|
324 |
+
'type' => 'checkbox',
|
325 |
+
'default' => 'no',
|
326 |
+
),
|
327 |
array(
|
328 |
'title' => __( 'Monthly Sales (with currency conversions)', 'woocommerce-jetpack' ),
|
329 |
'tab' => 'orders',
|
368 |
'id' => 'wcj_reports_more_options'
|
369 |
),
|
370 |
);
|
371 |
+
$button_style = "background: orange; border-color: orange; box-shadow: 0 1px 0 orange; text-shadow: 0 -1px 1px orange,1px 0 1px orange,0 1px 1px orange,-1px 0 1px orange;";
|
372 |
+
foreach ( $reports_and_settings as $report ) {
|
373 |
+
if ( isset( $report['report'] ) ) {
|
374 |
+
$settings = array_merge( $settings, array(
|
375 |
+
array(
|
376 |
+
// 'title' => 'WooCommerce > Reports > ' . $report['tab_title'] . ' > ' . $report['title'],
|
377 |
+
'title' => '[' . $report['tab_title'] . '] ' . $report['title'],
|
378 |
+
'id' => 'wcj_' . $report['report'] . '_link',
|
379 |
+
'type' => 'custom_link',
|
380 |
+
'link' => '<a class="button-primary" '
|
381 |
+
. 'style="' . $button_style . '" '
|
382 |
+
. 'href="' . get_admin_url() . 'admin.php?page=wc-reports&tab=' . $report['tab'] . '&report=' . $report['report'] . '">'
|
383 |
+
. __( 'View report', 'woocommerce-jetpack' ) . '</a>',
|
384 |
+
),
|
385 |
+
) );
|
386 |
+
} else {
|
387 |
+
$settings = array_merge( $settings, array ( $report ) );
|
388 |
+
}
|
389 |
}
|
390 |
$settings = array_merge( $settings, array(
|
391 |
array(
|
includes/class-wcj-shipping-calculator.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Shipping Calculator class.
|
6 |
*
|
7 |
-
* @version 2.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,7 +17,7 @@ class WCJ_Shipping_Calculator extends WCJ_Module {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
@@ -32,9 +32,29 @@ class WCJ_Shipping_Calculator extends WCJ_Module {
|
|
32 |
add_filter( 'woocommerce_shipping_calculator_enable_postcode', array( $this, 'enable_postcode' ) );
|
33 |
add_action( 'wp_head', array( $this, 'add_custom_styles' ) );
|
34 |
// add_filter( 'gettext', array( $this, 'change_labels' ), 20, 3 );
|
|
|
|
|
|
|
35 |
}
|
36 |
}
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
/**
|
39 |
* change_labels.
|
40 |
*/
|
@@ -100,12 +120,10 @@ class WCJ_Shipping_Calculator extends WCJ_Module {
|
|
100 |
/**
|
101 |
* get_settings.
|
102 |
*
|
103 |
-
* @version 2.
|
104 |
*/
|
105 |
function get_settings() {
|
106 |
-
|
107 |
$settings = array(
|
108 |
-
|
109 |
array(
|
110 |
'title' => __( 'Shipping Calculator Options', 'woocommerce-jetpack' ),
|
111 |
'type' => 'title',
|
@@ -151,21 +169,43 @@ class WCJ_Shipping_Calculator extends WCJ_Module {
|
|
151 |
'noclick' => __( 'Make non clickable', 'woocommerce-jetpack' ),
|
152 |
),
|
153 |
),
|
154 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
'title' => __( 'Label for Calculate Shipping', 'woocommerce-jetpack' ),
|
156 |
'id' => 'wcj_shipping_calculator_label_calculate_shipping',
|
157 |
-
'default' => '',
|
158 |
'type' => 'text',
|
|
|
|
|
159 |
),
|
160 |
array(
|
161 |
'title' => __( 'Label for Update Totals', 'woocommerce-jetpack' ),
|
162 |
'id' => 'wcj_shipping_calculator_label_update_totals',
|
163 |
-
'default' => '',
|
164 |
'type' => 'text',
|
165 |
-
|
|
|
|
|
166 |
array(
|
167 |
'type' => 'sectionend',
|
168 |
-
'id' => '
|
169 |
),
|
170 |
);
|
171 |
return $this->add_standard_settings( $settings );
|
4 |
*
|
5 |
* The WooCommerce Jetpack Shipping Calculator class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
32 |
add_filter( 'woocommerce_shipping_calculator_enable_postcode', array( $this, 'enable_postcode' ) );
|
33 |
add_action( 'wp_head', array( $this, 'add_custom_styles' ) );
|
34 |
// add_filter( 'gettext', array( $this, 'change_labels' ), 20, 3 );
|
35 |
+
if ( 'yes' === apply_filters( 'wcj_get_option_filter', 'no', get_option( 'wcj_shipping_calculator_labels_enabled', 'no' ) ) ) {
|
36 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'change_labels' ) );
|
37 |
+
}
|
38 |
}
|
39 |
}
|
40 |
|
41 |
+
/**
|
42 |
+
* change_labels.
|
43 |
+
*
|
44 |
+
* @version 2.5.7
|
45 |
+
* @since 2.5.7
|
46 |
+
*/
|
47 |
+
function change_labels() {
|
48 |
+
if ( function_exists( 'is_cart' ) && is_cart() ) {
|
49 |
+
wp_enqueue_style( 'wcj-shipping-calculator', wcj_plugin_url() . '/includes/css/wcj-shipping-calculator.css', array(), WCJ()->version );
|
50 |
+
wp_enqueue_script( 'wcj-shipping-calculator-js', wcj_plugin_url() . '/includes/js/wcj-shipping-calculator.js', array( 'jquery' ), WCJ()->version, true );
|
51 |
+
wp_localize_script( 'wcj-shipping-calculator-js', 'alg_object', array(
|
52 |
+
'calculate_shipping_label' => get_option( 'wcj_shipping_calculator_label_calculate_shipping', '' ),
|
53 |
+
'update_totals_label' => get_option( 'wcj_shipping_calculator_label_update_totals', '' ),
|
54 |
+
) );
|
55 |
+
}
|
56 |
+
}
|
57 |
+
|
58 |
/**
|
59 |
* change_labels.
|
60 |
*/
|
120 |
/**
|
121 |
* get_settings.
|
122 |
*
|
123 |
+
* @version 2.5.7
|
124 |
*/
|
125 |
function get_settings() {
|
|
|
126 |
$settings = array(
|
|
|
127 |
array(
|
128 |
'title' => __( 'Shipping Calculator Options', 'woocommerce-jetpack' ),
|
129 |
'type' => 'title',
|
169 |
'noclick' => __( 'Make non clickable', 'woocommerce-jetpack' ),
|
170 |
),
|
171 |
),
|
172 |
+
array(
|
173 |
+
'type' => 'sectionend',
|
174 |
+
'id' => 'wcj_shipping_calculator_options',
|
175 |
+
),
|
176 |
+
array(
|
177 |
+
'title' => __( 'Labels Options', 'woocommerce-jetpack' ),
|
178 |
+
'type' => 'title',
|
179 |
+
'id' => 'wcj_shipping_calculator_labels_options',
|
180 |
+
),
|
181 |
+
array(
|
182 |
+
'title' => __( 'Labels', 'woocommerce-jetpack' ),
|
183 |
+
'desc' => __( 'Enable Section', 'woocommerce-jetpack' ),
|
184 |
+
'id' => 'wcj_shipping_calculator_labels_enabled',
|
185 |
+
'default' => 'no',
|
186 |
+
'type' => 'checkbox',
|
187 |
+
'desc_tip' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc' ),
|
188 |
+
'custom_attributes' => apply_filters( 'get_wc_jetpack_plus_message', '', 'disabled' ),
|
189 |
+
),
|
190 |
+
array(
|
191 |
'title' => __( 'Label for Calculate Shipping', 'woocommerce-jetpack' ),
|
192 |
'id' => 'wcj_shipping_calculator_label_calculate_shipping',
|
193 |
+
'default' => __( 'Calculate Shipping', 'woocommerce-jetpack' ),
|
194 |
'type' => 'text',
|
195 |
+
'desc_tip' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc_no_link' ),
|
196 |
+
'custom_attributes' => apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ),
|
197 |
),
|
198 |
array(
|
199 |
'title' => __( 'Label for Update Totals', 'woocommerce-jetpack' ),
|
200 |
'id' => 'wcj_shipping_calculator_label_update_totals',
|
201 |
+
'default' => __( 'Update Totals', 'woocommerce-jetpack' ),
|
202 |
'type' => 'text',
|
203 |
+
'desc_tip' => apply_filters( 'get_wc_jetpack_plus_message', '', 'desc_no_link' ),
|
204 |
+
'custom_attributes' => apply_filters( 'get_wc_jetpack_plus_message', '', 'readonly' ),
|
205 |
+
),
|
206 |
array(
|
207 |
'type' => 'sectionend',
|
208 |
+
'id' => 'wcj_shipping_calculator_labels_options',
|
209 |
),
|
210 |
);
|
211 |
return $this->add_standard_settings( $settings );
|
includes/class-wcj-wholesale-price.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Wholesale Price class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
* @todo per variation;
|
@@ -51,7 +51,7 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
51 |
/**
|
52 |
* add_discount_info_to_cart_page.
|
53 |
*
|
54 |
-
* @version 2.5.
|
55 |
*/
|
56 |
function add_discount_info_to_cart_page( $price_html, $cart_item, $cart_item_key ) {
|
57 |
|
@@ -59,12 +59,16 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
59 |
$the_quantity = ( 'yes' === get_option( 'wcj_wholesale_price_use_total_cart_quantity', 'no' ) )
|
60 |
? WC()->cart->cart_contents_count
|
61 |
: $cart_item['quantity'];
|
62 |
-
$discount
|
63 |
if ( 0 != $discount ) {
|
64 |
$discount_type = ( wcj_is_product_wholesale_enabled_per_product( $cart_item['product_id'] ) )
|
65 |
? get_post_meta( $cart_item['product_id'], '_' . 'wcj_wholesale_price_discount_type', true )
|
66 |
: get_option( 'wcj_wholesale_price_discount_type', 'percent' );
|
67 |
-
if ( '
|
|
|
|
|
|
|
|
|
68 |
$discount = wc_price( $discount );
|
69 |
} else {
|
70 |
$discount = $discount . '%';
|
@@ -72,7 +76,7 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
72 |
$old_price_html = wc_price( $cart_item['wcj_wholesale_price_old'] );
|
73 |
$wholesale_price_html = get_option( 'wcj_wholesale_price_show_info_on_cart_format' );
|
74 |
$wholesale_price_html = str_replace(
|
75 |
-
array( '%old_price%', '%price%', '%discount_value%', '%discount_percent%' ), // '%discount_percent%' is
|
76 |
array( $old_price_html, $price_html, $discount, $discount ),
|
77 |
$wholesale_price_html
|
78 |
);
|
@@ -130,16 +134,17 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
130 |
/**
|
131 |
* get_wholesale_price.
|
132 |
*
|
133 |
-
* @version 2.5.
|
134 |
*/
|
135 |
private function get_wholesale_price( $price, $quantity, $product_id ) {
|
136 |
$discount = $this->get_discount_by_quantity( $quantity, $product_id );
|
137 |
$discount_type = ( wcj_is_product_wholesale_enabled_per_product( $product_id ) )
|
138 |
? get_post_meta( $product_id, '_' . 'wcj_wholesale_price_discount_type', true )
|
139 |
: get_option( 'wcj_wholesale_price_discount_type', 'percent' );
|
140 |
-
if ( '
|
141 |
-
|
142 |
-
|
|
|
143 |
} else {
|
144 |
$discounted_price = $price - $discount;
|
145 |
return ( $discounted_price >= 0 ) ? $discounted_price : 0;
|
@@ -235,11 +240,20 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
235 |
/**
|
236 |
* get_meta_box_options.
|
237 |
*
|
238 |
-
* @version 2.5.
|
239 |
* @since 2.5.0
|
240 |
*/
|
241 |
function get_meta_box_options() {
|
242 |
$product_id = get_the_ID();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
$options = array(
|
244 |
array(
|
245 |
'name' => 'wcj_wholesale_price_per_product_enabled',
|
@@ -255,11 +269,9 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
255 |
'name' => 'wcj_wholesale_price_discount_type',
|
256 |
'default' => 'percent',
|
257 |
'type' => 'select',
|
258 |
-
'options' =>
|
259 |
-
'percent' => __( 'Percent', 'woocommerce-jetpack' ),
|
260 |
-
'fixed' => __( 'Fixed', 'woocommerce-jetpack' ),
|
261 |
-
),
|
262 |
'title' => __( 'Discount Type', 'woocommerce-jetpack' ),
|
|
|
263 |
),
|
264 |
array(
|
265 |
'name' => 'wcj_wholesale_price_levels_number',
|
@@ -287,7 +299,7 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
287 |
'name' => 'wcj_wholesale_price_level_discount_' . $i,
|
288 |
'default' => 0,
|
289 |
'type' => 'price',
|
290 |
-
'title' => __( 'Level', 'woocommerce-jetpack' ) . ' #' . $i . ' ' . __( 'Discount', 'woocommerce-jetpack' ),
|
291 |
),
|
292 |
) );
|
293 |
}
|
@@ -355,7 +367,7 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
355 |
/**
|
356 |
* add_settings.
|
357 |
*
|
358 |
-
* @version 2.5.
|
359 |
* @since 2.5.5
|
360 |
*/
|
361 |
function add_settings() {
|
@@ -466,7 +478,7 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
466 |
'id' => 'wcj_wholesale_price_level_discount_percent_' . $i, // mislabeled - should be 'wcj_wholesale_price_level_discount_'
|
467 |
'default' => 0,
|
468 |
'type' => 'number',
|
469 |
-
'custom_attributes' => array('step' => '0.0001', 'min' => '0', ),
|
470 |
);
|
471 |
}
|
472 |
$settings[] = array(
|
@@ -522,7 +534,7 @@ class WCJ_Wholesale_Price extends WCJ_Module {
|
|
522 |
'id' => 'wcj_wholesale_price_level_discount_percent_' . $user_role_key . '_' . $i, // mislabeled - should be 'wcj_wholesale_price_level_discount_'
|
523 |
'default' => 0,
|
524 |
'type' => 'number',
|
525 |
-
'custom_attributes' => array('step' => '0.0001', 'min' => '0', ),
|
526 |
),
|
527 |
) );
|
528 |
}
|
4 |
*
|
5 |
* The WooCommerce Jetpack Wholesale Price class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
* @todo per variation;
|
51 |
/**
|
52 |
* add_discount_info_to_cart_page.
|
53 |
*
|
54 |
+
* @version 2.5.7
|
55 |
*/
|
56 |
function add_discount_info_to_cart_page( $price_html, $cart_item, $cart_item_key ) {
|
57 |
|
59 |
$the_quantity = ( 'yes' === get_option( 'wcj_wholesale_price_use_total_cart_quantity', 'no' ) )
|
60 |
? WC()->cart->cart_contents_count
|
61 |
: $cart_item['quantity'];
|
62 |
+
$discount = $this->get_discount_by_quantity( $the_quantity, $cart_item['product_id'] );
|
63 |
if ( 0 != $discount ) {
|
64 |
$discount_type = ( wcj_is_product_wholesale_enabled_per_product( $cart_item['product_id'] ) )
|
65 |
? get_post_meta( $cart_item['product_id'], '_' . 'wcj_wholesale_price_discount_type', true )
|
66 |
: get_option( 'wcj_wholesale_price_discount_type', 'percent' );
|
67 |
+
if ( 'price_directly' === $discount_type ) {
|
68 |
+
$_product = wc_get_product( $cart_item['product_id'] );
|
69 |
+
$discount = wc_price( $_product->get_price() - $discount );
|
70 |
+
}
|
71 |
+
elseif ( 'fixed' === $discount_type ) {
|
72 |
$discount = wc_price( $discount );
|
73 |
} else {
|
74 |
$discount = $discount . '%';
|
76 |
$old_price_html = wc_price( $cart_item['wcj_wholesale_price_old'] );
|
77 |
$wholesale_price_html = get_option( 'wcj_wholesale_price_show_info_on_cart_format' );
|
78 |
$wholesale_price_html = str_replace(
|
79 |
+
array( '%old_price%', '%price%', '%discount_value%', '%discount_percent%' ), // '%discount_percent%' is deprecated
|
80 |
array( $old_price_html, $price_html, $discount, $discount ),
|
81 |
$wholesale_price_html
|
82 |
);
|
134 |
/**
|
135 |
* get_wholesale_price.
|
136 |
*
|
137 |
+
* @version 2.5.7
|
138 |
*/
|
139 |
private function get_wholesale_price( $price, $quantity, $product_id ) {
|
140 |
$discount = $this->get_discount_by_quantity( $quantity, $product_id );
|
141 |
$discount_type = ( wcj_is_product_wholesale_enabled_per_product( $product_id ) )
|
142 |
? get_post_meta( $product_id, '_' . 'wcj_wholesale_price_discount_type', true )
|
143 |
: get_option( 'wcj_wholesale_price_discount_type', 'percent' );
|
144 |
+
if ( 'price_directly' === $discount_type ) {
|
145 |
+
return ( 0 != $discount ) ? apply_filters( 'wcj_get_wholesale_price', $discount, $product_id ) : $price;
|
146 |
+
} elseif ( 'percent' === $discount_type ) {
|
147 |
+
return $price * ( 1.0 - ( $discount / 100.0 ) );
|
148 |
} else {
|
149 |
$discounted_price = $price - $discount;
|
150 |
return ( $discounted_price >= 0 ) ? $discounted_price : 0;
|
240 |
/**
|
241 |
* get_meta_box_options.
|
242 |
*
|
243 |
+
* @version 2.5.7
|
244 |
* @since 2.5.0
|
245 |
*/
|
246 |
function get_meta_box_options() {
|
247 |
$product_id = get_the_ID();
|
248 |
+
$_product = wc_get_product( $product_id );
|
249 |
+
$discount_type_options = array(
|
250 |
+
'percent' => __( 'Percent', 'woocommerce-jetpack' ),
|
251 |
+
'fixed' => __( 'Fixed', 'woocommerce-jetpack' ),
|
252 |
+
'price_directly' => __( 'Price directly', 'woocommerce-jetpack' ),
|
253 |
+
);
|
254 |
+
if ( $_product->is_type( 'variable' ) ) {
|
255 |
+
unset( $discount_type_options['price_directly'] );
|
256 |
+
}
|
257 |
$options = array(
|
258 |
array(
|
259 |
'name' => 'wcj_wholesale_price_per_product_enabled',
|
269 |
'name' => 'wcj_wholesale_price_discount_type',
|
270 |
'default' => 'percent',
|
271 |
'type' => 'select',
|
272 |
+
'options' => $discount_type_options,
|
|
|
|
|
|
|
273 |
'title' => __( 'Discount Type', 'woocommerce-jetpack' ),
|
274 |
+
// 'tooltip' => __( '\'Price directly\' option is only available for simple (i.e. non variable) product type.', 'woocommerce-jetpack' ),
|
275 |
),
|
276 |
array(
|
277 |
'name' => 'wcj_wholesale_price_levels_number',
|
299 |
'name' => 'wcj_wholesale_price_level_discount_' . $i,
|
300 |
'default' => 0,
|
301 |
'type' => 'price',
|
302 |
+
'title' => __( 'Level', 'woocommerce-jetpack' ) . ' #' . $i . ' ' . ( 'price_directly' === get_post_meta( $product_id, '_' . 'wcj_wholesale_price_discount_type', true ) ? __( 'Price', 'woocommerce-jetpack' ) : __( 'Discount', 'woocommerce-jetpack' ) ),
|
303 |
),
|
304 |
) );
|
305 |
}
|
367 |
/**
|
368 |
* add_settings.
|
369 |
*
|
370 |
+
* @version 2.5.7
|
371 |
* @since 2.5.5
|
372 |
*/
|
373 |
function add_settings() {
|
478 |
'id' => 'wcj_wholesale_price_level_discount_percent_' . $i, // mislabeled - should be 'wcj_wholesale_price_level_discount_'
|
479 |
'default' => 0,
|
480 |
'type' => 'number',
|
481 |
+
'custom_attributes' => array('step' => '0.0001', /* 'min' => '0', */ ),
|
482 |
);
|
483 |
}
|
484 |
$settings[] = array(
|
534 |
'id' => 'wcj_wholesale_price_level_discount_percent_' . $user_role_key . '_' . $i, // mislabeled - should be 'wcj_wholesale_price_level_discount_'
|
535 |
'default' => 0,
|
536 |
'type' => 'number',
|
537 |
+
'custom_attributes' => array('step' => '0.0001', /* 'min' => '0', */ ),
|
538 |
),
|
539 |
) );
|
540 |
}
|
includes/classes/class-wcj-module.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Module class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -190,7 +190,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
190 |
/**
|
191 |
* create_meta_box.
|
192 |
*
|
193 |
-
* @since 2.5.
|
194 |
*/
|
195 |
function create_meta_box() {
|
196 |
$current_post_id = get_the_ID();
|
@@ -240,7 +240,7 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
240 |
}
|
241 |
switch ( $option['type'] ) {
|
242 |
case 'price':
|
243 |
-
$field_html = '<input class="short wc_input_price" type="number" step="0.0001"' . $input_ending;
|
244 |
break;
|
245 |
case 'date':
|
246 |
$field_html = '<input class="input-text" display="date" type="text"' . $input_ending;
|
@@ -427,9 +427,9 @@ if ( ! class_exists( 'WCJ_Module' ) ) :
|
|
427 |
$tool_desc = $tool_data['desc'];
|
428 |
$additional_style_html = '';
|
429 |
$additional_info_html = '';
|
430 |
-
if ( isset( $tool_data['
|
431 |
$additional_style_html = 'color:gray;font-style:italic;';
|
432 |
-
$additional_info_html = ' - ' . __( '
|
433 |
}
|
434 |
echo '<tr>';
|
435 |
echo '<td style="' . $additional_style_html . '">' . $tool_title . $additional_info_html . '</td>';
|
4 |
*
|
5 |
* The WooCommerce Jetpack Module class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.2.0
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
190 |
/**
|
191 |
* create_meta_box.
|
192 |
*
|
193 |
+
* @since 2.5.7
|
194 |
*/
|
195 |
function create_meta_box() {
|
196 |
$current_post_id = get_the_ID();
|
240 |
}
|
241 |
switch ( $option['type'] ) {
|
242 |
case 'price':
|
243 |
+
$field_html = '<input class="short wc_input_price" type="number" step="' . apply_filters( 'wcj_get_meta_box_options_type_price_step', '0.0001' ) . '"' . $input_ending;
|
244 |
break;
|
245 |
case 'date':
|
246 |
$field_html = '<input class="input-text" display="date" type="text"' . $input_ending;
|
427 |
$tool_desc = $tool_data['desc'];
|
428 |
$additional_style_html = '';
|
429 |
$additional_info_html = '';
|
430 |
+
if ( isset( $tool_data['deprecated'] ) && true === $tool_data['deprecated'] ) {
|
431 |
$additional_style_html = 'color:gray;font-style:italic;';
|
432 |
+
$additional_info_html = ' - ' . __( 'Deprecated', 'woocommerce-jetpack' );
|
433 |
}
|
434 |
echo '<tr>';
|
435 |
echo '<td style="' . $additional_style_html . '">' . $tool_title . $additional_info_html . '</td>';
|
includes/css/wcj-shipping-calculator.css
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* wcj-shipping-calculator.
|
3 |
+
*
|
4 |
+
* @version 2.5.7
|
5 |
+
* @since 2.5.7
|
6 |
+
*/
|
7 |
+
|
8 |
+
a.shipping-calculator-button { visibility: hidden; }
|
9 |
+
button[name=calc_shipping] { visibility: hidden; }
|
includes/functions/wcj-functions.php
CHANGED
@@ -4,10 +4,42 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Functions.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
if ( ! function_exists( 'wcj_get_currency_exchange_rate_product_base_currency' ) ) {
|
12 |
/**
|
13 |
* wcj_get_currency_exchange_rate_product_base_currency.
|
@@ -842,26 +874,52 @@ if ( ! function_exists( 'wcj_is_user_role' ) ) {
|
|
842 |
}
|
843 |
}
|
844 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
845 |
/**
|
846 |
* validate_VAT.
|
847 |
*
|
848 |
-
* @
|
|
|
849 |
*/
|
850 |
if ( ! function_exists( 'validate_VAT' ) ) {
|
851 |
function validate_VAT( $country_code, $vat_number ) {
|
852 |
try {
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
|
|
865 |
} catch( Exception $exception ) {
|
866 |
return null;
|
867 |
}
|
4 |
*
|
5 |
* The WooCommerce Jetpack Functions.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
11 |
+
if ( ! function_exists( 'wcj_get_product_image_url' ) ) {
|
12 |
+
/**
|
13 |
+
* wcj_get_product_image_url.
|
14 |
+
*
|
15 |
+
* @version 2.5.7
|
16 |
+
* @since 2.5.7
|
17 |
+
* @todo placeholder
|
18 |
+
*/
|
19 |
+
function wcj_get_product_image_url( $product_id, $image_size = 'shop_thumbnail' ) {
|
20 |
+
if ( has_post_thumbnail( $product_id ) ) {
|
21 |
+
$image_url = get_the_post_thumbnail_url( $product_id, $image_size );
|
22 |
+
} elseif ( ( $parent_id = wp_get_post_parent_id( $product_id ) ) && has_post_thumbnail( $parent_id ) ) {
|
23 |
+
$image_url = get_the_post_thumbnail_url( $parent_id, $image_size );
|
24 |
+
} else {
|
25 |
+
$image_url = '';
|
26 |
+
}
|
27 |
+
return $image_url;
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
if ( ! function_exists( 'wcj_is_bot' ) ) {
|
32 |
+
/**
|
33 |
+
* wcj_is_bot.
|
34 |
+
*
|
35 |
+
* @version 2.5.7
|
36 |
+
* @since 2.5.6
|
37 |
+
*/
|
38 |
+
function wcj_is_bot() {
|
39 |
+
return ( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/Google-Structured-Data-Testing-Tool|bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT'] ) ) ? true : false;
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
if ( ! function_exists( 'wcj_get_currency_exchange_rate_product_base_currency' ) ) {
|
44 |
/**
|
45 |
* wcj_get_currency_exchange_rate_product_base_currency.
|
874 |
}
|
875 |
}
|
876 |
|
877 |
+
/**
|
878 |
+
* validate_vat_no_soap.
|
879 |
+
*
|
880 |
+
* @version 2.5.7
|
881 |
+
* @since 2.5.7
|
882 |
+
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
883 |
+
*/
|
884 |
+
if ( ! function_exists( 'validate_vat_no_soap' ) ) {
|
885 |
+
function validate_vat_no_soap( $country_code, $vat_number ) {
|
886 |
+
$api_url = "http://ec.europa.eu/taxation_customs/vies/viesquer.do?ms=" . $country_code . "&vat=" . $vat_number;
|
887 |
+
if ( ini_get( 'allow_url_fopen' ) ) {
|
888 |
+
$response = file_get_contents( $api_url );
|
889 |
+
} elseif ( function_exists( 'curl_version' ) ) {
|
890 |
+
$curl = curl_init( $api_url );
|
891 |
+
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
|
892 |
+
$response = curl_exec( $curl );
|
893 |
+
curl_close( $curl );
|
894 |
+
} else {
|
895 |
+
return null;
|
896 |
+
}
|
897 |
+
return ( false !== strpos( $response, '="validStyle"' ) ) ? true : false;
|
898 |
+
}
|
899 |
+
}
|
900 |
+
|
901 |
/**
|
902 |
* validate_VAT.
|
903 |
*
|
904 |
+
* @version 2.5.7
|
905 |
+
* @return mixed: bool on successful checking (can be true or false), null otherwise
|
906 |
*/
|
907 |
if ( ! function_exists( 'validate_VAT' ) ) {
|
908 |
function validate_VAT( $country_code, $vat_number ) {
|
909 |
try {
|
910 |
+
if ( class_exists( 'SoapClient' ) ) {
|
911 |
+
$client = new SoapClient(
|
912 |
+
'http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl',
|
913 |
+
array( 'exceptions' => true )
|
914 |
+
);
|
915 |
+
$result = $client->checkVat( array(
|
916 |
+
'countryCode' => $country_code,
|
917 |
+
'vatNumber' => $vat_number,
|
918 |
+
) );
|
919 |
+
return ( isset( $result->valid ) ) ? $result->valid : null;
|
920 |
+
} else {
|
921 |
+
return validate_vat_no_soap( $country_code, $vat_number );
|
922 |
+
}
|
923 |
} catch( Exception $exception ) {
|
924 |
return null;
|
925 |
}
|
includes/functions/wcj-html-functions.php
CHANGED
@@ -4,20 +4,23 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack HTML functions.
|
6 |
*
|
7 |
-
* @version
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
11 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
12 |
|
13 |
-
/**
|
14 |
-
* wcj_get_table_html.
|
15 |
-
*/
|
16 |
if ( ! function_exists( 'wcj_get_table_html' ) ) {
|
|
|
|
|
|
|
|
|
|
|
17 |
function wcj_get_table_html( $data, $args = array() ) {
|
18 |
$defaults = array(
|
19 |
'table_class' => '',
|
20 |
'table_style' => '',
|
|
|
21 |
'table_heading_type' => 'horizontal',
|
22 |
'columns_classes' => array(),
|
23 |
'columns_styles' => array(),
|
@@ -27,11 +30,12 @@ if ( ! function_exists( 'wcj_get_table_html' ) ) {
|
|
27 |
extract( $args );
|
28 |
$table_class = ( '' == $table_class ) ? '' : ' class="' . $table_class . '"';
|
29 |
$table_style = ( '' == $table_style ) ? '' : ' style="' . $table_style . '"';
|
|
|
30 |
$html = '';
|
31 |
$html .= '<table' . $table_class . $table_style . '>';
|
32 |
$html .= '<tbody>';
|
33 |
foreach( $data as $row_number => $row ) {
|
34 |
-
$html .= '<tr>';
|
35 |
foreach( $row as $column_number => $value ) {
|
36 |
$th_or_td = ( ( 0 === $row_number && 'horizontal' === $table_heading_type ) || ( 0 === $column_number && 'vertical' === $table_heading_type ) ) ? 'th' : 'td';
|
37 |
$column_class = ( ! empty( $columns_classes ) && isset( $columns_classes[ $column_number ] ) ) ? ' class="' . $columns_classes[ $column_number ] . '"' : '';
|
@@ -49,10 +53,10 @@ if ( ! function_exists( 'wcj_get_table_html' ) ) {
|
|
49 |
}
|
50 |
}
|
51 |
|
52 |
-
/**
|
53 |
-
* wcj_get_option_html.
|
54 |
-
*/
|
55 |
if ( ! function_exists( 'wcj_get_option_html' ) ) {
|
|
|
|
|
|
|
56 |
function wcj_get_option_html( $option_type, $option_id, $option_value, $option_description, $option_class ) {
|
57 |
|
58 |
if ( 'checkbox' === $option_type )
|
4 |
*
|
5 |
* The WooCommerce Jetpack HTML functions.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
11 |
if ( ! defined( 'ABSPATH' ) ) exit;
|
12 |
|
|
|
|
|
|
|
13 |
if ( ! function_exists( 'wcj_get_table_html' ) ) {
|
14 |
+
/**
|
15 |
+
* wcj_get_table_html.
|
16 |
+
*
|
17 |
+
* @version 2.5.7
|
18 |
+
*/
|
19 |
function wcj_get_table_html( $data, $args = array() ) {
|
20 |
$defaults = array(
|
21 |
'table_class' => '',
|
22 |
'table_style' => '',
|
23 |
+
'row_styles' => '',
|
24 |
'table_heading_type' => 'horizontal',
|
25 |
'columns_classes' => array(),
|
26 |
'columns_styles' => array(),
|
30 |
extract( $args );
|
31 |
$table_class = ( '' == $table_class ) ? '' : ' class="' . $table_class . '"';
|
32 |
$table_style = ( '' == $table_style ) ? '' : ' style="' . $table_style . '"';
|
33 |
+
$row_styles = ( '' == $row_styles ) ? '' : ' style="' . $row_styles . '"';
|
34 |
$html = '';
|
35 |
$html .= '<table' . $table_class . $table_style . '>';
|
36 |
$html .= '<tbody>';
|
37 |
foreach( $data as $row_number => $row ) {
|
38 |
+
$html .= '<tr' . $row_styles . '>';
|
39 |
foreach( $row as $column_number => $value ) {
|
40 |
$th_or_td = ( ( 0 === $row_number && 'horizontal' === $table_heading_type ) || ( 0 === $column_number && 'vertical' === $table_heading_type ) ) ? 'th' : 'td';
|
41 |
$column_class = ( ! empty( $columns_classes ) && isset( $columns_classes[ $column_number ] ) ) ? ' class="' . $columns_classes[ $column_number ] . '"' : '';
|
53 |
}
|
54 |
}
|
55 |
|
|
|
|
|
|
|
56 |
if ( ! function_exists( 'wcj_get_option_html' ) ) {
|
57 |
+
/**
|
58 |
+
* wcj_get_option_html.
|
59 |
+
*/
|
60 |
function wcj_get_option_html( $option_type, $option_id, $option_value, $option_description, $option_class ) {
|
61 |
|
62 |
if ( 'checkbox' === $option_type )
|
includes/gateways/class-wc-gateway-wcj-custom.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Custom Payment Gateway class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -19,7 +19,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
19 |
/**
|
20 |
* WC_Gateway_WCJ_Custom_Template class.
|
21 |
*
|
22 |
-
* @version 2.5.
|
23 |
*/
|
24 |
class WC_Gateway_WCJ_Custom_Template extends WC_Payment_Gateway {
|
25 |
|
@@ -36,7 +36,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
36 |
/**
|
37 |
* Initialise Gateway Settings Form Fields
|
38 |
*
|
39 |
-
* @version 2.5.
|
40 |
*/
|
41 |
public function init_form_fields() {
|
42 |
global $woocommerce;
|
@@ -45,7 +45,7 @@ if ( ! function_exists( 'init_wc_gateway_wcj_custom_class' ) ) {
|
|
45 |
|
46 |
if ( is_admin() ) {
|
47 |
foreach ( WC()->shipping->load_shipping_methods() as $method ) {
|
48 |
-
$shipping_methods[ $method->id ] = $method->
|
49 |
}
|
50 |
}
|
51 |
|
4 |
*
|
5 |
* The WooCommerce Jetpack Custom Payment Gateway class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
19 |
/**
|
20 |
* WC_Gateway_WCJ_Custom_Template class.
|
21 |
*
|
22 |
+
* @version 2.5.7
|
23 |
*/
|
24 |
class WC_Gateway_WCJ_Custom_Template extends WC_Payment_Gateway {
|
25 |
|
36 |
/**
|
37 |
* Initialise Gateway Settings Form Fields
|
38 |
*
|
39 |
+
* @version 2.5.7
|
40 |
*/
|
41 |
public function init_form_fields() {
|
42 |
global $woocommerce;
|
45 |
|
46 |
if ( is_admin() ) {
|
47 |
foreach ( WC()->shipping->load_shipping_methods() as $method ) {
|
48 |
+
$shipping_methods[ $method->id ] = $method->get_method_title();
|
49 |
}
|
50 |
}
|
51 |
|
includes/js/wcj-shipping-calculator.js
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* wcj-shipping-calculator.
|
3 |
+
*
|
4 |
+
* @version 2.5.7
|
5 |
+
* @since 2.5.7
|
6 |
+
*/
|
7 |
+
|
8 |
+
jQuery(document).ready(change_labels);
|
9 |
+
jQuery(document).ajaxComplete(change_labels);
|
10 |
+
function change_labels() {
|
11 |
+
jQuery("a.shipping-calculator-button").each( function () {
|
12 |
+
jQuery(this).text( alg_object.calculate_shipping_label );
|
13 |
+
jQuery(this).css( "visibility", "visible" );
|
14 |
+
});
|
15 |
+
jQuery("button[name=calc_shipping]").each( function () {
|
16 |
+
jQuery(this).text( alg_object.update_totals_label );
|
17 |
+
jQuery(this).css( "visibility", "visible" );
|
18 |
+
});
|
19 |
+
}
|
includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack PDF Invoices Report Tool class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.2.1
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -18,11 +18,12 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
-
* @version 2.
|
22 |
*/
|
23 |
public function __construct() {
|
24 |
$this->notice = '';
|
25 |
add_action( 'init', array( $this, 'generate_report_zip' ) );
|
|
|
26 |
}
|
27 |
|
28 |
/**
|
@@ -52,7 +53,7 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
52 |
/**
|
53 |
* Add Invoices Report tool to WooCommerce menu (the content).
|
54 |
*
|
55 |
-
* @version 2.
|
56 |
*/
|
57 |
function create_invoices_report_tool() {
|
58 |
$result_message = '';
|
@@ -68,8 +69,7 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
68 |
}
|
69 |
}
|
70 |
?><div>
|
71 |
-
|
72 |
-
<p><?php echo __( 'Invoices Monthly Reports.', 'woocommerce-jetpack' ); ?></p>
|
73 |
<?php echo $result_message; ?>
|
74 |
<p><form method="post" action=""><?php
|
75 |
|
@@ -107,6 +107,11 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
107 |
'',
|
108 |
'<input class="button-primary" type="submit" name="get_invoices_report_zip" value="' . __( 'Download all monthly documents PDFs in single ZIP file', 'woocommerce-jetpack' ) . '">',
|
109 |
),
|
|
|
|
|
|
|
|
|
|
|
110 |
);
|
111 |
// Print all
|
112 |
echo wcj_get_table_html( $data, array( 'table_heading_type' => 'vertical', ) );
|
@@ -117,7 +122,7 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
117 |
/**
|
118 |
* get_invoices_report_zip.
|
119 |
*
|
120 |
-
* @version 2.5.
|
121 |
* @since 2.3.10
|
122 |
*/
|
123 |
function get_invoices_report_zip( $year, $month, $invoice_type_id ) {
|
@@ -173,9 +178,9 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
173 |
$output .= "status: " . $zip->getStatusString() . "\n"; */
|
174 |
$zip->close();
|
175 |
|
176 |
-
header( "Content-Type: application/octet-stream" );
|
177 |
header( "Content-Disposition: attachment; filename=" . urlencode( $zip_file_name ) );
|
178 |
-
header( "Content-Type: application/octet-stream" );
|
179 |
header( "Content-Type: application/download" );
|
180 |
header( "Content-Description: File Transfer" );
|
181 |
header( "Content-Length: " . filesize( $zip_file_path ) );
|
@@ -192,15 +197,56 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
192 |
return true;
|
193 |
}
|
194 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
/**
|
196 |
* Invoices Report function.
|
197 |
*
|
198 |
-
* @version 2.5.
|
199 |
*/
|
200 |
function get_invoices_report( $year, $month, $invoice_type_id ) {
|
201 |
-
|
202 |
$output = '';
|
|
|
|
|
|
|
|
|
203 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
$data = array();
|
205 |
$data[] = array(
|
206 |
__( 'Document Nr.', 'woocommerce-jetpack' ),
|
@@ -224,7 +270,7 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
224 |
$last_minute = mktime( 23, 59, 59, $month, date( 't', $first_minute ), $year );
|
225 |
|
226 |
$offset = 0;
|
227 |
-
$block_size =
|
228 |
while( true ) {
|
229 |
$args = array(
|
230 |
'post_type' => 'shop_order',
|
@@ -244,11 +290,13 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
244 |
),
|
245 |
),
|
246 |
'offset' => $offset,
|
|
|
247 |
);
|
248 |
$loop = new WP_Query( $args );
|
249 |
-
if ( ! $loop->have_posts() )
|
250 |
-
|
251 |
-
|
|
|
252 |
|
253 |
if ( wcj_is_invoice_created( $order_id, $invoice_type_id ) ) {
|
254 |
|
@@ -292,19 +340,13 @@ class WCJ_PDF_Invoicing_Report_Tool {
|
|
292 |
//'<pre>' . print_r( get_post_meta( $order_id ), true ) . '</pre>',
|
293 |
);
|
294 |
}
|
295 |
-
|
296 |
$offset += $block_size;
|
297 |
}
|
298 |
|
299 |
-
|
300 |
-
$output .= '<h3>' . 'Total Sum: ' . sprintf( '$ %.2f', $total_sum ) . '</h3>';
|
301 |
-
$output .= '<h3>' . 'Total Tax: ' . sprintf( '$ %.2f', $total_tax ) . '</h3>'; */
|
302 |
-
$output .= wcj_get_table_html( $data, array( 'table_class' => 'widefat', ) );
|
303 |
-
|
304 |
-
// $output .= date( "Y-m-d H:i:s", $first_minute ) . ' -> ' . date( "Y-m-d H:i:s", $last_minute );
|
305 |
-
|
306 |
-
return $output;
|
307 |
}
|
|
|
308 |
}
|
309 |
|
310 |
endif;
|
4 |
*
|
5 |
* The WooCommerce Jetpack PDF Invoices Report Tool class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.2.1
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
18 |
/**
|
19 |
* Constructor.
|
20 |
*
|
21 |
+
* @version 2.5.7
|
22 |
*/
|
23 |
public function __construct() {
|
24 |
$this->notice = '';
|
25 |
add_action( 'init', array( $this, 'generate_report_zip' ) );
|
26 |
+
add_action( 'init', array( $this, 'export_csv' ) );
|
27 |
}
|
28 |
|
29 |
/**
|
53 |
/**
|
54 |
* Add Invoices Report tool to WooCommerce menu (the content).
|
55 |
*
|
56 |
+
* @version 2.5.7
|
57 |
*/
|
58 |
function create_invoices_report_tool() {
|
59 |
$result_message = '';
|
69 |
}
|
70 |
}
|
71 |
?><div>
|
72 |
+
<?php echo WCJ()->modules['pdf_invoicing']->get_tool_header_html( 'invoices_report' ); ?>
|
|
|
73 |
<?php echo $result_message; ?>
|
74 |
<p><form method="post" action=""><?php
|
75 |
|
107 |
'',
|
108 |
'<input class="button-primary" type="submit" name="get_invoices_report_zip" value="' . __( 'Download all monthly documents PDFs in single ZIP file', 'woocommerce-jetpack' ) . '">',
|
109 |
),
|
110 |
+
// Get Report CSV Button
|
111 |
+
array(
|
112 |
+
'',
|
113 |
+
'<input class="button-primary" type="submit" name="get_invoices_report_csv" value="' . __( 'Download monthly documents CSV', 'woocommerce-jetpack' ) . '">',
|
114 |
+
),
|
115 |
);
|
116 |
// Print all
|
117 |
echo wcj_get_table_html( $data, array( 'table_heading_type' => 'vertical', ) );
|
122 |
/**
|
123 |
* get_invoices_report_zip.
|
124 |
*
|
125 |
+
* @version 2.5.7
|
126 |
* @since 2.3.10
|
127 |
*/
|
128 |
function get_invoices_report_zip( $year, $month, $invoice_type_id ) {
|
178 |
$output .= "status: " . $zip->getStatusString() . "\n"; */
|
179 |
$zip->close();
|
180 |
|
181 |
+
// header( "Content-Type: application/octet-stream" );
|
182 |
header( "Content-Disposition: attachment; filename=" . urlencode( $zip_file_name ) );
|
183 |
+
// header( "Content-Type: application/octet-stream" );
|
184 |
header( "Content-Type: application/download" );
|
185 |
header( "Content-Description: File Transfer" );
|
186 |
header( "Content-Length: " . filesize( $zip_file_path ) );
|
197 |
return true;
|
198 |
}
|
199 |
|
200 |
+
/**
|
201 |
+
* export_csv.
|
202 |
+
*
|
203 |
+
* @version 2.5.7
|
204 |
+
* @since 2.5.7
|
205 |
+
*/
|
206 |
+
function export_csv() {
|
207 |
+
$the_year = ( ! empty( $_POST['report_year'] ) ) ? $_POST['report_year'] : date( 'Y' );
|
208 |
+
$the_month = ( ! empty( $_POST['report_month'] ) ) ? $_POST['report_month'] : date( 'm' );
|
209 |
+
$the_invoice_type = ( ! empty( $_POST['invoice_type'] ) ) ? $_POST['invoice_type'] : 'invoice';
|
210 |
+
if ( isset( $_POST['get_invoices_report_csv'] ) ) {
|
211 |
+
$data = $this->get_invoices_report_data( $the_year, $the_month, $the_invoice_type );
|
212 |
+
$csv = '';
|
213 |
+
foreach ( $data as $row ) {
|
214 |
+
$row = str_replace( '.', ',', $row );
|
215 |
+
// $csv .= implode( get_option( 'wcj_export_csv_separator', ',' ), $row ) . PHP_EOL;
|
216 |
+
$csv .= implode( ';', $row ) . PHP_EOL;
|
217 |
+
}
|
218 |
+
// if ( 'yes' === get_option( 'wcj_export_csv_add_utf_8_bom', 'yes' ) ) {
|
219 |
+
$csv = "\xEF\xBB\xBF" . $csv; // UTF-8 BOM
|
220 |
+
// }
|
221 |
+
$filename = 'report_' . $the_year . '_' . $the_month . '_' . $the_invoice_type;
|
222 |
+
header( "Content-Disposition: attachment; filename=" . $filename . ".csv" );
|
223 |
+
header( "Content-Type: Content-Type: text/html; charset=utf-8" );
|
224 |
+
header( "Content-Description: File Transfer" );
|
225 |
+
header( "Content-Length: " . strlen( $csv ) );
|
226 |
+
echo $csv;
|
227 |
+
die();
|
228 |
+
}
|
229 |
+
}
|
230 |
+
|
231 |
/**
|
232 |
* Invoices Report function.
|
233 |
*
|
234 |
+
* @version 2.5.7
|
235 |
*/
|
236 |
function get_invoices_report( $year, $month, $invoice_type_id ) {
|
|
|
237 |
$output = '';
|
238 |
+
$data = $this->get_invoices_report_data( $year, $month, $invoice_type_id );
|
239 |
+
$output .= wcj_get_table_html( $data, array( 'table_class' => 'widefat', ) );
|
240 |
+
return $output;
|
241 |
+
}
|
242 |
|
243 |
+
/**
|
244 |
+
* Invoices Report Data function.
|
245 |
+
*
|
246 |
+
* @version 2.5.7
|
247 |
+
* @since 2.5.7
|
248 |
+
*/
|
249 |
+
function get_invoices_report_data( $year, $month, $invoice_type_id ) {
|
250 |
$data = array();
|
251 |
$data[] = array(
|
252 |
__( 'Document Nr.', 'woocommerce-jetpack' ),
|
270 |
$last_minute = mktime( 23, 59, 59, $month, date( 't', $first_minute ), $year );
|
271 |
|
272 |
$offset = 0;
|
273 |
+
$block_size = 256;
|
274 |
while( true ) {
|
275 |
$args = array(
|
276 |
'post_type' => 'shop_order',
|
290 |
),
|
291 |
),
|
292 |
'offset' => $offset,
|
293 |
+
'fields' => 'ids',
|
294 |
);
|
295 |
$loop = new WP_Query( $args );
|
296 |
+
if ( ! $loop->have_posts() ) {
|
297 |
+
break;
|
298 |
+
}
|
299 |
+
foreach ( $loop->posts as $order_id ) {
|
300 |
|
301 |
if ( wcj_is_invoice_created( $order_id, $invoice_type_id ) ) {
|
302 |
|
340 |
//'<pre>' . print_r( get_post_meta( $order_id ), true ) . '</pre>',
|
341 |
);
|
342 |
}
|
343 |
+
}
|
344 |
$offset += $block_size;
|
345 |
}
|
346 |
|
347 |
+
return $data;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
348 |
}
|
349 |
+
|
350 |
}
|
351 |
|
352 |
endif;
|
includes/pdf-invoices/settings/class-wcj-pdf-invoicing-display.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack PDF Invoicing Display class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,7 +17,7 @@ class WCJ_PDF_Invoicing_Display extends WCJ_Module {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.5.
|
21 |
*/
|
22 |
function __construct() {
|
23 |
|
@@ -29,7 +29,7 @@ class WCJ_PDF_Invoicing_Display extends WCJ_Module {
|
|
29 |
|
30 |
if ( $this->is_enabled() ) {
|
31 |
// Columns on Admin's Orders page
|
32 |
-
add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_column' ),
|
33 |
add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), 2 );
|
34 |
// Action Links on Customer's My Account page
|
35 |
add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'add_pdf_invoices_action_links' ), PHP_INT_MAX, 2 );
|
4 |
*
|
5 |
* The WooCommerce Jetpack PDF Invoicing Display class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
function __construct() {
|
23 |
|
29 |
|
30 |
if ( $this->is_enabled() ) {
|
31 |
// Columns on Admin's Orders page
|
32 |
+
add_filter( 'manage_edit-shop_order_columns', array( $this, 'add_order_column' ), PHP_INT_MAX - 3 );
|
33 |
add_action( 'manage_shop_order_posts_custom_column', array( $this, 'render_order_columns' ), 2 );
|
34 |
// Action Links on Customer's My Account page
|
35 |
add_filter( 'woocommerce_my_account_my_orders_actions', array( $this, 'add_pdf_invoices_action_links' ), PHP_INT_MAX, 2 );
|
includes/price-by-country/class-wcj-price-by-country-core.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Price by Country Core class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,26 +17,16 @@ class WCJ_Price_by_Country_Core {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.5.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
$this->customer_country_group_id = null;
|
24 |
-
if ( 'no' === get_option( 'wcj_price_by_country_for_bots_disabled', 'no' ) || !
|
25 |
// `add_hooks()` moved to `init` hook, so in case we need to call `get_customer_country_by_ip()` `WC_Geolocation` class is ready
|
26 |
add_action( 'init', array( $this, 'add_hooks' ) );
|
27 |
}
|
28 |
}
|
29 |
|
30 |
-
/**
|
31 |
-
* is_bot.
|
32 |
-
*
|
33 |
-
* @version 2.5.6
|
34 |
-
* @since 2.5.6
|
35 |
-
*/
|
36 |
-
function is_bot() {
|
37 |
-
return ( isset( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/Google-Structured-Data-Testing-Tool|bot|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT'] ) ) ? true : false;
|
38 |
-
}
|
39 |
-
|
40 |
/**
|
41 |
* add_hooks.
|
42 |
*
|
4 |
*
|
5 |
* The WooCommerce Jetpack Price by Country Core class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
$this->customer_country_group_id = null;
|
24 |
+
if ( 'no' === get_option( 'wcj_price_by_country_for_bots_disabled', 'no' ) || ! wcj_is_bot() ) {
|
25 |
// `add_hooks()` moved to `init` hook, so in case we need to call `get_customer_country_by_ip()` `WC_Geolocation` class is ready
|
26 |
add_action( 'init', array( $this, 'add_hooks' ) );
|
27 |
}
|
28 |
}
|
29 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
/**
|
31 |
* add_hooks.
|
32 |
*
|
includes/reports/class-wcj-currency-reports.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Currency Reports class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -104,18 +104,22 @@ class WCJ_Currency_Reports {
|
|
104 |
|
105 |
/**
|
106 |
* filter_reports.
|
|
|
|
|
107 |
*/
|
108 |
function filter_reports( $args ) {
|
109 |
-
if ( isset( $_GET['
|
110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
}
|
112 |
-
$args['where_meta'] = array(
|
113 |
-
array(
|
114 |
-
'meta_key' => '_order_currency',
|
115 |
-
'meta_value' => isset( $_GET['currency'] ) ? $_GET['currency'] : get_woocommerce_currency(),
|
116 |
-
'operator' => '=',
|
117 |
-
),
|
118 |
-
);
|
119 |
return $args;
|
120 |
}
|
121 |
}
|
4 |
*
|
5 |
* The WooCommerce Jetpack Currency Reports class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
104 |
|
105 |
/**
|
106 |
* filter_reports.
|
107 |
+
*
|
108 |
+
* @version 2.5.7
|
109 |
*/
|
110 |
function filter_reports( $args ) {
|
111 |
+
if ( isset( $_GET['page'] ) && 'wc-reports' === $_GET['page'] ) {
|
112 |
+
if ( isset( $_GET['currency'] ) && 'merge' === $_GET['currency'] ) {
|
113 |
+
return $args;
|
114 |
+
}
|
115 |
+
$args['where_meta'] = array(
|
116 |
+
array(
|
117 |
+
'meta_key' => '_order_currency',
|
118 |
+
'meta_value' => isset( $_GET['currency'] ) ? $_GET['currency'] : get_woocommerce_currency(),
|
119 |
+
'operator' => '=',
|
120 |
+
),
|
121 |
+
);
|
122 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
return $args;
|
124 |
}
|
125 |
}
|
includes/reports/wcj-class-reports-sales.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Sales Reports class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -55,10 +55,20 @@ class WCJ_Reports_Sales {
|
|
55 |
return ( $a['sales'] < $b['sales'] ) ? 1 : -1;
|
56 |
}
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
/*
|
59 |
* get_products_sales.
|
60 |
*
|
61 |
-
* @version 2.5.
|
62 |
* @since 2.3.0
|
63 |
*/
|
64 |
function get_products_sales() {
|
@@ -92,32 +102,58 @@ class WCJ_Reports_Sales {
|
|
92 |
$order = wc_get_order( $order_id );
|
93 |
$items = $order->get_items();
|
94 |
foreach ( $items as $item ) {
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
$products_data[ $item['product_id'] ][ 'sales' ] += $item['qty'];
|
99 |
-
$month = date( 'n', get_the_time( 'U', $order_id ) );
|
100 |
-
$year = date( 'Y', get_the_time( 'U', $order_id ) );
|
101 |
-
$years[ $year ] = true;
|
102 |
-
if ( ! isset( $products_data[ $item['product_id'] ][ 'sales_by_month' ][ $year ][ $month ] ) ) {
|
103 |
-
$products_data[ $item['product_id'] ][ 'sales_by_month' ][ $year ][ $month ] = 0;
|
104 |
-
}
|
105 |
-
$products_data[ $item['product_id'] ][ 'sales_by_month' ][ $year ][ $month ] += $item['qty'];
|
106 |
-
if ( ! isset( $products_data[ $item['product_id'] ][ 'title' ] ) ) {
|
107 |
-
$products_data[ $item['product_id'] ][ 'title' ] = get_the_title( $item['product_id'] );
|
108 |
}
|
109 |
-
|
110 |
-
$products_data[ $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
}
|
112 |
}
|
113 |
$total_orders++;
|
114 |
}
|
115 |
$offset += $block_size;
|
116 |
}
|
117 |
-
usort( $products_data, array( $this, 'sort_by_total_sales' ) );
|
|
|
118 |
|
119 |
$table_data = array();
|
120 |
-
$the_header = array( __( 'Product', 'woocommerce-jetpack' ), );
|
121 |
foreach ( $years as $year => $value ) {
|
122 |
if ( $year != $this->year ) continue;
|
123 |
for ( $i = 12; $i >= 1; $i-- ) {
|
@@ -125,9 +161,9 @@ class WCJ_Reports_Sales {
|
|
125 |
}
|
126 |
}
|
127 |
$table_data[] = $the_header;
|
128 |
-
foreach ( $products_data as $product_id => $the_data ) {
|
129 |
if ( '' == $this->product_title || false !== stripos( $the_data['title'], $this->product_title ) ) {
|
130 |
-
$the_row = array( $the_data['
|
131 |
foreach ( $years as $year => $value ) {
|
132 |
if ( $year != $this->year ) continue;
|
133 |
for ( $i = 12; $i >= 1; $i-- ) {
|
@@ -165,7 +201,7 @@ class WCJ_Reports_Sales {
|
|
165 |
$filter_form .= '<input type="text" name="product_title" title="" value="' . $this->product_title . '" /><input type="submit" value="' . __( 'Filter', 'woocommerce' ) . '" />';
|
166 |
$filter_form .= '</form>';
|
167 |
|
168 |
-
return '<p>' . $menu . '</p>' . '<p>' . $filter_form . '</p>' . wcj_get_table_html( $table_data, array( 'table_class' => 'widefat' ) );
|
169 |
}
|
170 |
}
|
171 |
|
4 |
*
|
5 |
* The WooCommerce Jetpack Sales Reports class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
55 |
return ( $a['sales'] < $b['sales'] ) ? 1 : -1;
|
56 |
}
|
57 |
|
58 |
+
/*
|
59 |
+
* sort_by_title.
|
60 |
+
*
|
61 |
+
* @version 2.5.7
|
62 |
+
* @since 2.5.7
|
63 |
+
*/
|
64 |
+
function sort_by_title( $a, $b ) {
|
65 |
+
return strcmp( strip_tags( $a['title'] ), strip_tags( $b['title'] ) );
|
66 |
+
}
|
67 |
+
|
68 |
/*
|
69 |
* get_products_sales.
|
70 |
*
|
71 |
+
* @version 2.5.7
|
72 |
* @since 2.3.0
|
73 |
*/
|
74 |
function get_products_sales() {
|
102 |
$order = wc_get_order( $order_id );
|
103 |
$items = $order->get_items();
|
104 |
foreach ( $items as $item ) {
|
105 |
+
$product_ids = array( $item['product_id'] );
|
106 |
+
if ( 0 != $item['variation_id'] && 'yes' === get_option( 'wcj_reports_products_sales_count_variations', 'no' ) ) {
|
107 |
+
$product_ids[] = $item['variation_id'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
}
|
109 |
+
foreach ( $product_ids as $product_id ) {
|
110 |
+
if ( ! isset( $products_data[ $product_id ][ 'sales' ] ) ) {
|
111 |
+
$products_data[ $product_id ][ 'sales' ] = 0;
|
112 |
+
}
|
113 |
+
$products_data[ $product_id ][ 'sales' ] += $item['qty'];
|
114 |
+
$month = date( 'n', get_the_time( 'U', $order_id ) );
|
115 |
+
$year = date( 'Y', get_the_time( 'U', $order_id ) );
|
116 |
+
$years[ $year ] = true;
|
117 |
+
if ( ! isset( $products_data[ $product_id ][ 'sales_by_month' ][ $year ][ $month ] ) ) {
|
118 |
+
$products_data[ $product_id ][ 'sales_by_month' ][ $year ][ $month ] = 0;
|
119 |
+
}
|
120 |
+
$products_data[ $product_id ][ 'sales_by_month' ][ $year ][ $month ] += $item['qty'];
|
121 |
+
if ( ! isset( $products_data[ $product_id ][ 'title' ] ) ) {
|
122 |
+
$products_data[ $product_id ][ 'title' ] = '';
|
123 |
+
$_product = wc_get_product( $product_id );
|
124 |
+
if ( is_object( $_product ) ) {
|
125 |
+
$products_data[ $product_id ][ 'title' ] .= $_product->get_title(); // get_the_title( $product_id );
|
126 |
+
if ( 'WC_Product_Variation' === get_class( $_product ) && is_object( $_product->parent ) ) {
|
127 |
+
$products_data[ $product_id ][ 'title' ] .= '<br><em>' . $_product->get_formatted_variation_attributes( true ) . '</em>';
|
128 |
+
} elseif ( 'WC_Product_Variation' === get_class( $_product ) ) {
|
129 |
+
// $products_data[ $product_id ][ 'title' ] .= ' [PARENT PRODUCT DELETED]'; // todo
|
130 |
+
$products_data[ $product_id ][ 'title' ] .= $item['name'] . '<br><em>' . __( 'Variation', 'woocommerce-jetpack' ) . '</em>'; // get_the_title( $product_id );
|
131 |
+
$products_data[ $product_id ][ 'title' ] = '<del>' . $products_data[ $product_id ][ 'title' ] . '</del>';
|
132 |
+
}
|
133 |
+
} else {
|
134 |
+
// $products_data[ $product_id ][ 'title' ] .= $item['name'] . ' [PRODUCT DELETED]'; // todo
|
135 |
+
$products_data[ $product_id ][ 'title' ] .= $item['name'];
|
136 |
+
$products_data[ $product_id ][ 'title' ] = '<del>' . $products_data[ $product_id ][ 'title' ] . '</del>';
|
137 |
+
}
|
138 |
+
// $products_data[ $product_id ][ 'title' ] .= ' [ID: ' . $product_id . ']';
|
139 |
+
}
|
140 |
+
if ( ! isset( $products_data[ $product_id ][ 'last_sale' ] ) ) {
|
141 |
+
$products_data[ $product_id ][ 'last_sale' ] = date( 'Y-m-d H:i:s', get_the_time( 'U', $order_id ) );
|
142 |
+
}
|
143 |
+
if ( ! isset( $products_data[ $product_id ][ 'product_id' ] ) ) {
|
144 |
+
$products_data[ $product_id ][ 'product_id' ] = $product_id;
|
145 |
+
}
|
146 |
}
|
147 |
}
|
148 |
$total_orders++;
|
149 |
}
|
150 |
$offset += $block_size;
|
151 |
}
|
152 |
+
// usort( $products_data, array( $this, 'sort_by_total_sales' ) );
|
153 |
+
usort( $products_data, array( $this, 'sort_by_title' ) );
|
154 |
|
155 |
$table_data = array();
|
156 |
+
$the_header = array( __( 'ID', 'woocommerce-jetpack' ), __( 'Product', 'woocommerce-jetpack' ), __( 'Total Sales', 'woocommerce-jetpack' ) );
|
157 |
foreach ( $years as $year => $value ) {
|
158 |
if ( $year != $this->year ) continue;
|
159 |
for ( $i = 12; $i >= 1; $i-- ) {
|
161 |
}
|
162 |
}
|
163 |
$table_data[] = $the_header;
|
164 |
+
foreach ( $products_data as /* $product_id => */ $the_data ) {
|
165 |
if ( '' == $this->product_title || false !== stripos( $the_data['title'], $this->product_title ) ) {
|
166 |
+
$the_row = array( $the_data['product_id'], $the_data['title'], $the_data['sales'] );
|
167 |
foreach ( $years as $year => $value ) {
|
168 |
if ( $year != $this->year ) continue;
|
169 |
for ( $i = 12; $i >= 1; $i-- ) {
|
201 |
$filter_form .= '<input type="text" name="product_title" title="" value="' . $this->product_title . '" /><input type="submit" value="' . __( 'Filter', 'woocommerce' ) . '" />';
|
202 |
$filter_form .= '</form>';
|
203 |
|
204 |
+
return '<p>' . $menu . '</p>' . '<p>' . $filter_form . '</p>' . wcj_get_table_html( $table_data, array( 'table_class' => 'widefat striped' ) );
|
205 |
}
|
206 |
}
|
207 |
|
includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Custom Shipping with Shipping Zones class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @since 2.5.6
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
@@ -40,7 +40,7 @@ if ( ! function_exists( 'init_wc_shipping_wcj_custom_w_zones_class' ) ) {
|
|
40 |
/**
|
41 |
* Init settings
|
42 |
*
|
43 |
-
* @version 2.5.
|
44 |
* @since 2.5.6
|
45 |
* @access public
|
46 |
* @return void
|
@@ -63,9 +63,11 @@ if ( ! function_exists( 'init_wc_shipping_wcj_custom_w_zones_class' ) ) {
|
|
63 |
// $this->init_settings();
|
64 |
|
65 |
// Define user set variables
|
66 |
-
$this->title
|
67 |
-
$this->cost
|
68 |
-
$this->
|
|
|
|
|
69 |
$this->weight_table_total_rows = $this->get_option( 'weight_table_total_rows' );
|
70 |
for ( $i = 1; $i <= $this->weight_table_total_rows; $i++ ) {
|
71 |
$option_name = 'weight_table_weight_row_' . $i;
|
@@ -78,10 +80,31 @@ if ( ! function_exists( 'init_wc_shipping_wcj_custom_w_zones_class' ) ) {
|
|
78 |
add_action( 'woocommerce_update_options_shipping_' . $this->id, array( $this, 'process_admin_options' ) );
|
79 |
}
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
/**
|
82 |
* Initialise Settings Form Fields
|
83 |
*
|
84 |
-
* @version 2.5.
|
85 |
* @since 2.5.6
|
86 |
*/
|
87 |
function init_instance_form_fields() {
|
@@ -114,10 +137,26 @@ if ( ! function_exists( 'init_wc_shipping_wcj_custom_w_zones_class' ) ) {
|
|
114 |
'desc_tip' => true,
|
115 |
'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
|
116 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
'weight_table_total_rows' => array(
|
118 |
'title' => __( 'Weight Table Total Rows', 'woocommerce' ),
|
119 |
'type' => 'number',
|
120 |
-
'description' => __( 'Press Save changes after you change this number.', 'woocommerce-jetpack' ),
|
121 |
'default' => 0,
|
122 |
'desc_tip' => true,
|
123 |
'custom_attributes' => array( 'min' => '0', ),
|
4 |
*
|
5 |
* The WooCommerce Jetpack Custom Shipping with Shipping Zones class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @since 2.5.6
|
9 |
* @author Algoritmika Ltd.
|
10 |
*/
|
40 |
/**
|
41 |
* Init settings
|
42 |
*
|
43 |
+
* @version 2.5.7
|
44 |
* @since 2.5.6
|
45 |
* @access public
|
46 |
* @return void
|
63 |
// $this->init_settings();
|
64 |
|
65 |
// Define user set variables
|
66 |
+
$this->title = $this->get_option( 'title' );
|
67 |
+
$this->cost = $this->get_option( 'cost' );
|
68 |
+
$this->min_weight = $this->get_option( 'min_weight' );
|
69 |
+
$this->max_weight = $this->get_option( 'max_weight' );
|
70 |
+
$this->type = $this->get_option( 'type' );
|
71 |
$this->weight_table_total_rows = $this->get_option( 'weight_table_total_rows' );
|
72 |
for ( $i = 1; $i <= $this->weight_table_total_rows; $i++ ) {
|
73 |
$option_name = 'weight_table_weight_row_' . $i;
|
80 |
add_action( 'woocommerce_update_options_shipping_' . $this->id, array( $this, 'process_admin_options' ) );
|
81 |
}
|
82 |
|
83 |
+
/**
|
84 |
+
* Is this method available?
|
85 |
+
*
|
86 |
+
* @version 2.5.7
|
87 |
+
* @since 2.5.7
|
88 |
+
* @param array $package
|
89 |
+
* @return bool
|
90 |
+
*/
|
91 |
+
public function is_available( $package ) {
|
92 |
+
$available = parent::is_available( $package );
|
93 |
+
if ( $available ) {
|
94 |
+
$total_weight = WC()->cart->get_cart_contents_weight();
|
95 |
+
if ( 0 != $this->min_weight && $total_weight < $this->min_weight ) {
|
96 |
+
$available = false;
|
97 |
+
} elseif ( 0 != $this->max_weight && $total_weight > $this->max_weight ) {
|
98 |
+
$available = false;
|
99 |
+
}
|
100 |
+
}
|
101 |
+
return $available;
|
102 |
+
}
|
103 |
+
|
104 |
/**
|
105 |
* Initialise Settings Form Fields
|
106 |
*
|
107 |
+
* @version 2.5.7
|
108 |
* @since 2.5.6
|
109 |
*/
|
110 |
function init_instance_form_fields() {
|
137 |
'desc_tip' => true,
|
138 |
'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
|
139 |
),
|
140 |
+
'min_weight' => array(
|
141 |
+
'title' => __( 'Min Weight', 'woocommerce' ),
|
142 |
+
'type' => 'number',
|
143 |
+
'description' => __( 'Minimum total cart weight. Set zero to disable.', 'woocommerce-jetpack' ),
|
144 |
+
'default' => 0,
|
145 |
+
'desc_tip' => true,
|
146 |
+
'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
|
147 |
+
),
|
148 |
+
'max_weight' => array(
|
149 |
+
'title' => __( 'Max Weight', 'woocommerce' ),
|
150 |
+
'type' => 'number',
|
151 |
+
'description' => __( 'Maximum total cart weight. Set zero to disable.', 'woocommerce-jetpack' ),
|
152 |
+
'default' => 0,
|
153 |
+
'desc_tip' => true,
|
154 |
+
'custom_attributes' => array( 'step' => '0.000001', 'min' => '0', ),
|
155 |
+
),
|
156 |
'weight_table_total_rows' => array(
|
157 |
'title' => __( 'Weight Table Total Rows', 'woocommerce' ),
|
158 |
'type' => 'number',
|
159 |
+
'description' => __( 'Press "Save changes" and reload the page after you change this number.', 'woocommerce-jetpack' ),
|
160 |
'default' => 0,
|
161 |
'desc_tip' => true,
|
162 |
'custom_attributes' => array( 'min' => '0', ),
|
includes/shortcodes/class-wcj-general-shortcodes.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack General Shortcodes class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,7 +17,7 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.5.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
@@ -46,7 +46,9 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
|
|
46 |
'countries' => '',
|
47 |
'currencies' => '',
|
48 |
'content' => '',
|
49 |
-
'heading_format' => 'from %
|
|
|
|
|
50 |
'replace_with_currency' => 'no',
|
51 |
'hide_if_zero_quantity' => 'no',
|
52 |
'table_format' => 'horizontal',
|
@@ -84,7 +86,7 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
|
|
84 |
/**
|
85 |
* wcj_wholesale_price_table (global only).
|
86 |
*
|
87 |
-
* @version 2.5.
|
88 |
* @since 2.4.8
|
89 |
*/
|
90 |
function wcj_wholesale_price_table( $atts ) {
|
@@ -116,11 +118,18 @@ class WCJ_General_Shortcodes extends WCJ_Shortcodes {
|
|
116 |
$data_qty = array();
|
117 |
$data_discount = array();
|
118 |
$columns_styles = array();
|
|
|
119 |
foreach ( $wholesale_price_levels as $wholesale_price_level ) {
|
|
|
120 |
if ( 0 == $wholesale_price_level['quantity'] && 'yes' === $atts['hide_if_zero_quantity'] ) {
|
121 |
continue;
|
122 |
}
|
123 |
-
$
|
|
|
|
|
|
|
|
|
|
|
124 |
$data_discount[] = ( 'fixed' === get_option( 'wcj_wholesale_price_discount_type', 'percent' ) )
|
125 |
? '-' . wc_price( $wholesale_price_level['discount'] ) : '-' . $wholesale_price_level['discount'] . '%';
|
126 |
$columns_styles[] = 'text-align: center;';
|
4 |
*
|
5 |
* The WooCommerce Jetpack General Shortcodes class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
46 |
'countries' => '',
|
47 |
'currencies' => '',
|
48 |
'content' => '',
|
49 |
+
'heading_format' => 'from %level_min_qty% pcs.',
|
50 |
+
'before_level_max_qty' => '-',
|
51 |
+
'last_level_max_qty' => '+',
|
52 |
'replace_with_currency' => 'no',
|
53 |
'hide_if_zero_quantity' => 'no',
|
54 |
'table_format' => 'horizontal',
|
86 |
/**
|
87 |
* wcj_wholesale_price_table (global only).
|
88 |
*
|
89 |
+
* @version 2.5.7
|
90 |
* @since 2.4.8
|
91 |
*/
|
92 |
function wcj_wholesale_price_table( $atts ) {
|
118 |
$data_qty = array();
|
119 |
$data_discount = array();
|
120 |
$columns_styles = array();
|
121 |
+
$i = -1;
|
122 |
foreach ( $wholesale_price_levels as $wholesale_price_level ) {
|
123 |
+
$i++;
|
124 |
if ( 0 == $wholesale_price_level['quantity'] && 'yes' === $atts['hide_if_zero_quantity'] ) {
|
125 |
continue;
|
126 |
}
|
127 |
+
$level_max_qty = ( isset( $wholesale_price_levels[ $i + 1 ]['quantity'] ) ) ? $atts['before_level_max_qty'] . ( $wholesale_price_levels[ $i + 1 ]['quantity'] - 1 ) : $atts['last_level_max_qty'];
|
128 |
+
$data_qty[] = str_replace(
|
129 |
+
array( '%level_qty%', '%level_min_qty%', '%level_max_qty%' ), // %level_qty% is deprecated
|
130 |
+
array( $wholesale_price_level['quantity'], $wholesale_price_level['quantity'], $level_max_qty ),
|
131 |
+
$atts['heading_format']
|
132 |
+
);
|
133 |
$data_discount[] = ( 'fixed' === get_option( 'wcj_wholesale_price_discount_type', 'percent' ) )
|
134 |
? '-' . wc_price( $wholesale_price_level['discount'] ) : '-' . $wholesale_price_level['discount'] . '%';
|
135 |
$columns_styles[] = 'text-align: center;';
|
includes/shortcodes/class-wcj-order-items-shortcodes.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Order Items Shortcodes class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -29,22 +29,24 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
29 |
/**
|
30 |
* add_extra_atts.
|
31 |
*
|
32 |
-
* @version 2.5.
|
33 |
*/
|
34 |
function add_extra_atts( $atts ) {
|
35 |
$modified_atts = array_merge( array(
|
36 |
-
'order_id'
|
37 |
-
'hide_currency'
|
38 |
-
'table_class'
|
39 |
-
'shipping_as_item'
|
40 |
-
'discount_as_item'
|
41 |
-
'columns'
|
42 |
-
'columns_titles'
|
43 |
-
'columns_styles'
|
44 |
-
'tax_percent_format'
|
45 |
-
'item_image_width'
|
46 |
-
'item_image_height'
|
47 |
-
'
|
|
|
|
|
48 |
'style_item_name_variation' => 'font-size:smaller;',
|
49 |
), $atts );
|
50 |
return $modified_atts;
|
@@ -52,10 +54,18 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
52 |
|
53 |
/**
|
54 |
* init_atts.
|
|
|
|
|
55 |
*/
|
56 |
function init_atts( $atts ) {
|
57 |
$this->the_order = ( 'shop_order' === get_post_type( $atts['order_id'] ) ) ? wc_get_order( $atts['order_id'] ) : null;
|
58 |
if ( ! $this->the_order ) return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
return $atts;
|
60 |
}
|
61 |
|
@@ -126,10 +136,28 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
126 |
return false;
|
127 |
} */
|
128 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
/**
|
130 |
* wcj_order_items_table.
|
131 |
*
|
132 |
-
* @version 2.5.
|
133 |
*/
|
134 |
function wcj_order_items_table( $atts, $content = '' ) {
|
135 |
|
@@ -143,7 +171,9 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
143 |
// Check all possible args
|
144 |
$columns_titles = ( '' == $atts['columns_titles'] ) ? array() : explode( '|', $atts['columns_titles'] );
|
145 |
$columns_styles = ( '' == $atts['columns_styles'] ) ? array() : explode( '|', $atts['columns_styles'] );
|
146 |
-
|
|
|
|
|
147 |
|
148 |
// The Items
|
149 |
$the_items = $the_order->get_items();
|
@@ -192,13 +222,27 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
192 |
$column = substr( $column, 0, $pos );
|
193 |
}
|
194 |
switch ( $column ) {
|
|
|
195 |
case 'debug':
|
196 |
$data[ $item_counter ][] = print_r( $item, true );
|
197 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
case 'item_number':
|
199 |
$data[ $item_counter ][] = $item_counter;
|
200 |
break;
|
201 |
case 'item_name':
|
|
|
202 |
//$data[ $item_counter ][] = ( true === $item['is_custom'] ) ? $item['name'] : $the_product->get_title();
|
203 |
if ( true === $item['is_custom'] ) {
|
204 |
$data[ $item_counter ][] = $item['name'];
|
@@ -229,6 +273,7 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
229 |
}
|
230 |
break;
|
231 |
case 'item_attribute':
|
|
|
232 |
if ( isset( $column_param ) && '' != $column_param && is_object( $the_product ) ) {
|
233 |
$data[ $item_counter ][] = $the_product->get_attribute( $column_param );
|
234 |
} else {
|
@@ -236,8 +281,7 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
236 |
}
|
237 |
break;
|
238 |
case 'item_excerpt':
|
239 |
-
case '
|
240 |
-
case 'item_short_description':
|
241 |
if ( true === $item['is_custom'] ) {
|
242 |
$data[ $item_counter ][] = '';
|
243 |
} else {
|
@@ -249,20 +293,27 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
249 |
$data[ $item_counter ][] = $the_excerpt;
|
250 |
}
|
251 |
break;
|
|
|
|
|
|
|
|
|
252 |
case 'item_variation':
|
|
|
253 |
$data[ $item_counter ][] = ( is_object( $the_product ) && $the_product->is_type( 'variation' ) )
|
254 |
? str_replace( 'pa_', '', urldecode( wc_get_formatted_variation( $the_product->variation_data, true ) ) ) : '';
|
255 |
break;
|
256 |
case 'item_thumbnail':
|
|
|
257 |
//$data[ $item_counter ][] = $the_product->get_image();
|
258 |
$image_id = ( true === $item['is_custom'] || ! is_object( $the_product ) ) ? 0 : $the_product->get_image_id();
|
259 |
$image_src = ( 0 != $image_id ) ? wp_get_attachment_image_src( $image_id ) : wc_placeholder_img_src();
|
260 |
if ( is_array( $image_src ) ) $image_src = $image_src[0];
|
261 |
-
$maybe_width = ( 0 != $atts['
|
262 |
-
$maybe_height = ( 0 != $atts['
|
263 |
$data[ $item_counter ][] = '<img src="' . $image_src . '"' . $maybe_width . $maybe_height . '>';
|
264 |
break;
|
265 |
case 'item_sku':
|
|
|
266 |
$data[ $item_counter ][] = ( true === $item['is_custom'] || ! is_object( $the_product ) ) ? '' : $the_product->get_sku();
|
267 |
break;
|
268 |
case 'item_quantity':
|
@@ -325,10 +376,23 @@ class WCJ_Order_Items_Shortcodes extends WCJ_Shortcodes {
|
|
325 |
$data[ $item_counter ][] = sprintf( $atts['tax_percent_format'], $line_tax_percent );
|
326 |
break; */
|
327 |
case 'item_weight':
|
|
|
328 |
$data[ $item_counter ][] = ( true === $item['is_custom'] || ! is_object( $the_product ) ) ? '' : $the_product->get_weight();
|
329 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
default:
|
331 |
-
$data[ $item_counter ][] = '';
|
332 |
}
|
333 |
}
|
334 |
}
|
4 |
*
|
5 |
* The WooCommerce Jetpack Order Items Shortcodes class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
29 |
/**
|
30 |
* add_extra_atts.
|
31 |
*
|
32 |
+
* @version 2.5.7
|
33 |
*/
|
34 |
function add_extra_atts( $atts ) {
|
35 |
$modified_atts = array_merge( array(
|
36 |
+
'order_id' => ( isset( $_GET['order_id'] ) ) ? $_GET['order_id'] : get_the_ID(),
|
37 |
+
'hide_currency' => 'no',
|
38 |
+
'table_class' => '',
|
39 |
+
'shipping_as_item' => '', //__( 'Shipping', 'woocommerce-jetpack' ),
|
40 |
+
'discount_as_item' => '', //__( 'Discount', 'woocommerce-jetpack' ),
|
41 |
+
'columns' => '',
|
42 |
+
'columns_titles' => '',
|
43 |
+
'columns_styles' => '',
|
44 |
+
'tax_percent_format' => '%.2f %%',
|
45 |
+
'item_image_width' => 0, // deprecated
|
46 |
+
'item_image_height' => 0, // deprecated
|
47 |
+
'product_image_width' => 0,
|
48 |
+
'product_image_height' => 0,
|
49 |
+
'price_prefix' => '',
|
50 |
'style_item_name_variation' => 'font-size:smaller;',
|
51 |
), $atts );
|
52 |
return $modified_atts;
|
54 |
|
55 |
/**
|
56 |
* init_atts.
|
57 |
+
*
|
58 |
+
* @version 2.5.7
|
59 |
*/
|
60 |
function init_atts( $atts ) {
|
61 |
$this->the_order = ( 'shop_order' === get_post_type( $atts['order_id'] ) ) ? wc_get_order( $atts['order_id'] ) : null;
|
62 |
if ( ! $this->the_order ) return false;
|
63 |
+
if ( 0 != $atts['item_image_width'] ) {
|
64 |
+
$atts['product_image_width'] = $atts['item_image_width'];
|
65 |
+
}
|
66 |
+
if ( 0 != $atts['item_image_height'] ) {
|
67 |
+
$atts['product_image_height'] = $atts['item_image_height'];
|
68 |
+
}
|
69 |
return $atts;
|
70 |
}
|
71 |
|
136 |
return false;
|
137 |
} */
|
138 |
|
139 |
+
/**
|
140 |
+
* get_tax_class_name.
|
141 |
+
*
|
142 |
+
* @version 2.5.7
|
143 |
+
* @since 2.5.7
|
144 |
+
*/
|
145 |
+
function get_tax_class_name( $tax_class ) {
|
146 |
+
$tax_classes = WC_Tax::get_tax_classes();
|
147 |
+
$classes_names = array();
|
148 |
+
$classes_names[''] = __( 'Standard', 'woocommerce' );
|
149 |
+
if ( ! empty( $tax_classes ) ) {
|
150 |
+
foreach ( $tax_classes as $class ) {
|
151 |
+
$classes_names[ sanitize_title( $class ) ] = esc_html( $class );
|
152 |
+
}
|
153 |
+
}
|
154 |
+
return ( isset( $classes_names[ $tax_class ] ) ) ? $classes_names[ $tax_class ] : '';
|
155 |
+
}
|
156 |
+
|
157 |
/**
|
158 |
* wcj_order_items_table.
|
159 |
*
|
160 |
+
* @version 2.5.7
|
161 |
*/
|
162 |
function wcj_order_items_table( $atts, $content = '' ) {
|
163 |
|
171 |
// Check all possible args
|
172 |
$columns_titles = ( '' == $atts['columns_titles'] ) ? array() : explode( '|', $atts['columns_titles'] );
|
173 |
$columns_styles = ( '' == $atts['columns_styles'] ) ? array() : explode( '|', $atts['columns_styles'] );
|
174 |
+
/* if ( $columns_total_number !== count( $columns_titles ) || $columns_total_number !== count( $columns_styles ) ) {
|
175 |
+
return __( 'Please recheck that there is the same number of columns in "columns", "columns_titles" and "columns_styles" attributes.', 'woocommerce-jetpack' );
|
176 |
+
} */
|
177 |
|
178 |
// The Items
|
179 |
$the_items = $the_order->get_items();
|
222 |
$column = substr( $column, 0, $pos );
|
223 |
}
|
224 |
switch ( $column ) {
|
225 |
+
case 'item_debug':
|
226 |
case 'debug':
|
227 |
$data[ $item_counter ][] = print_r( $item, true );
|
228 |
break;
|
229 |
+
case 'item_regular_price':
|
230 |
+
case 'product_regular_price':
|
231 |
+
$data[ $item_counter ][] = ( is_object( $the_product ) ) ? $this->wcj_price_shortcode( $the_product->get_regular_price(), $atts ) : '';
|
232 |
+
break;
|
233 |
+
case 'item_sale_price':
|
234 |
+
case 'product_sale_price':
|
235 |
+
$data[ $item_counter ][] = ( is_object( $the_product ) ) ? $this->wcj_price_shortcode( $the_product->get_sale_price(), $atts ) : '';
|
236 |
+
break;
|
237 |
+
case 'item_tax_class':
|
238 |
+
case 'tax_class':
|
239 |
+
$data[ $item_counter ][] = ( isset( $item['tax_class'] ) ) ? $this->get_tax_class_name( $item['tax_class'] ) : '';
|
240 |
+
break;
|
241 |
case 'item_number':
|
242 |
$data[ $item_counter ][] = $item_counter;
|
243 |
break;
|
244 |
case 'item_name':
|
245 |
+
case 'product_name': // because of possible variation
|
246 |
//$data[ $item_counter ][] = ( true === $item['is_custom'] ) ? $item['name'] : $the_product->get_title();
|
247 |
if ( true === $item['is_custom'] ) {
|
248 |
$data[ $item_counter ][] = $item['name'];
|
273 |
}
|
274 |
break;
|
275 |
case 'item_attribute':
|
276 |
+
case 'product_attribute':
|
277 |
if ( isset( $column_param ) && '' != $column_param && is_object( $the_product ) ) {
|
278 |
$data[ $item_counter ][] = $the_product->get_attribute( $column_param );
|
279 |
} else {
|
281 |
}
|
282 |
break;
|
283 |
case 'item_excerpt':
|
284 |
+
case 'product_excerpt':
|
|
|
285 |
if ( true === $item['is_custom'] ) {
|
286 |
$data[ $item_counter ][] = '';
|
287 |
} else {
|
293 |
$data[ $item_counter ][] = $the_excerpt;
|
294 |
}
|
295 |
break;
|
296 |
+
case 'item_short_description':
|
297 |
+
case 'product_short_description':
|
298 |
+
$data[ $item_counter ][] = ( true === $item['is_custom'] ) ? '' : $this->the_product->post->post_excerpt;
|
299 |
+
break;
|
300 |
case 'item_variation':
|
301 |
+
case 'product_variation':
|
302 |
$data[ $item_counter ][] = ( is_object( $the_product ) && $the_product->is_type( 'variation' ) )
|
303 |
? str_replace( 'pa_', '', urldecode( wc_get_formatted_variation( $the_product->variation_data, true ) ) ) : '';
|
304 |
break;
|
305 |
case 'item_thumbnail':
|
306 |
+
case 'product_thumbnail':
|
307 |
//$data[ $item_counter ][] = $the_product->get_image();
|
308 |
$image_id = ( true === $item['is_custom'] || ! is_object( $the_product ) ) ? 0 : $the_product->get_image_id();
|
309 |
$image_src = ( 0 != $image_id ) ? wp_get_attachment_image_src( $image_id ) : wc_placeholder_img_src();
|
310 |
if ( is_array( $image_src ) ) $image_src = $image_src[0];
|
311 |
+
$maybe_width = ( 0 != $atts['product_image_width'] ) ? ' width="' . $atts['product_image_width'] . '"' : '';
|
312 |
+
$maybe_height = ( 0 != $atts['product_image_height'] ) ? ' height="' . $atts['product_image_height'] . '"' : '';
|
313 |
$data[ $item_counter ][] = '<img src="' . $image_src . '"' . $maybe_width . $maybe_height . '>';
|
314 |
break;
|
315 |
case 'item_sku':
|
316 |
+
case 'product_sku':
|
317 |
$data[ $item_counter ][] = ( true === $item['is_custom'] || ! is_object( $the_product ) ) ? '' : $the_product->get_sku();
|
318 |
break;
|
319 |
case 'item_quantity':
|
376 |
$data[ $item_counter ][] = sprintf( $atts['tax_percent_format'], $line_tax_percent );
|
377 |
break; */
|
378 |
case 'item_weight':
|
379 |
+
case 'product_weight':
|
380 |
$data[ $item_counter ][] = ( true === $item['is_custom'] || ! is_object( $the_product ) ) ? '' : $the_product->get_weight();
|
381 |
break;
|
382 |
+
case 'item_width':
|
383 |
+
case 'product_width':
|
384 |
+
$data[ $item_counter ][] = ( true === $item['is_custom'] || ! is_object( $the_product ) ) ? '' : $the_product->get_width();
|
385 |
+
break;
|
386 |
+
case 'item_height':
|
387 |
+
case 'product_height':
|
388 |
+
$data[ $item_counter ][] = ( true === $item['is_custom'] || ! is_object( $the_product ) ) ? '' : $the_product->get_height();
|
389 |
+
break;
|
390 |
+
case 'item_length':
|
391 |
+
case 'product_length':
|
392 |
+
$data[ $item_counter ][] = ( true === $item['is_custom'] || ! is_object( $the_product ) ) ? '' : $the_product->get_length();
|
393 |
+
break;
|
394 |
default:
|
395 |
+
$data[ $item_counter ][] = ''; // $column;
|
396 |
}
|
397 |
}
|
398 |
}
|
includes/shortcodes/class-wcj-orders-shortcodes.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Orders Shortcodes class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,7 +17,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.5.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
@@ -36,6 +36,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
36 |
'wcj_order_custom_meta_field',
|
37 |
'wcj_order_meta',
|
38 |
'wcj_order_items_meta',
|
|
|
39 |
'wcj_order_subtotal',
|
40 |
'wcj_order_subtotal_plus_shipping',
|
41 |
'wcj_order_total_discount',
|
@@ -62,10 +63,14 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
62 |
'wcj_order_payment_method',
|
63 |
'wcj_order_payment_method_transaction_id',
|
64 |
'wcj_order_shipping_method',
|
65 |
-
'wcj_order_items_total_weight',
|
66 |
'wcj_order_items_total_quantity',
|
67 |
'wcj_order_items_total_number',
|
68 |
'wcj_order_function',
|
|
|
|
|
|
|
|
|
69 |
);
|
70 |
|
71 |
parent::__construct();
|
@@ -74,7 +79,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
74 |
/**
|
75 |
* add_extra_atts.
|
76 |
*
|
77 |
-
* @version 2.5.
|
78 |
*/
|
79 |
function add_extra_atts( $atts ) {
|
80 |
$modified_atts = array_merge( array(
|
@@ -93,6 +98,9 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
93 |
'lang' => 'EN',
|
94 |
'unique_only' => 'no',
|
95 |
'function_name' => '',
|
|
|
|
|
|
|
96 |
), $atts );
|
97 |
|
98 |
return $modified_atts;
|
@@ -258,16 +266,85 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
258 |
}
|
259 |
|
260 |
/**
|
261 |
-
*
|
|
|
|
|
|
|
262 |
*/
|
263 |
-
function
|
264 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
$the_items = $this->the_order->get_items();
|
266 |
-
foreach( $the_items as $
|
267 |
-
$
|
268 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
269 |
}
|
270 |
-
return ( 0 == $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
271 |
}
|
272 |
|
273 |
/**
|
@@ -313,6 +390,48 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
313 |
return $this->the_order->billing_phone;
|
314 |
}
|
315 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
/**
|
317 |
* wcj_order_items_meta.
|
318 |
*
|
@@ -354,7 +473,7 @@ class WCJ_Orders_Shortcodes extends WCJ_Shortcodes {
|
|
354 |
*
|
355 |
* @version 2.3.0
|
356 |
* @since 2.2.9
|
357 |
-
* @
|
358 |
*/
|
359 |
function wcj_order_custom_meta_field( $atts ) {
|
360 |
return $this->wcj_order_checkout_field( $atts );
|
4 |
*
|
5 |
* The WooCommerce Jetpack Orders Shortcodes class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
36 |
'wcj_order_custom_meta_field',
|
37 |
'wcj_order_meta',
|
38 |
'wcj_order_items_meta',
|
39 |
+
'wcj_order_items',
|
40 |
'wcj_order_subtotal',
|
41 |
'wcj_order_subtotal_plus_shipping',
|
42 |
'wcj_order_total_discount',
|
63 |
'wcj_order_payment_method',
|
64 |
'wcj_order_payment_method_transaction_id',
|
65 |
'wcj_order_shipping_method',
|
66 |
+
'wcj_order_items_total_weight', // deprecated - use 'wcj_order_total_weight' instead
|
67 |
'wcj_order_items_total_quantity',
|
68 |
'wcj_order_items_total_number',
|
69 |
'wcj_order_function',
|
70 |
+
'wcj_order_total_width',
|
71 |
+
'wcj_order_total_height',
|
72 |
+
'wcj_order_total_length',
|
73 |
+
'wcj_order_total_weight',
|
74 |
);
|
75 |
|
76 |
parent::__construct();
|
79 |
/**
|
80 |
* add_extra_atts.
|
81 |
*
|
82 |
+
* @version 2.5.7
|
83 |
*/
|
84 |
function add_extra_atts( $atts ) {
|
85 |
$modified_atts = array_merge( array(
|
98 |
'lang' => 'EN',
|
99 |
'unique_only' => 'no',
|
100 |
'function_name' => '',
|
101 |
+
'sep' => ', ',
|
102 |
+
'item_number' => 'all',
|
103 |
+
'field' => 'name',
|
104 |
), $atts );
|
105 |
|
106 |
return $modified_atts;
|
266 |
}
|
267 |
|
268 |
/**
|
269 |
+
* wcj_order_total_width
|
270 |
+
*
|
271 |
+
* @version 2.5.7
|
272 |
+
* @since 2.5.7
|
273 |
*/
|
274 |
+
function wcj_order_total_width( $atts ) {
|
275 |
+
return $this->get_order_total( $atts, 'width' );
|
276 |
+
}
|
277 |
+
|
278 |
+
/**
|
279 |
+
* wcj_order_total_height
|
280 |
+
*
|
281 |
+
* @version 2.5.7
|
282 |
+
* @since 2.5.7
|
283 |
+
*/
|
284 |
+
function wcj_order_total_height( $atts ) {
|
285 |
+
return $this->get_order_total( $atts, 'height' );
|
286 |
+
}
|
287 |
+
|
288 |
+
/**
|
289 |
+
* wcj_order_total_length
|
290 |
+
*
|
291 |
+
* @version 2.5.7
|
292 |
+
* @since 2.5.7
|
293 |
+
*/
|
294 |
+
function wcj_order_total_length( $atts ) {
|
295 |
+
return $this->get_order_total( $atts, 'length' );
|
296 |
+
}
|
297 |
+
|
298 |
+
/**
|
299 |
+
* wcj_order_total_weight
|
300 |
+
*
|
301 |
+
* @version 2.5.7
|
302 |
+
* @since 2.5.7
|
303 |
+
*/
|
304 |
+
function wcj_order_total_weight( $atts ) {
|
305 |
+
return $this->get_order_total( $atts, 'weight' );
|
306 |
+
}
|
307 |
+
|
308 |
+
/**
|
309 |
+
* get_order_total
|
310 |
+
*
|
311 |
+
* @version 2.5.7
|
312 |
+
* @since 2.5.7
|
313 |
+
*/
|
314 |
+
function get_order_total( $atts, $param ) {
|
315 |
+
$total = 0;
|
316 |
$the_items = $this->the_order->get_items();
|
317 |
+
foreach ( $the_items as $item_id => $item ) {
|
318 |
+
$product_id = ( 0 != $item['variation_id'] ) ? $item['variation_id'] : $item['product_id'];
|
319 |
+
$_product = wc_get_product( $product_id );
|
320 |
+
if ( $_product ) {
|
321 |
+
switch ( $param ) {
|
322 |
+
case 'width':
|
323 |
+
$total += ( $item['qty'] * $_product->get_width() );
|
324 |
+
break;
|
325 |
+
case 'height':
|
326 |
+
$total += ( $item['qty'] * $_product->get_height() );
|
327 |
+
break;
|
328 |
+
case 'length':
|
329 |
+
$total += ( $item['qty'] * $_product->get_length() );
|
330 |
+
break;
|
331 |
+
case 'weight':
|
332 |
+
$total += ( $item['qty'] * $_product->get_weight() );
|
333 |
+
break;
|
334 |
+
}
|
335 |
+
}
|
336 |
}
|
337 |
+
return ( 0 == $total && 'yes' === $atts['hide_if_zero'] ) ? '' : $total;
|
338 |
+
}
|
339 |
+
|
340 |
+
/**
|
341 |
+
* wcj_order_items_total_weight.
|
342 |
+
*
|
343 |
+
* @version 2.5.7
|
344 |
+
* @deprecated 2.5.7
|
345 |
+
*/
|
346 |
+
function wcj_order_items_total_weight( $atts ) {
|
347 |
+
return $this->get_order_total( $atts, 'weight' );
|
348 |
}
|
349 |
|
350 |
/**
|
390 |
return $this->the_order->billing_phone;
|
391 |
}
|
392 |
|
393 |
+
/**
|
394 |
+
* wcj_order_items
|
395 |
+
*
|
396 |
+
* @version 2.5.7
|
397 |
+
* @since 2.5.7
|
398 |
+
*/
|
399 |
+
function wcj_order_items( $atts ) {
|
400 |
+
$items = array();
|
401 |
+
$the_items = $this->the_order->get_items();
|
402 |
+
foreach ( $the_items as $item_id => $item ) {
|
403 |
+
switch ( $atts['field'] ) {
|
404 |
+
case 'debug':
|
405 |
+
$items[] = '<pre>' . print_r( $item, true ) . '</pre>';
|
406 |
+
break;
|
407 |
+
default: // case 'name' etc.
|
408 |
+
$items[] = ( isset( $item[ $atts['field'] ] ) ) ? $item[ $atts['field'] ] : '';
|
409 |
+
break;
|
410 |
+
}
|
411 |
+
}
|
412 |
+
if ( empty( $items ) ) {
|
413 |
+
return '';
|
414 |
+
}
|
415 |
+
if ( 'all' === $atts['item_number'] ) {
|
416 |
+
return implode( $atts['sep'], $items );
|
417 |
+
} else {
|
418 |
+
switch ( $atts['item_number'] ) {
|
419 |
+
case 'first':
|
420 |
+
return current( $items );
|
421 |
+
case 'last':
|
422 |
+
return end( $items );
|
423 |
+
default:
|
424 |
+
$item_number = intval( $atts['item_number'] ) - 1;
|
425 |
+
if ( $item_number < 0 ) {
|
426 |
+
$item_number = 0;
|
427 |
+
} elseif ( $item_number >= count( $items ) ) {
|
428 |
+
$item_number = count( $items ) - 1;
|
429 |
+
}
|
430 |
+
return $items[ $item_number ];
|
431 |
+
}
|
432 |
+
}
|
433 |
+
}
|
434 |
+
|
435 |
/**
|
436 |
* wcj_order_items_meta.
|
437 |
*
|
473 |
*
|
474 |
* @version 2.3.0
|
475 |
* @since 2.2.9
|
476 |
+
* @deprecated
|
477 |
*/
|
478 |
function wcj_order_custom_meta_field( $atts ) {
|
479 |
return $this->wcj_order_checkout_field( $atts );
|
includes/shortcodes/class-wcj-products-shortcodes.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Products Shortcodes class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -17,19 +17,23 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
-
* @version 2.5.
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
24 |
$this->the_shortcodes = array(
|
25 |
'wcj_product_image',
|
|
|
|
|
26 |
'wcj_product_price',
|
27 |
'wcj_product_wholesale_price_table', // WooCommerce Wholesale Price
|
28 |
'wcj_product_sku',
|
29 |
'wcj_product_title',
|
30 |
'wcj_product_weight',
|
31 |
'wcj_product_excerpt',
|
|
|
32 |
'wcj_product_custom_field',
|
|
|
33 |
'wcj_product_you_save',
|
34 |
'wcj_product_you_save_percent',
|
35 |
'wcj_product_tags',
|
@@ -45,6 +49,8 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
45 |
'wcj_product_tax_class',
|
46 |
'wcj_product_average_rating',
|
47 |
'wcj_product_categories',
|
|
|
|
|
48 |
'wcj_product_list_attributes',
|
49 |
'wcj_product_list_attribute',
|
50 |
'wcj_product_stock_quantity',
|
@@ -61,9 +67,13 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
61 |
'image_size' => 'shop_thumbnail',
|
62 |
'multiply_by' => '',
|
63 |
'hide_currency' => 'no',
|
64 |
-
'excerpt_length' => 0,
|
|
|
|
|
65 |
'name' => '',
|
66 |
-
'heading_format' => 'from %
|
|
|
|
|
67 |
'price_row_format' => '<del>%old_price%</del> %price%',
|
68 |
'sep' => ', ',
|
69 |
'add_links' => 'yes',
|
@@ -233,41 +243,30 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
233 |
/**
|
234 |
* wcj_product_price_excluding_tax.
|
235 |
*
|
236 |
-
* @version 2.
|
237 |
* @since 2.4.0
|
238 |
*/
|
239 |
function wcj_product_price_excluding_tax( $atts ) {
|
240 |
-
|
241 |
-
// Variable
|
242 |
-
$prices = $this->the_product->get_variation_prices( false );
|
243 |
-
$min_product_id = key( $prices['price'] );
|
244 |
-
end( $prices['price'] );
|
245 |
-
$max_product_id = key( $prices['price'] );
|
246 |
-
if ( 0 != $min_product_id && 0 != $max_product_id ) {
|
247 |
-
$min_variation_product = wc_get_product( $min_product_id );
|
248 |
-
$max_variation_product = wc_get_product( $max_product_id );
|
249 |
-
$min = $min_variation_product->get_price_excluding_tax();
|
250 |
-
$max = $max_variation_product->get_price_excluding_tax();
|
251 |
-
if ( 'yes' !== $atts['hide_currency'] ) {
|
252 |
-
$min = wc_price( $min );
|
253 |
-
$max = wc_price( $max );
|
254 |
-
}
|
255 |
-
return ( $min != $max ) ? sprintf( '%s-%s', $min, $max ) : $min;
|
256 |
-
}
|
257 |
-
} else {
|
258 |
-
// Simple etc.
|
259 |
-
$the_price = $this->the_product->get_price_excluding_tax();
|
260 |
-
return ( 'yes' === $atts['hide_currency'] ) ? $the_price : wc_price( $the_price );
|
261 |
-
}
|
262 |
}
|
263 |
|
264 |
/**
|
265 |
* wcj_product_price_including_tax.
|
266 |
*
|
267 |
-
* @version 2.
|
268 |
* @since 2.4.0
|
269 |
*/
|
270 |
function wcj_product_price_including_tax( $atts ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
271 |
if ( $this->the_product->is_type( 'variable' ) ) {
|
272 |
// Variable
|
273 |
$prices = $this->the_product->get_variation_prices( false );
|
@@ -277,8 +276,17 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
277 |
if ( 0 != $min_product_id && 0 != $max_product_id ) {
|
278 |
$min_variation_product = wc_get_product( $min_product_id );
|
279 |
$max_variation_product = wc_get_product( $max_product_id );
|
280 |
-
|
281 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
if ( 'yes' !== $atts['hide_currency'] ) {
|
283 |
$min = wc_price( $min );
|
284 |
$max = wc_price( $max );
|
@@ -287,7 +295,14 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
287 |
}
|
288 |
} else {
|
289 |
// Simple etc.
|
290 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
return ( 'yes' === $atts['hide_currency'] ) ? $the_price : wc_price( $the_price );
|
292 |
}
|
293 |
}
|
@@ -524,6 +539,17 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
524 |
}
|
525 |
}
|
526 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
527 |
/**
|
528 |
* Get product custom field.
|
529 |
*
|
@@ -532,7 +558,6 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
532 |
function wcj_product_custom_field( $atts ) {
|
533 |
$product_custom_fields = get_post_custom( $atts['product_id'] );
|
534 |
return ( isset( $product_custom_fields[ $atts['name'] ][0] ) ) ? $product_custom_fields[ $atts['name'] ][0] : '';
|
535 |
-
//return get_post_meta( $atts['product_id'], $atts['name'], true );
|
536 |
}
|
537 |
|
538 |
/**
|
@@ -568,7 +593,7 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
568 |
/**
|
569 |
* wcj_product_wholesale_price_table.
|
570 |
*
|
571 |
-
* @version 2.5.
|
572 |
*/
|
573 |
function wcj_product_wholesale_price_table( $atts ) {
|
574 |
|
@@ -610,8 +635,9 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
610 |
$data_price = array();
|
611 |
$data_discount = array();
|
612 |
$columns_styles = array();
|
|
|
613 |
foreach ( $wholesale_price_levels as $wholesale_price_level ) {
|
614 |
-
|
615 |
if ( 0 == $wholesale_price_level['quantity'] && 'yes' === $atts['hide_if_zero_quantity'] ) {
|
616 |
continue;
|
617 |
}
|
@@ -651,34 +677,44 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
651 |
// Simple etc.
|
652 |
$get_price_method = 'get_price_' . get_option( 'woocommerce_tax_display_shop' ) . 'uding_tax';
|
653 |
$the_price = $this->the_product->$get_price_method();
|
|
|
654 |
$the_price_original = $the_price;
|
655 |
-
if ( '
|
|
|
|
|
656 |
$the_price = $the_price - $wholesale_price_level['discount'];
|
657 |
-
} else {
|
658 |
$coefficient = 1.0 - ( $wholesale_price_level['discount'] / 100.0 );
|
659 |
$the_price = $the_price * $coefficient;
|
660 |
}
|
|
|
|
|
661 |
if ( 'yes' !== $atts['hide_currency'] ) {
|
662 |
$the_price = wc_price( $the_price );
|
663 |
$the_price_original = wc_price( $the_price_original );
|
664 |
}
|
665 |
}
|
666 |
|
667 |
-
$
|
|
|
|
|
|
|
|
|
|
|
668 |
if ( 'yes' === $atts['add_price_row'] ) {
|
669 |
$data_price[] = str_replace( array( '%old_price%', '%price%' ), array( $the_price_original, $the_price ), $atts['price_row_format'] );
|
670 |
}
|
671 |
if ( 'yes' === $atts['add_percent_row'] ) {
|
672 |
-
if ( '
|
673 |
-
// todo (maybe)
|
674 |
-
} else {
|
675 |
$data_discount[] = '-' . $wholesale_price_level['discount'] . '%';
|
|
|
|
|
676 |
}
|
677 |
}
|
678 |
if ( 'yes' === $atts['add_discount_row'] ) {
|
679 |
if ( 'fixed' === $discount_type ) {
|
680 |
$data_discount[] = '-' . wc_price( $wholesale_price_level['discount'] );
|
681 |
-
} else {
|
682 |
// todo (maybe)
|
683 |
}
|
684 |
}
|
@@ -707,30 +743,59 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
707 |
return wcj_get_table_html( $table_rows, array( 'table_class' => 'wcj_product_wholesale_price_table', 'columns_styles' => $columns_styles, 'table_heading_type' => $atts['table_format'] ) );
|
708 |
}
|
709 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
710 |
/**
|
711 |
* For wcj_product_excerpt function.
|
|
|
|
|
712 |
*/
|
713 |
-
|
714 |
-
|
715 |
-
return $product_excerpt_length;
|
716 |
}
|
|
|
717 |
/**
|
718 |
* Get product excerpt.
|
719 |
*
|
720 |
-
* @
|
|
|
721 |
*/
|
722 |
function wcj_product_excerpt( $atts ) {
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
734 |
return $the_excerpt;
|
735 |
}
|
736 |
|
@@ -768,6 +833,60 @@ class WCJ_Products_Shortcodes extends WCJ_Shortcodes {
|
|
768 |
function wcj_product_image( $atts ) {
|
769 |
return $this->the_product->get_image( $atts['image_size'] );
|
770 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
771 |
}
|
772 |
|
773 |
endif;
|
4 |
*
|
5 |
* The WooCommerce Jetpack Products Shortcodes class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
17 |
/**
|
18 |
* Constructor.
|
19 |
*
|
20 |
+
* @version 2.5.7
|
21 |
*/
|
22 |
public function __construct() {
|
23 |
|
24 |
$this->the_shortcodes = array(
|
25 |
'wcj_product_image',
|
26 |
+
'wcj_product_image_url',
|
27 |
+
'wcj_product_url',
|
28 |
'wcj_product_price',
|
29 |
'wcj_product_wholesale_price_table', // WooCommerce Wholesale Price
|
30 |
'wcj_product_sku',
|
31 |
'wcj_product_title',
|
32 |
'wcj_product_weight',
|
33 |
'wcj_product_excerpt',
|
34 |
+
'wcj_product_short_description',
|
35 |
'wcj_product_custom_field',
|
36 |
+
'wcj_product_meta',
|
37 |
'wcj_product_you_save',
|
38 |
'wcj_product_you_save_percent',
|
39 |
'wcj_product_tags',
|
49 |
'wcj_product_tax_class',
|
50 |
'wcj_product_average_rating',
|
51 |
'wcj_product_categories',
|
52 |
+
'wcj_product_categories_names',
|
53 |
+
'wcj_product_categories_urls',
|
54 |
'wcj_product_list_attributes',
|
55 |
'wcj_product_list_attribute',
|
56 |
'wcj_product_stock_quantity',
|
67 |
'image_size' => 'shop_thumbnail',
|
68 |
'multiply_by' => '',
|
69 |
'hide_currency' => 'no',
|
70 |
+
'excerpt_length' => 0, // deprecated
|
71 |
+
'length' => 0,
|
72 |
+
'apply_filters' => 'no',
|
73 |
'name' => '',
|
74 |
+
'heading_format' => 'from %level_min_qty% pcs.',
|
75 |
+
'before_level_max_qty' => '-',
|
76 |
+
'last_level_max_qty' => '+',
|
77 |
'price_row_format' => '<del>%old_price%</del> %price%',
|
78 |
'sep' => ', ',
|
79 |
'add_links' => 'yes',
|
243 |
/**
|
244 |
* wcj_product_price_excluding_tax.
|
245 |
*
|
246 |
+
* @version 2.5.7
|
247 |
* @since 2.4.0
|
248 |
*/
|
249 |
function wcj_product_price_excluding_tax( $atts ) {
|
250 |
+
return $this->get_product_price_including_or_excluding_tax( $atts, 'excluding' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
251 |
}
|
252 |
|
253 |
/**
|
254 |
* wcj_product_price_including_tax.
|
255 |
*
|
256 |
+
* @version 2.5.7
|
257 |
* @since 2.4.0
|
258 |
*/
|
259 |
function wcj_product_price_including_tax( $atts ) {
|
260 |
+
return $this->get_product_price_including_or_excluding_tax( $atts, 'including' );
|
261 |
+
}
|
262 |
+
|
263 |
+
/**
|
264 |
+
* get_product_price_including_or_excluding_tax.
|
265 |
+
*
|
266 |
+
* @version 2.5.7
|
267 |
+
* @since 2.5.7
|
268 |
+
*/
|
269 |
+
function get_product_price_including_or_excluding_tax( $atts, $including_or_excluding ) {
|
270 |
if ( $this->the_product->is_type( 'variable' ) ) {
|
271 |
// Variable
|
272 |
$prices = $this->the_product->get_variation_prices( false );
|
276 |
if ( 0 != $min_product_id && 0 != $max_product_id ) {
|
277 |
$min_variation_product = wc_get_product( $min_product_id );
|
278 |
$max_variation_product = wc_get_product( $max_product_id );
|
279 |
+
if ( 'including' === $including_or_excluding ) {
|
280 |
+
$min = $min_variation_product->get_price_including_tax();
|
281 |
+
$max = $max_variation_product->get_price_including_tax();
|
282 |
+
} else { // 'excluding'
|
283 |
+
$min = $min_variation_product->get_price_excluding_tax();
|
284 |
+
$max = $max_variation_product->get_price_excluding_tax();
|
285 |
+
}
|
286 |
+
if ( 0 != $atts['multiply_by'] && is_numeric( $atts['multiply_by'] ) ) {
|
287 |
+
$min = $min * $atts['multiply_by'];
|
288 |
+
$max = $max * $atts['multiply_by'];
|
289 |
+
}
|
290 |
if ( 'yes' !== $atts['hide_currency'] ) {
|
291 |
$min = wc_price( $min );
|
292 |
$max = wc_price( $max );
|
295 |
}
|
296 |
} else {
|
297 |
// Simple etc.
|
298 |
+
if ( 'including' === $including_or_excluding ) {
|
299 |
+
$the_price = $this->the_product->get_price_including_tax();
|
300 |
+
} else { // 'excluding'
|
301 |
+
$the_price = $this->the_product->get_price_excluding_tax();
|
302 |
+
}
|
303 |
+
if ( 0 != $atts['multiply_by'] && is_numeric( $atts['multiply_by'] ) ) {
|
304 |
+
$the_price = $the_price * $atts['multiply_by'];
|
305 |
+
}
|
306 |
return ( 'yes' === $atts['hide_currency'] ) ? $the_price : wc_price( $the_price );
|
307 |
}
|
308 |
}
|
539 |
}
|
540 |
}
|
541 |
|
542 |
+
/**
|
543 |
+
* Get product meta.
|
544 |
+
*
|
545 |
+
* @version 2.5.7
|
546 |
+
* @since 2.5.7
|
547 |
+
* @return string
|
548 |
+
*/
|
549 |
+
function wcj_product_meta( $atts ) {
|
550 |
+
return get_post_meta( $atts['product_id'], $atts['name'], true );
|
551 |
+
}
|
552 |
+
|
553 |
/**
|
554 |
* Get product custom field.
|
555 |
*
|
558 |
function wcj_product_custom_field( $atts ) {
|
559 |
$product_custom_fields = get_post_custom( $atts['product_id'] );
|
560 |
return ( isset( $product_custom_fields[ $atts['name'] ][0] ) ) ? $product_custom_fields[ $atts['name'] ][0] : '';
|
|
|
561 |
}
|
562 |
|
563 |
/**
|
593 |
/**
|
594 |
* wcj_product_wholesale_price_table.
|
595 |
*
|
596 |
+
* @version 2.5.7
|
597 |
*/
|
598 |
function wcj_product_wholesale_price_table( $atts ) {
|
599 |
|
635 |
$data_price = array();
|
636 |
$data_discount = array();
|
637 |
$columns_styles = array();
|
638 |
+
$i = -1;
|
639 |
foreach ( $wholesale_price_levels as $wholesale_price_level ) {
|
640 |
+
$i++;
|
641 |
if ( 0 == $wholesale_price_level['quantity'] && 'yes' === $atts['hide_if_zero_quantity'] ) {
|
642 |
continue;
|
643 |
}
|
677 |
// Simple etc.
|
678 |
$get_price_method = 'get_price_' . get_option( 'woocommerce_tax_display_shop' ) . 'uding_tax';
|
679 |
$the_price = $this->the_product->$get_price_method();
|
680 |
+
$the_price = apply_filters( 'wcj_product_wholesale_price_table_price_before', $the_price, $this->the_product );
|
681 |
$the_price_original = $the_price;
|
682 |
+
if ( 'price_directly' === $discount_type ) {
|
683 |
+
$the_price = $wholesale_price_level['discount'];
|
684 |
+
} elseif ( 'fixed' === $discount_type ) {
|
685 |
$the_price = $the_price - $wholesale_price_level['discount'];
|
686 |
+
} else { // 'percent'
|
687 |
$coefficient = 1.0 - ( $wholesale_price_level['discount'] / 100.0 );
|
688 |
$the_price = $the_price * $coefficient;
|
689 |
}
|
690 |
+
$the_price_original = apply_filters( 'wcj_product_wholesale_price_table_price_after', $the_price_original, $this->the_product );
|
691 |
+
$the_price = apply_filters( 'wcj_product_wholesale_price_table_price_after', $the_price, $this->the_product );
|
692 |
if ( 'yes' !== $atts['hide_currency'] ) {
|
693 |
$the_price = wc_price( $the_price );
|
694 |
$the_price_original = wc_price( $the_price_original );
|
695 |
}
|
696 |
}
|
697 |
|
698 |
+
$level_max_qty = ( isset( $wholesale_price_levels[ $i + 1 ]['quantity'] ) ) ? $atts['before_level_max_qty'] . ( $wholesale_price_levels[ $i + 1 ]['quantity'] - 1 ) : $atts['last_level_max_qty'];
|
699 |
+
$data_qty[] = str_replace(
|
700 |
+
array( '%level_qty%', '%level_min_qty%', '%level_max_qty%' ), // %level_qty% is deprecated
|
701 |
+
array( $wholesale_price_level['quantity'], $wholesale_price_level['quantity'], $level_max_qty ),
|
702 |
+
$atts['heading_format']
|
703 |
+
);
|
704 |
if ( 'yes' === $atts['add_price_row'] ) {
|
705 |
$data_price[] = str_replace( array( '%old_price%', '%price%' ), array( $the_price_original, $the_price ), $atts['price_row_format'] );
|
706 |
}
|
707 |
if ( 'yes' === $atts['add_percent_row'] ) {
|
708 |
+
if ( 'percent' === $discount_type ) {
|
|
|
|
|
709 |
$data_discount[] = '-' . $wholesale_price_level['discount'] . '%';
|
710 |
+
} else { // 'fixed' or 'price_directly'
|
711 |
+
// todo (maybe)
|
712 |
}
|
713 |
}
|
714 |
if ( 'yes' === $atts['add_discount_row'] ) {
|
715 |
if ( 'fixed' === $discount_type ) {
|
716 |
$data_discount[] = '-' . wc_price( $wholesale_price_level['discount'] );
|
717 |
+
} else { // 'percent' or 'price_directly'
|
718 |
// todo (maybe)
|
719 |
}
|
720 |
}
|
743 |
return wcj_get_table_html( $table_rows, array( 'table_class' => 'wcj_product_wholesale_price_table', 'columns_styles' => $columns_styles, 'table_heading_type' => $atts['table_format'] ) );
|
744 |
}
|
745 |
|
746 |
+
/**
|
747 |
+
* Get product short description.
|
748 |
+
*
|
749 |
+
* @version 2.5.7
|
750 |
+
* @since 2.5.7
|
751 |
+
* @return string
|
752 |
+
*/
|
753 |
+
function wcj_product_short_description( $atts ) {
|
754 |
+
$short_description = $this->the_product->post->post_excerpt;
|
755 |
+
if ( 'yes' === $atts['apply_filters'] ) {
|
756 |
+
apply_filters( 'woocommerce_short_description', $short_description );
|
757 |
+
}
|
758 |
+
if ( 0 != $atts['length'] ) {
|
759 |
+
$excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' );
|
760 |
+
$short_description = wp_trim_words( $short_description, $atts['length'], $excerpt_more );
|
761 |
+
}
|
762 |
+
return $short_description;
|
763 |
+
}
|
764 |
+
|
765 |
/**
|
766 |
* For wcj_product_excerpt function.
|
767 |
+
*
|
768 |
+
* @version 2.5.7
|
769 |
*/
|
770 |
+
function custom_excerpt_length( $length ) {
|
771 |
+
return $this->product_excerpt_length;
|
|
|
772 |
}
|
773 |
+
|
774 |
/**
|
775 |
* Get product excerpt.
|
776 |
*
|
777 |
+
* @version 2.5.7
|
778 |
+
* @return string
|
779 |
*/
|
780 |
function wcj_product_excerpt( $atts ) {
|
781 |
+
if ( 0 != $atts['excerpt_length'] ) {
|
782 |
+
$atts['length'] = $atts['excerpt_length'];
|
783 |
+
}
|
784 |
+
$the_excerpt = $this->wcj_product_short_description( $atts );
|
785 |
+
if ( '' === $the_excerpt ) {
|
786 |
+
global $post;
|
787 |
+
$post = get_post( $atts['product_id'] );
|
788 |
+
setup_postdata( $post );
|
789 |
+
$this->product_excerpt_length = $atts['length'];
|
790 |
+
if ( 0 != $atts['length'] ) {
|
791 |
+
add_filter( 'excerpt_length', array( $this, 'custom_excerpt_length' ), PHP_INT_MAX );
|
792 |
+
$the_excerpt = get_the_excerpt();
|
793 |
+
remove_filter( 'excerpt_length', array( $this, 'custom_excerpt_length' ), PHP_INT_MAX );
|
794 |
+
} else {
|
795 |
+
$the_excerpt = get_the_excerpt();
|
796 |
+
}
|
797 |
+
wp_reset_postdata();
|
798 |
+
}
|
799 |
return $the_excerpt;
|
800 |
}
|
801 |
|
833 |
function wcj_product_image( $atts ) {
|
834 |
return $this->the_product->get_image( $atts['image_size'] );
|
835 |
}
|
836 |
+
|
837 |
+
/**
|
838 |
+
* wcj_product_image_url.
|
839 |
+
*
|
840 |
+
* @version 2.5.7
|
841 |
+
* @since 2.5.7
|
842 |
+
*/
|
843 |
+
function wcj_product_image_url( $atts ) {
|
844 |
+
return wcj_get_product_image_url( $this->the_product->id, $atts['image_size'] );
|
845 |
+
}
|
846 |
+
|
847 |
+
/**
|
848 |
+
* wcj_product_url.
|
849 |
+
*
|
850 |
+
* @version 2.5.7
|
851 |
+
* @since 2.5.7
|
852 |
+
*/
|
853 |
+
function wcj_product_url( $atts ) {
|
854 |
+
return $this->the_product->get_permalink();
|
855 |
+
}
|
856 |
+
|
857 |
+
/**
|
858 |
+
* wcj_product_categories_names.
|
859 |
+
*
|
860 |
+
* @version 2.5.7
|
861 |
+
* @since 2.5.7
|
862 |
+
*/
|
863 |
+
function wcj_product_categories_names( $atts ) {
|
864 |
+
$product_cats = get_the_terms( $this->the_product->id, 'product_cat' );
|
865 |
+
$cats = array();
|
866 |
+
if ( ! empty( $product_cats ) && is_array( $product_cats ) ) {
|
867 |
+
foreach ( $product_cats as $product_cat ) {
|
868 |
+
$cats[] = $product_cat->name;
|
869 |
+
}
|
870 |
+
}
|
871 |
+
return implode( $atts['sep'], $cats );
|
872 |
+
}
|
873 |
+
|
874 |
+
/**
|
875 |
+
* wcj_product_categories_urls.
|
876 |
+
*
|
877 |
+
* @version 2.5.7
|
878 |
+
* @since 2.5.7
|
879 |
+
*/
|
880 |
+
function wcj_product_categories_urls( $atts ) {
|
881 |
+
$product_cats = get_the_terms( $this->the_product->id, 'product_cat' );
|
882 |
+
$cats = array();
|
883 |
+
if ( ! empty( $product_cats ) && is_array( $product_cats ) ) {
|
884 |
+
foreach ( $product_cats as $product_cat ) {
|
885 |
+
$cats[] = get_term_link( $product_cat );
|
886 |
+
}
|
887 |
+
}
|
888 |
+
return implode( $atts['sep'], $cats );
|
889 |
+
}
|
890 |
}
|
891 |
|
892 |
endif;
|
includes/shortcodes/class-wcj-shortcodes.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* The WooCommerce Jetpack Shortcodes class.
|
6 |
*
|
7 |
-
* @version 2.5.
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
@@ -59,7 +59,7 @@ class WCJ_Shortcodes {
|
|
59 |
/**
|
60 |
* wcj_shortcode.
|
61 |
*
|
62 |
-
* @version 2.5.
|
63 |
*/
|
64 |
function wcj_shortcode( $atts, $content, $shortcode ) {
|
65 |
|
@@ -83,6 +83,8 @@ class WCJ_Shortcodes {
|
|
83 |
'billing_country' => '',
|
84 |
'not_billing_country' => '',
|
85 |
'module' => '',
|
|
|
|
|
86 |
);
|
87 |
$atts = array_merge( $global_defaults, $atts );
|
88 |
|
@@ -168,8 +170,12 @@ class WCJ_Shortcodes {
|
|
168 |
|
169 |
// Run the shortcode function
|
170 |
$shortcode_function = $shortcode;
|
171 |
-
if ( '' !== ( $result = $this->$shortcode_function( $atts, $content ) ) )
|
|
|
|
|
|
|
172 |
return $atts['before'] . $result . $atts['after'];
|
|
|
173 |
return '';
|
174 |
}
|
175 |
|
4 |
*
|
5 |
* The WooCommerce Jetpack Shortcodes class.
|
6 |
*
|
7 |
+
* @version 2.5.7
|
8 |
* @author Algoritmika Ltd.
|
9 |
*/
|
10 |
|
59 |
/**
|
60 |
* wcj_shortcode.
|
61 |
*
|
62 |
+
* @version 2.5.7
|
63 |
*/
|
64 |
function wcj_shortcode( $atts, $content, $shortcode ) {
|
65 |
|
83 |
'billing_country' => '',
|
84 |
'not_billing_country' => '',
|
85 |
'module' => '',
|
86 |
+
'find' => '',
|
87 |
+
'replace' => '',
|
88 |
);
|
89 |
$atts = array_merge( $global_defaults, $atts );
|
90 |
|
170 |
|
171 |
// Run the shortcode function
|
172 |
$shortcode_function = $shortcode;
|
173 |
+
if ( '' !== ( $result = $this->$shortcode_function( $atts, $content ) ) ) {
|
174 |
+
if ( '' != $atts['find'] ) {
|
175 |
+
$result = str_replace( $atts['find'], $atts['replace'], $result );
|
176 |
+
}
|
177 |
return $atts['before'] . $result . $atts['after'];
|
178 |
+
}
|
179 |
return '';
|
180 |
}
|
181 |
|
langs/woocommerce-jetpack.pot
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
# This file is distributed under the same license as the Booster for WooCommerce package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Booster for WooCommerce 2.5.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-"
|
7 |
"jetpack\n"
|
8 |
-
"POT-Creation-Date: 2016-
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -29,8 +29,8 @@ msgstr ""
|
|
29 |
#: includes/admin/class-wc-settings-jetpack.php:347
|
30 |
#: includes/class-wcj-checkout-files-upload.php:140
|
31 |
#: includes/class-wcj-payment-gateways.php:55
|
32 |
-
#: includes/classes/class-wcj-module.php:
|
33 |
-
#: includes/classes/class-wcj-module.php:
|
34 |
msgid "Booster"
|
35 |
msgstr ""
|
36 |
|
@@ -123,14 +123,14 @@ msgstr ""
|
|
123 |
#: includes/admin/class-wcj-tools.php:75
|
124 |
#: includes/class-wcj-eu-vat-number.php:373
|
125 |
#: includes/class-wcj-product-by-user.php:159
|
126 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
127 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:151
|
128 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:266
|
129 |
msgid "Description"
|
130 |
msgstr ""
|
131 |
|
132 |
#: includes/admin/class-wc-settings-jetpack.php:486
|
133 |
-
#: includes/classes/class-wcj-module.php:
|
134 |
msgid "Documentation"
|
135 |
msgstr ""
|
136 |
|
@@ -204,7 +204,7 @@ msgid "Cart & Checkout"
|
|
204 |
msgstr ""
|
205 |
|
206 |
#: includes/admin/wcj-modules-cats.php:94
|
207 |
-
#: includes/class-wcj-payment-gateways-by-country.php:
|
208 |
#: includes/class-wcj-payment-gateways-by-user-role.php:81
|
209 |
#: includes/class-wcj-payment-gateways-min-max.php:90
|
210 |
msgid "Payment Gateways"
|
@@ -246,6 +246,7 @@ msgstr ""
|
|
246 |
#: includes/class-wcj-add-to-cart.php:212
|
247 |
#: includes/class-wcj-product-images.php:252
|
248 |
#: includes/class-wcj-product-images.php:326
|
|
|
249 |
msgid "Enable Section"
|
250 |
msgstr ""
|
251 |
|
@@ -284,10 +285,10 @@ msgstr ""
|
|
284 |
#: includes/class-wcj-add-to-cart.php:90
|
285 |
#: includes/class-wcj-add-to-cart.php:101
|
286 |
#: includes/class-wcj-add-to-cart.php:149
|
287 |
-
#: includes/class-wcj-add-to-cart.php:162 includes/class-wcj-sorting.php:
|
288 |
-
#: includes/class-wcj-sorting.php:
|
289 |
-
#: includes/class-wcj-sorting.php:
|
290 |
-
#: includes/class-wcj-sorting.php:
|
291 |
msgid "Default: "
|
292 |
msgstr ""
|
293 |
|
@@ -349,7 +350,7 @@ msgid "Already in cart. Product category (archive) view."
|
|
349 |
msgstr ""
|
350 |
|
351 |
#: includes/class-wcj-add-to-cart.php:180
|
352 |
-
#: includes/class-wcj-product-addons.php:
|
353 |
msgid "Per Product Options"
|
354 |
msgstr ""
|
355 |
|
@@ -384,10 +385,10 @@ msgid "Click \"Save changes\" after you change this number."
|
|
384 |
msgstr ""
|
385 |
|
386 |
#: includes/class-wcj-add-to-cart.php:257
|
387 |
-
#: includes/class-wcj-price-by-country.php:
|
388 |
-
#: includes/class-wcj-price-by-country.php:
|
389 |
-
#: includes/class-wcj-price-by-country.php:
|
390 |
-
#: includes/class-wcj-price-by-country.php:
|
391 |
msgid "Group"
|
392 |
msgstr ""
|
393 |
|
@@ -399,25 +400,28 @@ msgstr ""
|
|
399 |
#: includes/class-wcj-multicurrency.php:375
|
400 |
#: includes/class-wcj-order-numbers.php:210
|
401 |
#: includes/class-wcj-order-numbers.php:273
|
402 |
-
#: includes/class-wcj-order-numbers.php:281 includes/class-wcj-orders.php:
|
403 |
-
#: includes/class-wcj-
|
404 |
-
#: includes/class-wcj-price-by-country.php:
|
405 |
-
#: includes/class-wcj-price-by-country.php:
|
406 |
-
#: includes/class-wcj-price-by-country.php:
|
407 |
-
#: includes/class-wcj-price-by-country.php:
|
408 |
#: includes/class-wcj-price-by-user-role.php:373
|
409 |
#: includes/class-wcj-price-by-user-role.php:390
|
410 |
#: includes/class-wcj-price-labels.php:51
|
411 |
#: includes/class-wcj-price-labels.php:749
|
412 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
413 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
414 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
415 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
416 |
-
#: includes/class-wcj-product-
|
417 |
-
#: includes/class-wcj-product-
|
418 |
-
#: includes/class-wcj-product-
|
419 |
-
#: includes/class-wcj-product-addons.php:
|
420 |
-
#: includes/class-wcj-product-addons.php:
|
|
|
|
|
|
|
421 |
#: includes/class-wcj-product-by-user.php:232
|
422 |
#: includes/class-wcj-product-info.php:256
|
423 |
#: includes/class-wcj-product-info.php:351
|
@@ -438,9 +442,10 @@ msgstr ""
|
|
438 |
#: includes/class-wcj-shipping-calculator.php:123
|
439 |
#: includes/class-wcj-shipping-calculator.php:130
|
440 |
#: includes/class-wcj-shipping-calculator.php:137
|
441 |
-
#: includes/class-wcj-shipping.php:
|
442 |
-
#: includes/class-wcj-shipping.php:
|
443 |
-
#: includes/class-wcj-sku.php:
|
|
|
444 |
#: includes/class-wcj-wholesale-price.php:372
|
445 |
#: includes/class-wcj-wholesale-price.php:379
|
446 |
#: includes/class-wcj-wholesale-price.php:386
|
@@ -622,22 +627,22 @@ msgstr ""
|
|
622 |
#: includes/class-wcj-mini-cart.php:106
|
623 |
#: includes/class-wcj-product-custom-info.php:135
|
624 |
#: includes/class-wcj-product-tabs.php:431
|
625 |
-
#: includes/class-wcj-product-tabs.php:557 includes/class-wcj-shipping.php:
|
626 |
-
#: includes/class-wcj-shipping.php:
|
627 |
msgid "Content"
|
628 |
msgstr ""
|
629 |
|
630 |
#: includes/class-wcj-cart.php:167
|
631 |
#: includes/class-wcj-checkout-custom-info.php:102
|
632 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
633 |
#: includes/class-wcj-mini-cart.php:114
|
634 |
#: includes/class-wcj-product-custom-info.php:142
|
635 |
#: includes/class-wcj-product-info.php:263
|
636 |
#: includes/class-wcj-product-info.php:366
|
637 |
#: includes/class-wcj-product-info.php:399
|
638 |
#: includes/class-wcj-product-listings.php:471
|
639 |
-
#: includes/class-wcj-shipping.php:
|
640 |
-
#: includes/class-wcj-shipping.php:
|
641 |
msgid "Position"
|
642 |
msgstr ""
|
643 |
|
@@ -676,7 +681,7 @@ msgid "Checkout Core Fields Options"
|
|
676 |
msgstr ""
|
677 |
|
678 |
#: includes/class-wcj-checkout-core-fields.php:225
|
679 |
-
#: includes/classes/class-wcj-module.php:
|
680 |
msgid "enabled"
|
681 |
msgstr ""
|
682 |
|
@@ -689,10 +694,10 @@ msgstr ""
|
|
689 |
|
690 |
#: includes/class-wcj-checkout-core-fields.php:231
|
691 |
#: includes/class-wcj-checkout-custom-fields.php:668
|
692 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
693 |
-
#: includes/class-wcj-orders.php:
|
694 |
#: includes/class-wcj-price-by-user-role.php:140
|
695 |
-
#: includes/class-wcj-product-addons.php:
|
696 |
#: includes/class-wcj-product-bookings.php:417
|
697 |
#: includes/class-wcj-product-open-pricing.php:178
|
698 |
#: includes/class-wcj-product-price-by-formula.php:237
|
@@ -701,7 +706,7 @@ msgid "Enabled"
|
|
701 |
msgstr ""
|
702 |
|
703 |
#: includes/class-wcj-checkout-core-fields.php:232
|
704 |
-
#: includes/class-wcj-pdf-invoicing.php:
|
705 |
#: includes/class-wcj-product-tabs.php:440
|
706 |
msgid "Disabled"
|
707 |
msgstr ""
|
@@ -712,7 +717,7 @@ msgid "required"
|
|
712 |
msgstr ""
|
713 |
|
714 |
#: includes/class-wcj-checkout-core-fields.php:245
|
715 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
716 |
#: includes/class-wcj-eu-vat-number.php:386
|
717 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:207
|
718 |
msgid "Required"
|
@@ -774,10 +779,10 @@ msgstr ""
|
|
774 |
#: includes/class-wcj-checkout-custom-fields.php:613
|
775 |
#: includes/class-wcj-checkout-custom-fields.php:620
|
776 |
#: includes/class-wcj-general.php:122
|
777 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
778 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
779 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
780 |
-
#: includes/class-wcj-orders.php:
|
781 |
#: includes/class-wcj-product-by-user.php:239
|
782 |
#: includes/class-wcj-purchase-data.php:389 includes/class-wcj-sku.php:400
|
783 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:359
|
@@ -826,8 +831,8 @@ msgid "Number"
|
|
826 |
msgstr ""
|
827 |
|
828 |
#: includes/class-wcj-checkout-custom-fields.php:686
|
829 |
-
#: includes/class-wcj-product-addons.php:
|
830 |
-
#: includes/class-wcj-product-addons.php:
|
831 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:51
|
832 |
msgid "Checkbox"
|
833 |
msgstr ""
|
@@ -863,7 +868,7 @@ msgid "Password"
|
|
863 |
msgstr ""
|
864 |
|
865 |
#: includes/class-wcj-checkout-custom-fields.php:694
|
866 |
-
#: includes/class-wcj-orders.php:
|
867 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:59
|
868 |
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:90
|
869 |
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:104
|
@@ -875,7 +880,7 @@ msgid "State"
|
|
875 |
msgstr ""
|
876 |
|
877 |
#: includes/class-wcj-checkout-custom-fields.php:696
|
878 |
-
#: includes/class-wcj-export-import.php:
|
879 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:61
|
880 |
#: includes/reports/wcj-class-reports-customers.php:92
|
881 |
msgid "Email"
|
@@ -906,11 +911,11 @@ msgstr ""
|
|
906 |
#: includes/class-wcj-eu-vat-number.php:452
|
907 |
#: includes/class-wcj-price-by-user-role.php:137
|
908 |
#: includes/class-wcj-price-by-user-role.php:180
|
909 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
910 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
911 |
-
#: includes/class-wcj-product-addons.php:
|
912 |
-
#: includes/class-wcj-product-addons.php:
|
913 |
-
#: includes/class-wcj-product-addons.php:
|
914 |
#: includes/class-wcj-product-bookings.php:414
|
915 |
#: includes/class-wcj-product-images.php:210
|
916 |
#: includes/class-wcj-product-images.php:220
|
@@ -932,11 +937,11 @@ msgstr ""
|
|
932 |
#: includes/class-wcj-checkout-custom-fields.php:722
|
933 |
#: includes/class-wcj-price-by-user-role.php:138
|
934 |
#: includes/class-wcj-price-by-user-role.php:181
|
935 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
936 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
937 |
-
#: includes/class-wcj-product-addons.php:
|
938 |
-
#: includes/class-wcj-product-addons.php:
|
939 |
-
#: includes/class-wcj-product-addons.php:
|
940 |
#: includes/class-wcj-product-bookings.php:415
|
941 |
#: includes/class-wcj-product-images.php:211
|
942 |
#: includes/class-wcj-product-images.php:221
|
@@ -1070,7 +1075,7 @@ msgstr ""
|
|
1070 |
#: includes/class-wcj-checkout-custom-fields.php:836
|
1071 |
#: includes/class-wcj-checkout-custom-info.php:110
|
1072 |
#: includes/class-wcj-empty-cart-button.php:117
|
1073 |
-
#: includes/class-wcj-shipping.php:
|
1074 |
msgid "Billing"
|
1075 |
msgstr ""
|
1076 |
|
@@ -1078,12 +1083,12 @@ msgstr ""
|
|
1078 |
#: includes/class-wcj-checkout-custom-info.php:111
|
1079 |
#: includes/class-wcj-empty-cart-button.php:118
|
1080 |
#: includes/class-wcj-price-by-user-role.php:389
|
1081 |
-
#: includes/class-wcj-shipping.php:
|
1082 |
msgid "Shipping"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
#: includes/class-wcj-checkout-custom-fields.php:838
|
1086 |
-
#: includes/class-wcj-export-import.php:
|
1087 |
msgid "Order Notes"
|
1088 |
msgstr ""
|
1089 |
|
@@ -1136,46 +1141,46 @@ msgid "Checkout Custom Info Blocks"
|
|
1136 |
msgstr ""
|
1137 |
|
1138 |
#: includes/class-wcj-checkout-custom-info.php:108
|
1139 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1140 |
#: includes/class-wcj-empty-cart-button.php:115
|
1141 |
-
#: includes/class-wcj-shipping.php:
|
1142 |
msgid "Before checkout form"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
#: includes/class-wcj-checkout-custom-info.php:109
|
1146 |
#: includes/class-wcj-empty-cart-button.php:116
|
1147 |
-
#: includes/class-wcj-shipping.php:
|
1148 |
msgid "Before customer details"
|
1149 |
msgstr ""
|
1150 |
|
1151 |
#: includes/class-wcj-checkout-custom-info.php:112
|
1152 |
#: includes/class-wcj-empty-cart-button.php:119
|
1153 |
-
#: includes/class-wcj-shipping.php:
|
1154 |
msgid "After customer details"
|
1155 |
msgstr ""
|
1156 |
|
1157 |
#: includes/class-wcj-checkout-custom-info.php:113
|
1158 |
#: includes/class-wcj-empty-cart-button.php:120
|
1159 |
-
#: includes/class-wcj-shipping.php:
|
1160 |
msgid "Before order review"
|
1161 |
msgstr ""
|
1162 |
|
1163 |
#: includes/class-wcj-checkout-custom-info.php:114
|
1164 |
#: includes/class-wcj-empty-cart-button.php:121
|
1165 |
-
#: includes/class-wcj-shipping.php:
|
1166 |
msgid "Order review"
|
1167 |
msgstr ""
|
1168 |
|
1169 |
#: includes/class-wcj-checkout-custom-info.php:115
|
1170 |
#: includes/class-wcj-empty-cart-button.php:122
|
1171 |
-
#: includes/class-wcj-shipping.php:
|
1172 |
msgid "After order review"
|
1173 |
msgstr ""
|
1174 |
|
1175 |
#: includes/class-wcj-checkout-custom-info.php:116
|
1176 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1177 |
#: includes/class-wcj-empty-cart-button.php:123
|
1178 |
-
#: includes/class-wcj-shipping.php:
|
1179 |
msgid "After checkout form"
|
1180 |
msgstr ""
|
1181 |
|
@@ -1188,19 +1193,19 @@ msgid "Let customers upload files on (or after) WooCommerce checkout."
|
|
1188 |
msgstr ""
|
1189 |
|
1190 |
#: includes/class-wcj-checkout-files-upload.php:88
|
1191 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1192 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:52
|
1193 |
msgid "File"
|
1194 |
msgstr ""
|
1195 |
|
1196 |
#: includes/class-wcj-checkout-files-upload.php:110
|
1197 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1198 |
msgid "File is required!"
|
1199 |
msgstr ""
|
1200 |
|
1201 |
#: includes/class-wcj-checkout-files-upload.php:120
|
1202 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1203 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1204 |
msgid "Wrong file type: \"%s\"!"
|
1205 |
msgstr ""
|
1206 |
|
@@ -1208,43 +1213,47 @@ msgstr ""
|
|
1208 |
msgid "Uploaded Files"
|
1209 |
msgstr ""
|
1210 |
|
1211 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1212 |
-
|
1213 |
-
|
|
|
|
|
|
|
|
|
1214 |
msgid "File \"%s\" was successfully removed."
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1218 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1219 |
msgid "File \"%s\" was successfully uploaded."
|
1220 |
msgstr ""
|
1221 |
|
1222 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1223 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1224 |
msgid "Please select file to upload!"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1228 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1229 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1230 |
msgid "Upload"
|
1231 |
msgstr ""
|
1232 |
|
1233 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1234 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1235 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1236 |
msgid "Remove"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1240 |
-
#: includes/class-wcj-currency-per-product.php:
|
1241 |
#: includes/class-wcj-eu-vat-number.php:354
|
1242 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1243 |
#: includes/class-wcj-multicurrency.php:346
|
1244 |
#: includes/class-wcj-payment-gateways-icons.php:95
|
1245 |
#: includes/class-wcj-payment-gateways-per-category.php:166
|
1246 |
#: includes/class-wcj-price-by-user-role.php:367
|
1247 |
-
#: includes/class-wcj-product-addons.php:
|
1248 |
#: includes/class-wcj-product-bookings.php:490
|
1249 |
#: includes/class-wcj-product-by-user.php:204
|
1250 |
#: includes/class-wcj-related-products.php:98
|
@@ -1252,137 +1261,166 @@ msgstr ""
|
|
1252 |
msgid "Options"
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1256 |
msgid "Total Files"
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1260 |
msgid "Do not add on checkout"
|
1261 |
msgstr ""
|
1262 |
|
1263 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1264 |
msgid "Position order"
|
1265 |
msgstr ""
|
1266 |
|
1267 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1268 |
msgid "Add to Thank You page"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1272 |
msgid "Add to My Account page"
|
1273 |
msgstr ""
|
1274 |
|
1275 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1276 |
-
#: includes/class-wcj-
|
1277 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
1278 |
-
#: includes/class-wcj-
|
|
|
1279 |
msgid "Label"
|
1280 |
msgstr ""
|
1281 |
|
1282 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1283 |
msgid "Leave blank to disable label"
|
1284 |
msgstr ""
|
1285 |
|
1286 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1287 |
msgid "Please select file to upload"
|
1288 |
msgstr ""
|
1289 |
|
1290 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1291 |
msgid "Accepted file types"
|
1292 |
msgstr ""
|
1293 |
|
1294 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1295 |
msgid ""
|
1296 |
"Accepted file types. E.g.: \".jpg,.jpeg,.png\". Leave blank to accept all "
|
1297 |
"files"
|
1298 |
msgstr ""
|
1299 |
|
1300 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1301 |
msgid "Label: Upload button"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1305 |
msgid "Label: Remove button"
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1309 |
msgid "Notice: Wrong file type"
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1313 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1314 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1315 |
msgid "%s will be replaced with file name"
|
1316 |
msgstr ""
|
1317 |
|
1318 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1319 |
msgid "Notice: File is required"
|
1320 |
msgstr ""
|
1321 |
|
1322 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1323 |
msgid "Notice: File was successfully uploaded"
|
1324 |
msgstr ""
|
1325 |
|
1326 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1327 |
msgid "Notice: No file selected"
|
1328 |
msgstr ""
|
1329 |
|
1330 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1331 |
msgid "Notice: File was successfully removed"
|
1332 |
msgstr ""
|
1333 |
|
1334 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1335 |
msgid "PRODUCTS to show this field"
|
1336 |
msgstr ""
|
1337 |
|
1338 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1339 |
msgid ""
|
1340 |
"To show this field only if at least one selected product is in cart, enter "
|
1341 |
"products here. Leave blank to show for all products."
|
1342 |
msgstr ""
|
1343 |
|
1344 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1345 |
msgid "CATEGORIES to show this field"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1349 |
msgid ""
|
1350 |
"To show this field only if at least one product of selected category is in "
|
1351 |
"cart, enter categories here. Leave blank to show for all products."
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1355 |
msgid "TAGS to show this field"
|
1356 |
msgstr ""
|
1357 |
|
1358 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1359 |
msgid ""
|
1360 |
"To show this field only if at least one product of selected tag is in cart, "
|
1361 |
"enter tags here. Leave blank to show for all products."
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1365 |
#: includes/class-wcj-product-input-fields.php:247
|
1366 |
msgid "Emails Options"
|
1367 |
msgstr ""
|
1368 |
|
1369 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1370 |
#: includes/class-wcj-product-input-fields.php:253
|
1371 |
msgid "Attach Files to Admin's New Order Emails"
|
1372 |
msgstr ""
|
1373 |
|
1374 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1375 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1376 |
#: includes/class-wcj-product-input-fields.php:254
|
1377 |
#: includes/class-wcj-product-input-fields.php:262
|
1378 |
msgid "Attach"
|
1379 |
msgstr ""
|
1380 |
|
1381 |
-
#: includes/class-wcj-checkout-files-upload.php:
|
1382 |
#: includes/class-wcj-product-input-fields.php:261
|
1383 |
msgid "Attach Files to Customer's Processing Order Emails"
|
1384 |
msgstr ""
|
1385 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1386 |
#: includes/class-wcj-crowdfunding.php:26
|
1387 |
msgid "Crowdfunding"
|
1388 |
msgstr ""
|
@@ -1446,7 +1484,7 @@ msgid "Hide Currency Symbol"
|
|
1446 |
msgstr ""
|
1447 |
|
1448 |
#: includes/class-wcj-currencies.php:106
|
1449 |
-
#: includes/class-wcj-pdf-invoicing.php:
|
1450 |
#: includes/class-wcj-product-bookings.php:496
|
1451 |
#: includes/class-wcj-product-images.php:259
|
1452 |
#: includes/class-wcj-product-images.php:266
|
@@ -1494,11 +1532,11 @@ msgid "Automatic currency exchange rates for WooCommerce."
|
|
1494 |
msgstr ""
|
1495 |
|
1496 |
#: includes/class-wcj-currency-exchange-rates.php:80
|
1497 |
-
#: includes/class-wcj-currency-per-product.php:
|
1498 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1499 |
#: includes/class-wcj-multicurrency.php:431
|
1500 |
#: includes/class-wcj-payment-gateways-currency.php:275
|
1501 |
-
#: includes/class-wcj-price-by-country.php:
|
1502 |
msgid "Grab %s rate from Yahoo.com"
|
1503 |
msgstr ""
|
1504 |
|
@@ -1507,7 +1545,7 @@ msgid "%s seconds till next update."
|
|
1507 |
msgstr ""
|
1508 |
|
1509 |
#: includes/class-wcj-currency-exchange-rates.php:106
|
1510 |
-
#: includes/class-wcj-price-by-country.php:
|
1511 |
msgid "Exchange Rates"
|
1512 |
msgstr ""
|
1513 |
|
@@ -1518,11 +1556,11 @@ msgid ""
|
|
1518 |
msgstr ""
|
1519 |
|
1520 |
#: includes/class-wcj-currency-exchange-rates.php:113
|
1521 |
-
#: includes/class-wcj-currency-per-product.php:
|
1522 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1523 |
#: includes/class-wcj-multicurrency.php:351
|
1524 |
#: includes/class-wcj-payment-gateways-currency.php:282
|
1525 |
-
#: includes/class-wcj-price-by-country.php:
|
1526 |
msgid "Exchange Rates Updates"
|
1527 |
msgstr ""
|
1528 |
|
@@ -1564,10 +1602,10 @@ msgid "Currency for External Products Options"
|
|
1564 |
msgstr ""
|
1565 |
|
1566 |
#: includes/class-wcj-currency-external-products.php:79
|
1567 |
-
#: includes/class-wcj-currency-per-product.php:
|
1568 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1569 |
#: includes/class-wcj-multicurrency.php:415
|
1570 |
-
#: includes/class-wcj-price-by-country.php:
|
1571 |
#: includes/class-wcj-price-formats.php:135
|
1572 |
msgid "Currency"
|
1573 |
msgstr ""
|
@@ -1589,51 +1627,55 @@ msgctxt "Price range: from-to"
|
|
1589 |
msgid "%1$s–%2$s"
|
1590 |
msgstr ""
|
1591 |
|
1592 |
-
#: includes/class-wcj-currency-per-product.php:
|
1593 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1594 |
msgid "Product Currency"
|
1595 |
msgstr ""
|
1596 |
|
1597 |
-
#: includes/class-wcj-currency-per-product.php:
|
1598 |
-
|
|
|
|
|
|
|
|
|
1599 |
#: includes/class-wcj-multicurrency.php:356
|
1600 |
#: includes/class-wcj-payment-gateways-currency.php:287
|
1601 |
-
#: includes/class-wcj-price-by-country.php:
|
1602 |
msgid "Enter Rates Manually"
|
1603 |
msgstr ""
|
1604 |
|
1605 |
-
#: includes/class-wcj-currency-per-product.php:
|
1606 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1607 |
#: includes/class-wcj-multicurrency.php:357
|
1608 |
#: includes/class-wcj-payment-gateways-currency.php:288
|
1609 |
-
#: includes/class-wcj-price-by-country.php:
|
1610 |
msgid "Automatically via Currency Exchange Rates module"
|
1611 |
msgstr ""
|
1612 |
|
1613 |
-
#: includes/class-wcj-currency-per-product.php:
|
1614 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1615 |
#: includes/class-wcj-multicurrency.php:360
|
1616 |
#: includes/class-wcj-payment-gateways-currency.php:291
|
1617 |
-
#: includes/class-wcj-price-by-country.php:
|
1618 |
msgid "Visit"
|
1619 |
msgstr ""
|
1620 |
|
1621 |
-
#: includes/class-wcj-currency-per-product.php:
|
1622 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1623 |
#: includes/class-wcj-multicurrency.php:360
|
1624 |
#: includes/class-wcj-payment-gateways-currency.php:291
|
1625 |
-
#: includes/class-wcj-price-by-country.php:
|
1626 |
msgid "Currency Exchange Rates module"
|
1627 |
msgstr ""
|
1628 |
|
1629 |
-
#: includes/class-wcj-currency-per-product.php:
|
1630 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1631 |
#: includes/class-wcj-multicurrency.php:385
|
1632 |
msgid "Currencies Options"
|
1633 |
msgstr ""
|
1634 |
|
1635 |
-
#: includes/class-wcj-currency-per-product.php:
|
1636 |
-
#: includes/class-wcj-multicurrency-product-base-price.php:
|
1637 |
#: includes/class-wcj-multicurrency.php:391
|
1638 |
msgid "Total Currencies"
|
1639 |
msgstr ""
|
@@ -1695,10 +1737,10 @@ msgstr ""
|
|
1695 |
msgid "Admin Title Custom Email"
|
1696 |
msgstr ""
|
1697 |
|
1698 |
-
#: includes/class-wcj-emails.php:207 includes/class-wcj-shipping.php:
|
1699 |
#: includes/emails/class-wc-email-wcj-custom.php:30
|
1700 |
#: includes/pdf-invoices/settings/class-wcj-pdf-invoicing-emails.php:127
|
1701 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
1702 |
msgid "Custom"
|
1703 |
msgstr ""
|
1704 |
|
@@ -1901,176 +1943,180 @@ msgstr ""
|
|
1901 |
msgid "Filter by Product Title"
|
1902 |
msgstr ""
|
1903 |
|
1904 |
-
#: includes/class-wcj-export-import.php:132
|
1905 |
-
#: includes/class-
|
1906 |
-
msgid "
|
1907 |
-
msgstr ""
|
1908 |
-
|
1909 |
-
#: includes/class-wcj-export-import.php:149
|
1910 |
-
msgid "Download CSV"
|
1911 |
-
msgstr ""
|
1912 |
-
|
1913 |
-
#: includes/class-wcj-export-import.php:203
|
1914 |
-
msgid "Customer ID"
|
1915 |
-
msgstr ""
|
1916 |
-
|
1917 |
-
#: includes/class-wcj-export-import.php:204
|
1918 |
-
msgid "Customer Email"
|
1919 |
-
msgstr ""
|
1920 |
-
|
1921 |
-
#: includes/class-wcj-export-import.php:205
|
1922 |
-
msgid "Customer First Name"
|
1923 |
-
msgstr ""
|
1924 |
-
|
1925 |
-
#: includes/class-wcj-export-import.php:206
|
1926 |
-
msgid "Customer Last Name"
|
1927 |
msgstr ""
|
1928 |
|
1929 |
-
#: includes/class-wcj-export-import.php:
|
1930 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:208
|
1931 |
msgid "Order ID"
|
1932 |
msgstr ""
|
1933 |
|
1934 |
-
#: includes/class-wcj-export-import.php:
|
1935 |
msgid "Order Number"
|
1936 |
msgstr ""
|
1937 |
|
1938 |
-
#: includes/class-wcj-export-import.php:
|
1939 |
msgid "Order Status"
|
1940 |
msgstr ""
|
1941 |
|
1942 |
-
#: includes/class-wcj-export-import.php:
|
1943 |
msgid "Order Date"
|
1944 |
msgstr ""
|
1945 |
|
1946 |
-
#: includes/class-wcj-export-import.php:
|
1947 |
msgid "Order Item Count"
|
1948 |
msgstr ""
|
1949 |
|
1950 |
-
#: includes/class-wcj-export-import.php:
|
1951 |
msgid "Order Items"
|
1952 |
msgstr ""
|
1953 |
|
1954 |
-
#: includes/class-wcj-export-import.php:
|
|
|
|
|
|
|
|
|
1955 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:215
|
1956 |
msgid "Order Currency"
|
1957 |
msgstr ""
|
1958 |
|
1959 |
-
#: includes/class-wcj-export-import.php:
|
1960 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:214
|
1961 |
msgid "Order Total"
|
1962 |
msgstr ""
|
1963 |
|
1964 |
-
#: includes/class-wcj-export-import.php:
|
1965 |
msgid "Order Total Tax"
|
1966 |
msgstr ""
|
1967 |
|
1968 |
-
#: includes/class-wcj-export-import.php:
|
1969 |
msgid "Order Payment Method"
|
1970 |
msgstr ""
|
1971 |
|
1972 |
-
#: includes/class-wcj-export-import.php:
|
1973 |
msgid "Billing First Name"
|
1974 |
msgstr ""
|
1975 |
|
1976 |
-
#: includes/class-wcj-export-import.php:
|
1977 |
msgid "Billing Last Name"
|
1978 |
msgstr ""
|
1979 |
|
1980 |
-
#: includes/class-wcj-export-import.php:
|
1981 |
msgid "Billing Company"
|
1982 |
msgstr ""
|
1983 |
|
1984 |
-
#: includes/class-wcj-export-import.php:
|
1985 |
msgid "Billing Address 1"
|
1986 |
msgstr ""
|
1987 |
|
1988 |
-
#: includes/class-wcj-export-import.php:
|
1989 |
msgid "Billing Address 2"
|
1990 |
msgstr ""
|
1991 |
|
1992 |
-
#: includes/class-wcj-export-import.php:
|
1993 |
msgid "Billing City"
|
1994 |
msgstr ""
|
1995 |
|
1996 |
-
#: includes/class-wcj-export-import.php:
|
1997 |
msgid "Billing State"
|
1998 |
msgstr ""
|
1999 |
|
2000 |
-
#: includes/class-wcj-export-import.php:
|
2001 |
msgid "Billing Postcode"
|
2002 |
msgstr ""
|
2003 |
|
2004 |
-
#: includes/class-wcj-export-import.php:
|
2005 |
msgid "Billing Country"
|
2006 |
msgstr ""
|
2007 |
|
2008 |
-
#: includes/class-wcj-export-import.php:
|
2009 |
msgid "Billing Phone"
|
2010 |
msgstr ""
|
2011 |
|
2012 |
-
#: includes/class-wcj-export-import.php:
|
2013 |
msgid "Billing Email"
|
2014 |
msgstr ""
|
2015 |
|
2016 |
-
#: includes/class-wcj-export-import.php:
|
2017 |
msgid "Shipping First Name"
|
2018 |
msgstr ""
|
2019 |
|
2020 |
-
#: includes/class-wcj-export-import.php:
|
2021 |
msgid "Shipping Last Name"
|
2022 |
msgstr ""
|
2023 |
|
2024 |
-
#: includes/class-wcj-export-import.php:
|
2025 |
msgid "Shipping Company"
|
2026 |
msgstr ""
|
2027 |
|
2028 |
-
#: includes/class-wcj-export-import.php:
|
2029 |
msgid "Shipping Address 1"
|
2030 |
msgstr ""
|
2031 |
|
2032 |
-
#: includes/class-wcj-export-import.php:
|
2033 |
msgid "Shipping Address 2"
|
2034 |
msgstr ""
|
2035 |
|
2036 |
-
#: includes/class-wcj-export-import.php:
|
2037 |
msgid "Shipping City"
|
2038 |
msgstr ""
|
2039 |
|
2040 |
-
#: includes/class-wcj-export-import.php:
|
2041 |
msgid "Shipping State"
|
2042 |
msgstr ""
|
2043 |
|
2044 |
-
#: includes/class-wcj-export-import.php:
|
2045 |
msgid "Shipping Postcode"
|
2046 |
msgstr ""
|
2047 |
|
2048 |
-
#: includes/class-wcj-export-import.php:
|
2049 |
msgid "Shipping Country"
|
2050 |
msgstr ""
|
2051 |
|
2052 |
-
#: includes/class-wcj-export-import.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2053 |
msgid "Product ID"
|
2054 |
msgstr ""
|
2055 |
|
2056 |
-
#: includes/class-wcj-export-import.php:
|
2057 |
#: includes/class-wcj-general.php:118
|
2058 |
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:72
|
2059 |
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:106
|
2060 |
msgid "Name"
|
2061 |
msgstr ""
|
2062 |
|
2063 |
-
#: includes/class-wcj-export-import.php:
|
2064 |
#: includes/class-wcj-sku.php:245
|
2065 |
msgid "SKU"
|
2066 |
msgstr ""
|
2067 |
|
2068 |
-
#: includes/class-wcj-export-import.php:
|
2069 |
#: includes/reports/wcj-class-reports-stock.php:322
|
2070 |
msgid "Stock"
|
2071 |
msgstr ""
|
2072 |
|
2073 |
-
#: includes/class-wcj-export-import.php:
|
2074 |
#: includes/class-wcj-multicurrency.php:76
|
2075 |
#: includes/class-wcj-price-by-user-role.php:161
|
2076 |
#: includes/class-wcj-product-by-user.php:162
|
@@ -2080,7 +2126,7 @@ msgstr ""
|
|
2080 |
msgid "Regular Price"
|
2081 |
msgstr ""
|
2082 |
|
2083 |
-
#: includes/class-wcj-export-import.php:
|
2084 |
#: includes/class-wcj-multicurrency.php:85
|
2085 |
#: includes/class-wcj-price-by-user-role.php:170
|
2086 |
#: includes/class-wcj-product-by-user.php:163
|
@@ -2090,44 +2136,49 @@ msgstr ""
|
|
2090 |
msgid "Sale Price"
|
2091 |
msgstr ""
|
2092 |
|
2093 |
-
#: includes/class-wcj-export-import.php:
|
2094 |
#: includes/reports/wcj-class-reports-stock.php:321
|
2095 |
msgid "Price"
|
2096 |
msgstr ""
|
2097 |
|
2098 |
-
#: includes/class-wcj-export-import.php:
|
2099 |
-
#: includes/class-wcj-product-addons.php:
|
2100 |
-
#: includes/class-wcj-product-addons.php:
|
2101 |
#: includes/class-wcj-purchase-data.php:328
|
2102 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:44
|
2103 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
2104 |
msgid "Type"
|
2105 |
msgstr ""
|
2106 |
|
2107 |
-
#: includes/class-wcj-export-import.php:
|
2108 |
msgid "Nr."
|
2109 |
msgstr ""
|
2110 |
|
2111 |
-
#: includes/class-wcj-export-import.php:
|
2112 |
msgid "First Name"
|
2113 |
msgstr ""
|
2114 |
|
2115 |
-
#: includes/class-wcj-export-import.php:
|
2116 |
msgid "Last Name"
|
2117 |
msgstr ""
|
2118 |
|
2119 |
-
#: includes/class-wcj-export-import.php:
|
2120 |
msgid "Last Order Date"
|
2121 |
msgstr ""
|
2122 |
|
2123 |
-
#: includes/class-wcj-export-import.php:
|
2124 |
msgid "Export Options"
|
2125 |
msgstr ""
|
2126 |
|
2127 |
-
#: includes/class-wcj-export-import.php:
|
2128 |
msgid "CSV Separator"
|
2129 |
msgstr ""
|
2130 |
|
|
|
|
|
|
|
|
|
2131 |
#: includes/class-wcj-general.php:25 includes/class-wcj-pdf-invoicing.php:26
|
2132 |
msgid "General"
|
2133 |
msgstr ""
|
@@ -2189,8 +2240,8 @@ msgid "Actions"
|
|
2189 |
msgstr ""
|
2190 |
|
2191 |
#: includes/class-wcj-general.php:110
|
2192 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2193 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2194 |
#: includes/class-wcj-product-by-user.php:122
|
2195 |
#: includes/pdf-invoices/settings/class-wcj-pdf-invoicing-display.php:116
|
2196 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:285
|
@@ -2212,7 +2263,7 @@ msgstr ""
|
|
2212 |
#: includes/class-wcj-general.php:203 includes/class-wcj-general.php:245
|
2213 |
#: includes/class-wcj-product-bulk-price-converter.php:149
|
2214 |
#: includes/class-wcj-sku.php:243
|
2215 |
-
#: includes/reports/wcj-class-reports-sales.php:
|
2216 |
#: includes/reports/wcj-class-reports-stock.php:319
|
2217 |
msgid "Product"
|
2218 |
msgstr ""
|
@@ -2251,6 +2302,7 @@ msgstr ""
|
|
2251 |
#: includes/class-wcj-general.php:326 includes/class-wcj-general.php:389
|
2252 |
#: includes/class-wcj-general.php:403 includes/class-wcj-general.php:410
|
2253 |
#: includes/class-wcj-general.php:417 includes/class-wcj-general.php:424
|
|
|
2254 |
msgid "Disable"
|
2255 |
msgstr ""
|
2256 |
|
@@ -2330,15 +2382,15 @@ msgstr ""
|
|
2330 |
msgid "Mini Cart Custom Info Blocks"
|
2331 |
msgstr ""
|
2332 |
|
2333 |
-
#: includes/class-wcj-mini-cart.php:119 includes/class-wcj-shipping.php:
|
2334 |
msgid "Before mini cart"
|
2335 |
msgstr ""
|
2336 |
|
2337 |
-
#: includes/class-wcj-mini-cart.php:120 includes/class-wcj-shipping.php:
|
2338 |
msgid "Before buttons"
|
2339 |
msgstr ""
|
2340 |
|
2341 |
-
#: includes/class-wcj-mini-cart.php:121 includes/class-wcj-shipping.php:
|
2342 |
msgid "After mini cart"
|
2343 |
msgstr ""
|
2344 |
|
@@ -2392,12 +2444,12 @@ msgid "Multicurrency on per Product Basis"
|
|
2392 |
msgstr ""
|
2393 |
|
2394 |
#: includes/class-wcj-multicurrency.php:368
|
2395 |
-
#: includes/class-wcj-price-by-country.php:
|
2396 |
msgid "This will add meta boxes in product edit."
|
2397 |
msgstr ""
|
2398 |
|
2399 |
#: includes/class-wcj-multicurrency.php:374
|
2400 |
-
#: includes/class-wcj-price-by-country.php:
|
2401 |
msgid "Revert Currency to Default on Checkout"
|
2402 |
msgstr ""
|
2403 |
|
@@ -2411,7 +2463,7 @@ msgstr ""
|
|
2411 |
msgid "Role Defaults"
|
2412 |
msgstr ""
|
2413 |
|
2414 |
-
#: includes/class-wcj-multicurrency.php:445 includes/class-wcj-orders.php:
|
2415 |
#: includes/class-wcj-price-by-user-role.php:404
|
2416 |
msgid ""
|
2417 |
"Custom roles can be added via \"Add/Manage Custom Roles\" tool in Booster's "
|
@@ -2423,7 +2475,7 @@ msgid "Roles"
|
|
2423 |
msgstr ""
|
2424 |
|
2425 |
#: includes/class-wcj-multicurrency.php:451
|
2426 |
-
#: includes/class-wcj-wholesale-price.php:
|
2427 |
msgid "Save settings after you change this option. Leave blank to disable."
|
2428 |
msgstr ""
|
2429 |
|
@@ -2472,7 +2524,7 @@ msgid "Custom statuses for WooCommerce orders."
|
|
2472 |
msgstr ""
|
2473 |
|
2474 |
#: includes/class-wcj-order-custom-statuses.php:33
|
2475 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2476 |
msgid "Custom Statuses"
|
2477 |
msgstr ""
|
2478 |
|
@@ -2480,140 +2532,140 @@ msgstr ""
|
|
2480 |
msgid "Tool lets you add or delete any custom status for WooCommerce orders."
|
2481 |
msgstr ""
|
2482 |
|
2483 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2484 |
msgctxt "Order status"
|
2485 |
msgid "Pending payment"
|
2486 |
msgstr ""
|
2487 |
|
2488 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2489 |
-
#: includes/functions/wcj-functions.php:
|
2490 |
msgctxt "Order status"
|
2491 |
msgid "Processing"
|
2492 |
msgstr ""
|
2493 |
|
2494 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2495 |
msgctxt "Order status"
|
2496 |
msgid "On hold"
|
2497 |
msgstr ""
|
2498 |
|
2499 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2500 |
-
#: includes/functions/wcj-functions.php:
|
2501 |
msgctxt "Order status"
|
2502 |
msgid "Completed"
|
2503 |
msgstr ""
|
2504 |
|
2505 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2506 |
-
#: includes/functions/wcj-functions.php:
|
2507 |
msgctxt "Order status"
|
2508 |
msgid "Cancelled"
|
2509 |
msgstr ""
|
2510 |
|
2511 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2512 |
-
#: includes/functions/wcj-functions.php:
|
2513 |
msgctxt "Order status"
|
2514 |
msgid "Refunded"
|
2515 |
msgstr ""
|
2516 |
|
2517 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2518 |
-
#: includes/functions/wcj-functions.php:
|
2519 |
msgctxt "Order status"
|
2520 |
msgid "Failed"
|
2521 |
msgstr ""
|
2522 |
|
2523 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2524 |
msgid "Status slug is empty. Status not added."
|
2525 |
msgstr ""
|
2526 |
|
2527 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2528 |
msgid "The length of status slug must be 17 or less characters."
|
2529 |
msgstr ""
|
2530 |
|
2531 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2532 |
msgid "Status label is empty. Status not added."
|
2533 |
msgstr ""
|
2534 |
|
2535 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2536 |
msgid "Duplicate slug. Status not added."
|
2537 |
msgstr ""
|
2538 |
|
2539 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2540 |
msgid "New status have been successfully added!"
|
2541 |
msgstr ""
|
2542 |
|
2543 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2544 |
msgid "Status was not added."
|
2545 |
msgstr ""
|
2546 |
|
2547 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2548 |
msgid "Status have been successfully deleted."
|
2549 |
msgstr ""
|
2550 |
|
2551 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2552 |
msgid "Delete failed."
|
2553 |
msgstr ""
|
2554 |
|
2555 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2556 |
msgid "Booster - Custom Statuses"
|
2557 |
msgstr ""
|
2558 |
|
2559 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2560 |
msgid ""
|
2561 |
"The tool lets you add or delete any custom status for WooCommerce orders."
|
2562 |
msgstr ""
|
2563 |
|
2564 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2565 |
msgid "Statuses"
|
2566 |
msgstr ""
|
2567 |
|
2568 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2569 |
msgid "Slug"
|
2570 |
msgstr ""
|
2571 |
|
2572 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2573 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2574 |
msgid "Icon Code"
|
2575 |
msgstr ""
|
2576 |
|
2577 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2578 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2579 |
msgid "Icon Color"
|
2580 |
msgstr ""
|
2581 |
|
2582 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2583 |
msgid "Slug (without wc- prefix)"
|
2584 |
msgstr ""
|
2585 |
|
2586 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2587 |
msgid "You can check icon codes <a target=\"_blank\" href=\"%s\">here</a>."
|
2588 |
msgstr ""
|
2589 |
|
2590 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2591 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2592 |
msgid "Mark"
|
2593 |
msgstr ""
|
2594 |
|
2595 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2596 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
2597 |
msgid "Default Order Status"
|
2598 |
msgstr ""
|
2599 |
|
2600 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2601 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
2602 |
msgid "Enable Custom Statuses feature to add custom statuses to the list."
|
2603 |
msgstr ""
|
2604 |
|
2605 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2606 |
msgid ""
|
2607 |
"You can change the default order status here. However payment gateways can "
|
2608 |
"change this status immediatelly on order creation. E.g. BACS gateway will "
|
2609 |
"change status to On-hold."
|
2610 |
msgstr ""
|
2611 |
|
2612 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2613 |
msgid "Add All Statuses to Admin Order Bulk Actions"
|
2614 |
msgstr ""
|
2615 |
|
2616 |
-
#: includes/class-wcj-order-custom-statuses.php:
|
2617 |
msgid "Add Custom Statuses to Admin Reports"
|
2618 |
msgstr ""
|
2619 |
|
@@ -2755,108 +2807,139 @@ msgstr ""
|
|
2755 |
#: includes/class-wcj-orders.php:26
|
2756 |
msgid ""
|
2757 |
"Minimum WooCommerce order amount (optionally by user role); orders auto-"
|
2758 |
-
"complete; custom admin order list columns."
|
2759 |
msgstr ""
|
2760 |
|
2761 |
-
#: includes/class-wcj-orders.php:
|
|
|
|
|
|
|
|
|
2762 |
msgid "All countries"
|
2763 |
msgstr ""
|
2764 |
|
2765 |
-
#: includes/class-wcj-orders.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2766 |
msgid "Order Minimum Amount"
|
2767 |
msgstr ""
|
2768 |
|
2769 |
-
#: includes/class-wcj-orders.php:
|
2770 |
msgid "This section lets you set minimum order amount."
|
2771 |
msgstr ""
|
2772 |
|
2773 |
-
#: includes/class-wcj-orders.php:
|
2774 |
msgid "Amount"
|
2775 |
msgstr ""
|
2776 |
|
2777 |
-
#: includes/class-wcj-orders.php:
|
2778 |
msgid "Minimum order amount. Set to 0 to disable."
|
2779 |
msgstr ""
|
2780 |
|
2781 |
-
#: includes/class-wcj-orders.php:
|
2782 |
msgid "Exclude Shipping from Cart Total"
|
2783 |
msgstr ""
|
2784 |
|
2785 |
-
#: includes/class-wcj-orders.php:
|
2786 |
msgid "Exclude"
|
2787 |
msgstr ""
|
2788 |
|
2789 |
-
#: includes/class-wcj-orders.php:
|
2790 |
msgid "Error message"
|
2791 |
msgstr ""
|
2792 |
|
2793 |
-
#: includes/class-wcj-orders.php:
|
2794 |
msgid ""
|
2795 |
"Message to customer if order is below minimum amount. Default: You must have "
|
2796 |
"an order with a minimum of %s to place your order, your current order total "
|
2797 |
"is %s."
|
2798 |
msgstr ""
|
2799 |
|
2800 |
-
#: includes/class-wcj-orders.php:
|
2801 |
msgid "Add notice to cart page also"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
-
#: includes/class-wcj-orders.php:
|
2805 |
msgid "Message on cart page"
|
2806 |
msgstr ""
|
2807 |
|
2808 |
-
#: includes/class-wcj-orders.php:
|
2809 |
msgid ""
|
2810 |
"Stop customer from seeing the Checkout page if minimum amount not reached."
|
2811 |
msgstr ""
|
2812 |
|
2813 |
-
#: includes/class-wcj-orders.php:
|
2814 |
msgid "Redirect back to Cart page"
|
2815 |
msgstr ""
|
2816 |
|
2817 |
-
#: includes/class-wcj-orders.php:
|
2818 |
msgid "Order Minimum Amount by User Role"
|
2819 |
msgstr ""
|
2820 |
|
2821 |
-
#: includes/class-wcj-orders.php:
|
2822 |
msgid "Orders Auto-Complete"
|
2823 |
msgstr ""
|
2824 |
|
2825 |
-
#: includes/class-wcj-orders.php:
|
2826 |
msgid "This section lets you enable orders auto-complete function."
|
2827 |
msgstr ""
|
2828 |
|
2829 |
-
#: includes/class-wcj-orders.php:
|
2830 |
msgid "Auto-complete all WooCommerce orders"
|
2831 |
msgstr ""
|
2832 |
|
2833 |
-
#: includes/class-wcj-orders.php:
|
2834 |
msgid ""
|
2835 |
"E.g. if you sell digital products then you are not shipping anything and you "
|
2836 |
"may want auto-complete all your orders."
|
2837 |
msgstr ""
|
2838 |
|
2839 |
-
#: includes/class-wcj-orders.php:
|
2840 |
msgid "Orders List Custom Columns"
|
2841 |
msgstr ""
|
2842 |
|
2843 |
-
#: includes/class-wcj-orders.php:
|
2844 |
msgid "This section lets you add custom columns to WooCommerce orders list."
|
2845 |
msgstr ""
|
2846 |
|
2847 |
-
#: includes/class-wcj-orders.php:
|
2848 |
msgid "Custom Columns Total Number"
|
2849 |
msgstr ""
|
2850 |
|
2851 |
-
#: includes/class-wcj-orders.php:
|
2852 |
msgid "Custom Column"
|
2853 |
msgstr ""
|
2854 |
|
2855 |
-
#: includes/class-wcj-orders.php:
|
2856 |
msgid "Value"
|
2857 |
msgstr ""
|
2858 |
|
2859 |
-
#: includes/class-wcj-orders.php:
|
2860 |
msgid "You can use shortcodes here."
|
2861 |
msgstr ""
|
2862 |
|
@@ -2870,24 +2953,24 @@ msgid ""
|
|
2870 |
"to show up."
|
2871 |
msgstr ""
|
2872 |
|
2873 |
-
#: includes/class-wcj-payment-gateways-by-country.php:
|
2874 |
#: includes/class-wcj-payment-gateways-by-user-role.php:83
|
2875 |
msgid "Leave empty to disable."
|
2876 |
msgstr ""
|
2877 |
|
2878 |
-
#: includes/class-wcj-payment-gateways-by-country.php:
|
2879 |
msgid "Include Countries"
|
2880 |
msgstr ""
|
2881 |
|
2882 |
-
#: includes/class-wcj-payment-gateways-by-country.php:
|
2883 |
msgid "Exclude Countries"
|
2884 |
msgstr ""
|
2885 |
|
2886 |
-
#: includes/class-wcj-payment-gateways-by-country.php:
|
2887 |
msgid "Include States (Base Country)"
|
2888 |
msgstr ""
|
2889 |
|
2890 |
-
#: includes/class-wcj-payment-gateways-by-country.php:
|
2891 |
msgid "Exclude States (Base Country)"
|
2892 |
msgstr ""
|
2893 |
|
@@ -2967,14 +3050,14 @@ msgstr ""
|
|
2967 |
#: includes/class-wcj-payment-gateways-fees.php:164
|
2968 |
#: includes/class-wcj-purchase-data.php:332
|
2969 |
#: includes/class-wcj-wholesale-price.php:260
|
2970 |
-
#: includes/class-wcj-wholesale-price.php:
|
2971 |
msgid "Fixed"
|
2972 |
msgstr ""
|
2973 |
|
2974 |
#: includes/class-wcj-payment-gateways-fees.php:165
|
2975 |
#: includes/class-wcj-purchase-data.php:333
|
2976 |
#: includes/class-wcj-wholesale-price.php:259
|
2977 |
-
#: includes/class-wcj-wholesale-price.php:
|
2978 |
msgid "Percent"
|
2979 |
msgstr ""
|
2980 |
|
@@ -3030,7 +3113,7 @@ msgid ""
|
|
3030 |
msgstr ""
|
3031 |
|
3032 |
#: includes/class-wcj-payment-gateways-icons.php:97
|
3033 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
3034 |
msgid ""
|
3035 |
"If you want to show an image next to the gateway's name on the frontend, "
|
3036 |
"enter a URL to an image."
|
@@ -3169,12 +3252,12 @@ msgid ""
|
|
3169 |
"gateway are in WooCommerce > Settings > Checkout."
|
3170 |
msgstr ""
|
3171 |
|
3172 |
-
#: includes/class-wcj-payment-gateways.php:
|
3173 |
msgid "Admin Title Custom Gateway"
|
3174 |
msgstr ""
|
3175 |
|
3176 |
-
#: includes/class-wcj-payment-gateways.php:
|
3177 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
3178 |
msgid "Custom Gateway"
|
3179 |
msgstr ""
|
3180 |
|
@@ -3206,23 +3289,23 @@ msgstr ""
|
|
3206 |
msgid "Invoices Monthly Reports."
|
3207 |
msgstr ""
|
3208 |
|
3209 |
-
#: includes/class-wcj-pdf-invoicing.php:
|
3210 |
msgid "PDF Invoicing General Options"
|
3211 |
msgstr ""
|
3212 |
|
3213 |
-
#: includes/class-wcj-pdf-invoicing.php:
|
3214 |
msgid "Create on New Order"
|
3215 |
msgstr ""
|
3216 |
|
3217 |
-
#: includes/class-wcj-pdf-invoicing.php:
|
3218 |
msgid "Create on Order Status"
|
3219 |
msgstr ""
|
3220 |
|
3221 |
-
#: includes/class-wcj-pdf-invoicing.php:
|
3222 |
msgid "Manual Only"
|
3223 |
msgstr ""
|
3224 |
|
3225 |
-
#: includes/class-wcj-pdf-invoicing.php:
|
3226 |
msgid "Hide Disabled Docs Settings"
|
3227 |
msgstr ""
|
3228 |
|
@@ -3236,146 +3319,174 @@ msgid ""
|
|
3236 |
"country."
|
3237 |
msgstr ""
|
3238 |
|
3239 |
-
#: includes/class-wcj-price-by-country.php:
|
|
|
|
|
|
|
|
|
3240 |
msgid "Price by Country Options"
|
3241 |
msgstr ""
|
3242 |
|
3243 |
-
#: includes/class-wcj-price-by-country.php:
|
3244 |
msgid ""
|
3245 |
"Change product's price and currency by customer's country. Customer's "
|
3246 |
"country is detected automatically by IP, or selected by customer manually."
|
3247 |
msgstr ""
|
3248 |
|
3249 |
-
#: includes/class-wcj-price-by-country.php:
|
3250 |
msgid "Customer Country Detection Method"
|
3251 |
msgstr ""
|
3252 |
|
3253 |
-
#: includes/class-wcj-price-by-country.php:
|
3254 |
msgid ""
|
3255 |
"If you choose \"by user selection\", use [wcj_country_select_drop_down_list] "
|
3256 |
"shortcode to display country selection list on frontend."
|
3257 |
msgstr ""
|
3258 |
|
3259 |
-
#: includes/class-wcj-price-by-country.php:
|
3260 |
msgid "by IP"
|
3261 |
msgstr ""
|
3262 |
|
3263 |
-
#: includes/class-wcj-price-by-country.php:
|
3264 |
msgid "by IP, then by user selection"
|
3265 |
msgstr ""
|
3266 |
|
3267 |
-
#: includes/class-wcj-price-by-country.php:
|
3268 |
msgid "by user selection"
|
3269 |
msgstr ""
|
3270 |
|
3271 |
-
#: includes/class-wcj-price-by-country.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3272 |
msgid "Override Country with Customer's Checkout Billing Country"
|
3273 |
msgstr ""
|
3274 |
|
3275 |
-
#: includes/class-wcj-price-by-country.php:
|
|
|
|
|
|
|
|
|
3276 |
msgid "Price Rounding"
|
3277 |
msgstr ""
|
3278 |
|
3279 |
-
#: includes/class-wcj-price-by-country.php:
|
3280 |
msgid "If you choose to multiply price, set rounding options here."
|
3281 |
msgstr ""
|
3282 |
|
3283 |
-
#: includes/class-wcj-price-by-country.php:
|
3284 |
msgid "No rounding"
|
3285 |
msgstr ""
|
3286 |
|
3287 |
-
#: includes/class-wcj-price-by-country.php:
|
3288 |
msgid "Round"
|
3289 |
msgstr ""
|
3290 |
|
3291 |
-
#: includes/class-wcj-price-by-country.php:
|
3292 |
msgid "Round down"
|
3293 |
msgstr ""
|
3294 |
|
3295 |
-
#: includes/class-wcj-price-by-country.php:
|
3296 |
msgid "Round up"
|
3297 |
msgstr ""
|
3298 |
|
3299 |
-
#: includes/class-wcj-price-by-country.php:
|
3300 |
msgid "Price by Country on per Product Basis"
|
3301 |
msgstr ""
|
3302 |
|
3303 |
-
#: includes/class-wcj-price-by-country.php:
|
3304 |
-
msgid "Price Filter Widget Support"
|
3305 |
msgstr ""
|
3306 |
|
3307 |
-
#: includes/class-wcj-price-by-country.php:
|
|
|
|
|
|
|
|
|
3308 |
msgid "Add Countries Flags Images to Select Drop-Down Box"
|
3309 |
msgstr ""
|
3310 |
|
3311 |
-
#: includes/class-wcj-price-by-country.php:
|
3312 |
msgid ""
|
3313 |
"If you are using [wcj_country_select_drop_down_list] shortcode or \"Booster: "
|
3314 |
"Country Switcher\" widget, this will add country flags to these select boxes."
|
3315 |
msgstr ""
|
3316 |
|
3317 |
-
#: includes/class-wcj-price-by-country.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3318 |
msgid "Country Groups"
|
3319 |
msgstr ""
|
3320 |
|
3321 |
-
#: includes/class-wcj-price-by-country.php:
|
3322 |
msgid "Countries Selection"
|
3323 |
msgstr ""
|
3324 |
|
3325 |
-
#: includes/class-wcj-price-by-country.php:
|
3326 |
msgid "Choose how do you want to enter countries groups in admin."
|
3327 |
msgstr ""
|
3328 |
|
3329 |
-
#: includes/class-wcj-price-by-country.php:
|
3330 |
msgid "Comma separated list"
|
3331 |
msgstr ""
|
3332 |
|
3333 |
-
#: includes/class-wcj-price-by-country.php:
|
3334 |
msgid "Multiselect"
|
3335 |
msgstr ""
|
3336 |
|
3337 |
-
#: includes/class-wcj-price-by-country.php:
|
3338 |
msgid "Chosen select"
|
3339 |
msgstr ""
|
3340 |
|
3341 |
-
#: includes/class-wcj-price-by-country.php:
|
3342 |
msgid "Autogenerate Groups"
|
3343 |
msgstr ""
|
3344 |
|
3345 |
-
#: includes/class-wcj-price-by-country.php:
|
3346 |
msgid "Currencies supported in both PayPal and Yahoo Exchange Rates:"
|
3347 |
msgstr ""
|
3348 |
|
3349 |
-
#: includes/class-wcj-price-by-country.php:
|
3350 |
-
#: includes/class-wcj-price-by-country.php:
|
3351 |
-
#: includes/class-wcj-price-by-country.php:
|
3352 |
msgid "Generate"
|
3353 |
msgstr ""
|
3354 |
|
3355 |
-
#: includes/class-wcj-price-by-country.php:
|
3356 |
msgid "Currencies supported in Yahoo Exchange Rates:"
|
3357 |
msgstr ""
|
3358 |
|
3359 |
-
#: includes/class-wcj-price-by-country.php:
|
3360 |
msgid "All Countries and Currencies:"
|
3361 |
msgstr ""
|
3362 |
|
3363 |
-
#: includes/class-wcj-price-by-country.php:
|
3364 |
msgid "Groups Number"
|
3365 |
msgstr ""
|
3366 |
|
3367 |
-
#: includes/class-wcj-price-by-country.php:
|
3368 |
msgid ""
|
3369 |
"Countries. List of comma separated country codes.<br>For country codes and "
|
3370 |
"predifined sets visit <a href=\"http://booster.io/features/prices-and-"
|
3371 |
"currencies-by-customers-country\" target=\"_blank\">http://booster.io</a>"
|
3372 |
msgstr ""
|
3373 |
|
3374 |
-
#: includes/class-wcj-price-by-country.php:
|
3375 |
msgid "Multiply Price by"
|
3376 |
msgstr ""
|
3377 |
|
3378 |
-
#: includes/class-wcj-price-by-country.php:
|
3379 |
#: includes/price-by-country/class-wcj-price-by-country-local.php:143
|
3380 |
msgid "Make empty price"
|
3381 |
msgstr ""
|
@@ -3709,102 +3820,132 @@ msgstr ""
|
|
3709 |
msgid "Open external products on add to cart in new window."
|
3710 |
msgstr ""
|
3711 |
|
3712 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3713 |
msgid "Disable Add to Cart Button (Single Product Page)"
|
3714 |
msgstr ""
|
3715 |
|
3716 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3717 |
msgid "Disable Add to Cart Button (Category/Archives)"
|
3718 |
msgstr ""
|
3719 |
|
3720 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3721 |
msgid "Add to Cart Local Redirect Options"
|
3722 |
msgstr ""
|
3723 |
|
3724 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3725 |
msgid ""
|
3726 |
"This section lets you set any local URL to redirect to after successfully "
|
3727 |
"adding product to cart. Leave empty to redirect to checkout page (skipping "
|
3728 |
"the cart page)."
|
3729 |
msgstr ""
|
3730 |
|
3731 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3732 |
msgid "Local Redirect"
|
3733 |
msgstr ""
|
3734 |
|
3735 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3736 |
msgid "Local Redirect URL"
|
3737 |
msgstr ""
|
3738 |
|
3739 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3740 |
msgid "Performs a safe (local) redirect, using wp_redirect()."
|
3741 |
msgstr ""
|
3742 |
|
3743 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3744 |
msgid "Local redirect URL. Leave empty to redirect to checkout."
|
3745 |
msgstr ""
|
3746 |
|
3747 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3748 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3749 |
msgid "Add to Cart on Visit"
|
3750 |
msgstr ""
|
3751 |
|
3752 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3753 |
msgid ""
|
3754 |
"This section lets you enable automatically adding product to cart on "
|
3755 |
"visiting the product page. Product is only added once, so if it is already "
|
3756 |
"in cart - duplicate product is not added. "
|
3757 |
msgstr ""
|
3758 |
|
3759 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3760 |
msgid "Add to Cart Variable Product"
|
3761 |
msgstr ""
|
3762 |
|
3763 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3764 |
msgid "Display Radio Buttons Instead of Drop Box"
|
3765 |
msgstr ""
|
3766 |
|
3767 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3768 |
msgid "Add to Cart Quantity"
|
3769 |
msgstr ""
|
3770 |
|
3771 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3772 |
msgid "Disable Quantity Field for All Products"
|
3773 |
msgstr ""
|
3774 |
|
3775 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3776 |
msgid "Disable on Single Product Page"
|
3777 |
msgstr ""
|
3778 |
|
3779 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3780 |
msgid "Disable on Cart Page"
|
3781 |
msgstr ""
|
3782 |
|
3783 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3784 |
-
msgid "Add to Cart Button"
|
3785 |
msgstr ""
|
3786 |
|
3787 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3788 |
-
msgid "
|
3789 |
msgstr ""
|
3790 |
|
3791 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
|
|
|
|
3792 |
msgid "This will add meta box to each product's edit page"
|
3793 |
msgstr ""
|
3794 |
|
3795 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3796 |
msgid "External Products"
|
3797 |
msgstr ""
|
3798 |
|
3799 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3800 |
msgid "Open External Products on Add to Cart in New Window"
|
3801 |
msgstr ""
|
3802 |
|
3803 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3804 |
msgid "Enable on Single Product Pages"
|
3805 |
msgstr ""
|
3806 |
|
3807 |
-
#: includes/class-wcj-product-add-to-cart.php:
|
3808 |
msgid "Enable on Category/Archive Pages"
|
3809 |
msgstr ""
|
3810 |
|
@@ -3816,11 +3957,11 @@ msgstr ""
|
|
3816 |
msgid "Add (paid/free/discount) addons to WooCommerce products."
|
3817 |
msgstr ""
|
3818 |
|
3819 |
-
#: includes/class-wcj-product-addons.php:
|
3820 |
msgid "Some of the required addons are not selected!"
|
3821 |
msgstr ""
|
3822 |
|
3823 |
-
#: includes/class-wcj-product-addons.php:
|
3824 |
msgid ""
|
3825 |
"Booster: Free plugin's version is limited to only three products with per "
|
3826 |
"product addons enabled at a time. You will need to get <a href=\"http://"
|
@@ -3828,103 +3969,129 @@ msgid ""
|
|
3828 |
"number of products with per product addons."
|
3829 |
msgstr ""
|
3830 |
|
3831 |
-
#: includes/class-wcj-product-addons.php:
|
3832 |
#: includes/class-wcj-wholesale-price.php:269
|
3833 |
#: includes/class-wcj-wholesale-price.php:304
|
3834 |
msgid "Save product after you change this number."
|
3835 |
msgstr ""
|
3836 |
|
3837 |
-
#: includes/class-wcj-product-addons.php:
|
3838 |
-
#: includes/class-wcj-product-addons.php:
|
3839 |
msgid "Product Addons Total Number"
|
3840 |
msgstr ""
|
3841 |
|
3842 |
-
#: includes/class-wcj-product-addons.php:
|
3843 |
-
#: includes/class-wcj-product-addons.php:
|
3844 |
msgid "Product Addon"
|
3845 |
msgstr ""
|
3846 |
|
3847 |
-
#: includes/class-wcj-product-addons.php:
|
3848 |
-
#: includes/class-wcj-product-addons.php:
|
3849 |
msgid "Radio Buttons"
|
3850 |
msgstr ""
|
3851 |
|
3852 |
-
#: includes/class-wcj-product-addons.php:
|
3853 |
-
#: includes/class-wcj-product-addons.php:
|
3854 |
msgid "Label(s)"
|
3855 |
msgstr ""
|
3856 |
|
3857 |
-
#: includes/class-wcj-product-addons.php:
|
3858 |
-
#: includes/class-wcj-product-addons.php:
|
3859 |
-
#: includes/class-wcj-product-addons.php:
|
3860 |
-
#: includes/class-wcj-product-addons.php:
|
3861 |
-
#: includes/class-wcj-product-addons.php:
|
3862 |
-
#: includes/class-wcj-product-addons.php:
|
3863 |
msgid "For radio enter one value per line."
|
3864 |
msgstr ""
|
3865 |
|
3866 |
-
#: includes/class-wcj-product-addons.php:
|
3867 |
-
#: includes/class-wcj-product-addons.php:
|
3868 |
msgid "Price(s)"
|
3869 |
msgstr ""
|
3870 |
|
3871 |
-
#: includes/class-wcj-product-addons.php:
|
3872 |
-
#: includes/class-wcj-product-addons.php:
|
3873 |
msgid "Tooltip(s)"
|
3874 |
msgstr ""
|
3875 |
|
3876 |
-
#: includes/class-wcj-product-addons.php:
|
3877 |
-
#: includes/class-wcj-product-addons.php:
|
3878 |
#: includes/class-wcj-purchase-data.php:338
|
3879 |
msgid "Default Value"
|
3880 |
msgstr ""
|
3881 |
|
3882 |
-
#: includes/class-wcj-product-addons.php:
|
3883 |
-
#: includes/class-wcj-product-addons.php:
|
3884 |
msgid ""
|
3885 |
"For checkbox use 'checked'; for radio enter default label. Leave blank for "
|
3886 |
"no default value."
|
3887 |
msgstr ""
|
3888 |
|
3889 |
-
#: includes/class-wcj-product-addons.php:
|
3890 |
msgid "Is required"
|
3891 |
msgstr ""
|
3892 |
|
3893 |
-
#: includes/class-wcj-product-addons.php:
|
3894 |
msgid "Enable per Product Addons"
|
3895 |
msgstr ""
|
3896 |
|
3897 |
-
#: includes/class-wcj-product-addons.php:
|
3898 |
msgid ""
|
3899 |
"When enabled, this will add new \"Booster: Product Addons\" meta box to each "
|
3900 |
"product's edit page."
|
3901 |
msgstr ""
|
3902 |
|
3903 |
-
#: includes/class-wcj-product-addons.php:
|
3904 |
msgid "All Product Options"
|
3905 |
msgstr ""
|
3906 |
|
3907 |
-
#: includes/class-wcj-product-addons.php:
|
3908 |
msgid "Enable All Products Addons"
|
3909 |
msgstr ""
|
3910 |
|
3911 |
-
#: includes/class-wcj-product-addons.php:
|
3912 |
msgid "When enabled, this will add addons below to all products."
|
3913 |
msgstr ""
|
3914 |
|
3915 |
-
#: includes/class-wcj-product-addons.php:
|
3916 |
msgid "Save changes after you change this number."
|
3917 |
msgstr ""
|
3918 |
|
3919 |
-
#: includes/class-wcj-product-addons.php:
|
3920 |
#: includes/class-wcj-product-by-user.php:190
|
3921 |
msgid "Is Required"
|
3922 |
msgstr ""
|
3923 |
|
3924 |
-
#: includes/class-wcj-product-addons.php:
|
3925 |
msgid "Enable AJAX on Single Product Page"
|
3926 |
msgstr ""
|
3927 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3928 |
#: includes/class-wcj-product-bookings.php:27
|
3929 |
msgid "Bookings"
|
3930 |
msgstr ""
|
@@ -4087,7 +4254,7 @@ msgid "Products category"
|
|
4087 |
msgstr ""
|
4088 |
|
4089 |
#: includes/class-wcj-product-bulk-price-converter.php:261
|
4090 |
-
#: includes/shortcodes/class-wcj-products-shortcodes.php:
|
4091 |
msgid "Any"
|
4092 |
msgstr ""
|
4093 |
|
@@ -4116,7 +4283,7 @@ msgid "Product Visibility by Country"
|
|
4116 |
msgstr ""
|
4117 |
|
4118 |
#: includes/class-wcj-product-by-country.php:28
|
4119 |
-
msgid "Display WooCommerce products by
|
4120 |
msgstr ""
|
4121 |
|
4122 |
#: includes/class-wcj-product-by-country.php:76
|
@@ -4125,8 +4292,8 @@ msgstr ""
|
|
4125 |
|
4126 |
#: includes/class-wcj-product-by-country.php:90
|
4127 |
msgid ""
|
4128 |
-
"When enabled, module will add new \"Booster: Product by Country\"
|
4129 |
-
"to each product's edit page."
|
4130 |
msgstr ""
|
4131 |
|
4132 |
#: includes/class-wcj-product-by-user-role.php:27
|
@@ -4134,17 +4301,21 @@ msgid "Product Visibility by User Role"
|
|
4134 |
msgstr ""
|
4135 |
|
4136 |
#: includes/class-wcj-product-by-user-role.php:28
|
4137 |
-
msgid "Display WooCommerce products by
|
4138 |
msgstr ""
|
4139 |
|
4140 |
-
#: includes/class-wcj-product-by-user-role.php:
|
4141 |
msgid "Visible for User Roles"
|
4142 |
msgstr ""
|
4143 |
|
4144 |
-
#: includes/class-wcj-product-by-user-role.php:
|
|
|
|
|
|
|
|
|
4145 |
msgid ""
|
4146 |
-
"When enabled, module will add new \"Booster: Product by User Role
|
4147 |
-
"to each product's edit page."
|
4148 |
msgstr ""
|
4149 |
|
4150 |
#: includes/class-wcj-product-by-user.php:27
|
@@ -4171,9 +4342,10 @@ msgstr ""
|
|
4171 |
#: includes/class-wcj-product-tabs.php:542
|
4172 |
#: includes/class-wcj-purchase-data.php:321
|
4173 |
#: includes/class-wcj-related-products.php:123
|
4174 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
4175 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:214
|
4176 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
4177 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:259
|
4178 |
msgid "Title"
|
4179 |
msgstr ""
|
@@ -5037,7 +5209,7 @@ msgstr ""
|
|
5037 |
#: includes/class-wcj-product-tabs.php:635
|
5038 |
#: includes/class-wcj-product-tabs.php:644
|
5039 |
#: includes/class-wcj-product-tabs.php:653
|
5040 |
-
#: includes/classes/class-wcj-module.php:
|
5041 |
msgid "Depreciated"
|
5042 |
msgstr ""
|
5043 |
|
@@ -5453,10 +5625,14 @@ msgstr ""
|
|
5453 |
msgid "Make non clickable"
|
5454 |
msgstr ""
|
5455 |
|
5456 |
-
#: includes/class-wcj-shipping.php:
|
5457 |
msgid "Add multiple custom shipping methods to WooCommerce."
|
5458 |
msgstr ""
|
5459 |
|
|
|
|
|
|
|
|
|
5460 |
#: includes/class-wcj-shipping.php:29
|
5461 |
msgid "Hide WooCommerce shipping when free is available."
|
5462 |
msgstr ""
|
@@ -5465,113 +5641,182 @@ msgstr ""
|
|
5465 |
msgid "Display \"left to free shipping\" info."
|
5466 |
msgstr ""
|
5467 |
|
5468 |
-
#: includes/class-wcj-shipping.php:
|
5469 |
-
#: includes/class-wcj-shipping.php:
|
5470 |
-
#: includes/class-wcj-shipping.php:
|
5471 |
-
#: includes/functions/wcj-functions.php:
|
5472 |
#: includes/widgets/class-wcj-widget-left-to-free-shipping.php:53
|
5473 |
msgid "%left_to_free% left to free shipping"
|
5474 |
msgstr ""
|
5475 |
|
5476 |
-
#: includes/class-wcj-shipping.php:
|
5477 |
msgid "Booster: Hide shipping"
|
5478 |
msgstr ""
|
5479 |
|
5480 |
-
#: includes/class-wcj-shipping.php:
|
5481 |
msgid "Hide all when free is available"
|
5482 |
msgstr ""
|
5483 |
|
5484 |
-
#: includes/class-wcj-shipping.php:
|
5485 |
msgid "WooCommerce > Settings > Shipping"
|
5486 |
msgstr ""
|
5487 |
|
5488 |
-
#: includes/class-wcj-shipping.php:
|
5489 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
5490 |
msgid "Custom Shipping"
|
5491 |
msgstr ""
|
5492 |
|
5493 |
-
#: includes/class-wcj-shipping.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5494 |
msgid "This section lets you set number of custom shipping methods to add."
|
5495 |
msgstr ""
|
5496 |
|
5497 |
-
#: includes/class-wcj-shipping.php:
|
5498 |
msgid "After setting the number, visit %s to set each method options."
|
5499 |
msgstr ""
|
5500 |
|
5501 |
-
#: includes/class-wcj-shipping.php:
|
5502 |
msgid "Custom Shipping Methods Number"
|
5503 |
msgstr ""
|
5504 |
|
5505 |
-
#: includes/class-wcj-shipping.php:
|
5506 |
msgid "Admin Title Custom Shipping"
|
5507 |
msgstr ""
|
5508 |
|
5509 |
-
#: includes/class-wcj-shipping.php:
|
5510 |
msgid "Hide if Free is Available"
|
5511 |
msgstr ""
|
5512 |
|
5513 |
-
#: includes/class-wcj-shipping.php:
|
5514 |
msgid ""
|
5515 |
"This section lets you hide other shipping options when free shipping is "
|
5516 |
"available on shop frontend."
|
5517 |
msgstr ""
|
5518 |
|
5519 |
-
#: includes/class-wcj-shipping.php:
|
5520 |
msgid "Hide shipping"
|
5521 |
msgstr ""
|
5522 |
|
5523 |
-
#: includes/class-wcj-shipping.php:
|
5524 |
msgid "Left to Free Shipping Info Options"
|
5525 |
msgstr ""
|
5526 |
|
5527 |
-
#: includes/class-wcj-shipping.php:
|
5528 |
msgid ""
|
5529 |
"This section lets you enable info on cart, mini cart and checkout pages."
|
5530 |
msgstr ""
|
5531 |
|
5532 |
-
#: includes/class-wcj-shipping.php:
|
5533 |
msgid ""
|
5534 |
"You can also use <em>Booster - Left to Free Shipping</em> widget, <em>"
|
5535 |
"[wcj_get_left_to_free_shipping content=\"\"]</em> shortcode or "
|
5536 |
"<em>wcj_get_left_to_free_shipping( $content );</em> function."
|
5537 |
msgstr ""
|
5538 |
|
5539 |
-
#: includes/class-wcj-shipping.php:
|
5540 |
msgid ""
|
5541 |
"In content you can use: <em>%left_to_free%</em> and <em>"
|
5542 |
"%free_shipping_min_amount%</em> shortcodes."
|
5543 |
msgstr ""
|
5544 |
|
5545 |
-
#: includes/class-wcj-shipping.php:
|
5546 |
msgid "Info on Cart"
|
5547 |
msgstr ""
|
5548 |
|
5549 |
-
#: includes/class-wcj-shipping.php:
|
5550 |
-
#: includes/class-wcj-shipping.php:
|
5551 |
msgid "Position Order (Priority)"
|
5552 |
msgstr ""
|
5553 |
|
5554 |
-
#: includes/class-wcj-shipping.php:
|
5555 |
msgid "Info on Mini Cart"
|
5556 |
msgstr ""
|
5557 |
|
5558 |
-
#: includes/class-wcj-shipping.php:
|
5559 |
msgid "Info on Checkout"
|
5560 |
msgstr ""
|
5561 |
|
5562 |
-
#: includes/class-wcj-shipping.php:
|
5563 |
msgid "Message on Free Shipping Reached"
|
5564 |
msgstr ""
|
5565 |
|
5566 |
-
#: includes/class-wcj-shipping.php:
|
5567 |
msgid "You can set it empty"
|
5568 |
msgstr ""
|
5569 |
|
5570 |
-
#: includes/class-wcj-shipping.php:
|
5571 |
-
#: includes/functions/wcj-functions.php:
|
5572 |
msgid "You have Free delivery"
|
5573 |
msgstr ""
|
5574 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5575 |
#: includes/class-wcj-sku.php:27
|
5576 |
msgid "Generate WooCommerce SKUs automatically."
|
5577 |
msgstr ""
|
@@ -5688,78 +5933,78 @@ msgid ""
|
|
5688 |
"Tool."
|
5689 |
msgstr ""
|
5690 |
|
5691 |
-
#: includes/class-wcj-sorting.php:
|
5692 |
msgid "Sorting"
|
5693 |
msgstr ""
|
5694 |
|
5695 |
-
#: includes/class-wcj-sorting.php:
|
5696 |
msgid ""
|
5697 |
"Add more WooCommerce sorting options or remove all sorting including default."
|
5698 |
msgstr ""
|
5699 |
|
5700 |
-
#: includes/class-wcj-sorting.php:
|
5701 |
msgid "WooJetpack: Remove All Sorting"
|
5702 |
msgstr ""
|
5703 |
|
5704 |
-
#: includes/class-wcj-sorting.php:
|
5705 |
msgid "Completely remove sorting from the shop front end"
|
5706 |
msgstr ""
|
5707 |
|
5708 |
-
#: includes/class-wcj-sorting.php:
|
5709 |
msgid "Remove All Sorting"
|
5710 |
msgstr ""
|
5711 |
|
5712 |
-
#: includes/class-wcj-sorting.php:
|
5713 |
msgid "Remove all sorting (including WooCommerce default)"
|
5714 |
msgstr ""
|
5715 |
|
5716 |
-
#: includes/class-wcj-sorting.php:
|
5717 |
msgid "Add More Sorting"
|
5718 |
msgstr ""
|
5719 |
|
5720 |
-
#: includes/class-wcj-sorting.php:
|
5721 |
msgid "Sort by Name"
|
5722 |
msgstr ""
|
5723 |
|
5724 |
-
#: includes/class-wcj-sorting.php:
|
5725 |
msgid "Sort by title: A to Z"
|
5726 |
msgstr ""
|
5727 |
|
5728 |
-
#: includes/class-wcj-sorting.php:
|
5729 |
-
#: includes/class-wcj-sorting.php:
|
5730 |
-
#: includes/class-wcj-sorting.php:
|
5731 |
msgid "Text to show on frontend. Leave blank to disable."
|
5732 |
msgstr ""
|
5733 |
|
5734 |
-
#: includes/class-wcj-sorting.php:
|
5735 |
msgid "Sort by title: Z to A"
|
5736 |
msgstr ""
|
5737 |
|
5738 |
-
#: includes/class-wcj-sorting.php:
|
5739 |
msgid "Sort by SKU"
|
5740 |
msgstr ""
|
5741 |
|
5742 |
-
#: includes/class-wcj-sorting.php:
|
5743 |
msgid "Sort by SKU: low to high"
|
5744 |
msgstr ""
|
5745 |
|
5746 |
-
#: includes/class-wcj-sorting.php:
|
5747 |
msgid "Sort by SKU: high to low"
|
5748 |
msgstr ""
|
5749 |
|
5750 |
-
#: includes/class-wcj-sorting.php:
|
5751 |
msgid "Sort SKUs as numbers instead of as texts"
|
5752 |
msgstr ""
|
5753 |
|
5754 |
-
#: includes/class-wcj-sorting.php:
|
5755 |
msgid "Sort by stock quantity"
|
5756 |
msgstr ""
|
5757 |
|
5758 |
-
#: includes/class-wcj-sorting.php:
|
5759 |
msgid "Sort by stock quantity: low to high"
|
5760 |
msgstr ""
|
5761 |
|
5762 |
-
#: includes/class-wcj-sorting.php:
|
5763 |
msgid "Sort by stock quantity: high to low"
|
5764 |
msgstr ""
|
5765 |
|
@@ -5778,14 +6023,14 @@ msgid "Enable per Product Levels"
|
|
5778 |
msgstr ""
|
5779 |
|
5780 |
#: includes/class-wcj-wholesale-price.php:262
|
5781 |
-
#: includes/class-wcj-wholesale-price.php:
|
5782 |
msgid "Discount Type"
|
5783 |
msgstr ""
|
5784 |
|
5785 |
#: includes/class-wcj-wholesale-price.php:268
|
5786 |
#: includes/class-wcj-wholesale-price.php:303
|
5787 |
-
#: includes/class-wcj-wholesale-price.php:
|
5788 |
-
#: includes/class-wcj-wholesale-price.php:
|
5789 |
msgid "Number of levels"
|
5790 |
msgstr ""
|
5791 |
|
@@ -5805,17 +6050,17 @@ msgstr ""
|
|
5805 |
|
5806 |
#: includes/class-wcj-wholesale-price.php:283
|
5807 |
#: includes/class-wcj-wholesale-price.php:318
|
5808 |
-
#: includes/class-wcj-wholesale-price.php:
|
5809 |
-
#: includes/class-wcj-wholesale-price.php:
|
5810 |
msgid "Min quantity"
|
5811 |
msgstr ""
|
5812 |
|
5813 |
#: includes/class-wcj-wholesale-price.php:290
|
5814 |
#: includes/class-wcj-wholesale-price.php:325
|
5815 |
-
#: includes/class-wcj-wholesale-price.php:463
|
5816 |
#: includes/class-wcj-wholesale-price.php:464
|
5817 |
-
#: includes/class-wcj-wholesale-price.php:
|
5818 |
#: includes/class-wcj-wholesale-price.php:520
|
|
|
5819 |
msgid "Discount"
|
5820 |
msgstr ""
|
5821 |
|
@@ -5841,43 +6086,51 @@ msgstr ""
|
|
5841 |
msgid "Show discount info on cart page"
|
5842 |
msgstr ""
|
5843 |
|
|
|
|
|
|
|
|
|
5844 |
#: includes/class-wcj-wholesale-price.php:399
|
5845 |
msgid "If show discount info on cart page is enabled, set format here"
|
5846 |
msgstr ""
|
5847 |
|
5848 |
-
#: includes/class-wcj-wholesale-price.php:
|
5849 |
-
msgid "
|
5850 |
msgstr ""
|
5851 |
|
5852 |
#: includes/class-wcj-wholesale-price.php:417
|
|
|
|
|
|
|
|
|
5853 |
msgid "Leave blank to include all products."
|
5854 |
msgstr ""
|
5855 |
|
5856 |
-
#: includes/class-wcj-wholesale-price.php:
|
5857 |
msgid "Products to exclude"
|
5858 |
msgstr ""
|
5859 |
|
5860 |
-
#: includes/class-wcj-wholesale-price.php:
|
5861 |
msgid "Wholesale Levels Options"
|
5862 |
msgstr ""
|
5863 |
|
5864 |
-
#: includes/class-wcj-wholesale-price.php:
|
5865 |
-
#: includes/class-wcj-wholesale-price.php:
|
5866 |
msgid "Minimum quantity to apply discount"
|
5867 |
msgstr ""
|
5868 |
|
5869 |
-
#: includes/class-wcj-wholesale-price.php:
|
5870 |
msgid "Additional User Roles Options"
|
5871 |
msgstr ""
|
5872 |
|
5873 |
-
#: includes/class-wcj-wholesale-price.php:
|
5874 |
msgid ""
|
5875 |
"If you want to set different wholesale pricing options for different user "
|
5876 |
"roles, fill this section. Please note that you can also use Booster's "
|
5877 |
"\"Price by User Role\" module without filling this section."
|
5878 |
msgstr ""
|
5879 |
|
5880 |
-
#: includes/class-wcj-wholesale-price.php:
|
5881 |
msgid "User Roles Settings"
|
5882 |
msgstr ""
|
5883 |
|
@@ -5889,11 +6142,11 @@ msgstr ""
|
|
5889 |
msgid "Booster for WooCommerce basic WPML support."
|
5890 |
msgstr ""
|
5891 |
|
5892 |
-
#: includes/class-wcj-wpml.php:66 includes/classes/class-wcj-module.php:
|
5893 |
msgid "Tools"
|
5894 |
msgstr ""
|
5895 |
|
5896 |
-
#: includes/class-wcj-wpml.php:71 includes/classes/class-wcj-module.php:
|
5897 |
msgid "Module Tools"
|
5898 |
msgstr ""
|
5899 |
|
@@ -5914,35 +6167,35 @@ msgstr ""
|
|
5914 |
msgid "Settings have been reset to defaults."
|
5915 |
msgstr ""
|
5916 |
|
5917 |
-
#: includes/classes/class-wcj-module.php:
|
5918 |
msgid "Back to Module Settings"
|
5919 |
msgstr ""
|
5920 |
|
5921 |
-
#: includes/classes/class-wcj-module.php:
|
5922 |
msgid "disabled"
|
5923 |
msgstr ""
|
5924 |
|
5925 |
-
#: includes/classes/class-wcj-module.php:
|
5926 |
msgid "Reset Settings"
|
5927 |
msgstr ""
|
5928 |
|
5929 |
-
#: includes/classes/class-wcj-module.php:
|
5930 |
msgid "Reset Module to Default Settings"
|
5931 |
msgstr ""
|
5932 |
|
5933 |
-
#: includes/classes/class-wcj-module.php:
|
5934 |
msgid "Reset Submodule to Default Settings"
|
5935 |
msgstr ""
|
5936 |
|
5937 |
-
#: includes/classes/class-wcj-module.php:
|
5938 |
msgid "Reset settings"
|
5939 |
msgstr ""
|
5940 |
|
5941 |
-
#: includes/classes/class-wcj-module.php:
|
5942 |
msgid "Module Options"
|
5943 |
msgstr ""
|
5944 |
|
5945 |
-
#: includes/classes/class-wcj-module.php:
|
5946 |
msgid "Enable Module"
|
5947 |
msgstr ""
|
5948 |
|
@@ -6614,33 +6867,33 @@ msgstr ""
|
|
6614 |
msgid "[{site_title}] Custom Subject - Order ({order_number}) - {order_date}"
|
6615 |
msgstr ""
|
6616 |
|
6617 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6618 |
msgid "New order (%s)"
|
6619 |
msgstr ""
|
6620 |
|
6621 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6622 |
msgid "Order status updated to %s"
|
6623 |
msgstr ""
|
6624 |
|
6625 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6626 |
msgid "Order status %s to %s"
|
6627 |
msgstr ""
|
6628 |
|
6629 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6630 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
6631 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
6632 |
msgid "Enable/Disable"
|
6633 |
msgstr ""
|
6634 |
|
6635 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6636 |
msgid "Enable this email notification"
|
6637 |
msgstr ""
|
6638 |
|
6639 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6640 |
msgid "Trigger(s)"
|
6641 |
msgstr ""
|
6642 |
|
6643 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6644 |
msgid ""
|
6645 |
"Please note, that all new orders in WooCommerce by default are created with "
|
6646 |
"Pending Payment status. If you want to change the default order status - you "
|
@@ -6648,78 +6901,94 @@ msgid ""
|
|
6648 |
"Settings > Booster > Shipping & Orders > Order Custom Statuses)."
|
6649 |
msgstr ""
|
6650 |
|
6651 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6652 |
msgid "New order (Any status)"
|
6653 |
msgstr ""
|
6654 |
|
6655 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6656 |
msgid "Reset password notification"
|
6657 |
msgstr ""
|
6658 |
|
6659 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6660 |
msgid "Order fully refunded notification"
|
6661 |
msgstr ""
|
6662 |
|
6663 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6664 |
msgid "Order partially refunded notification"
|
6665 |
msgstr ""
|
6666 |
|
6667 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6668 |
msgid "New customer note notification"
|
6669 |
msgstr ""
|
6670 |
|
6671 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6672 |
msgid "Recipient(s)"
|
6673 |
msgstr ""
|
6674 |
|
6675 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6676 |
msgid ""
|
6677 |
"Enter recipients (comma separated) for this email. Defaults to <code>%s</"
|
6678 |
"code>."
|
6679 |
msgstr ""
|
6680 |
|
6681 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6682 |
msgid "Or enter <code>%customer%</code> to send to customer billing email."
|
6683 |
msgstr ""
|
6684 |
|
6685 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6686 |
msgid "Subject"
|
6687 |
msgstr ""
|
6688 |
|
6689 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6690 |
msgid ""
|
6691 |
"This controls the email subject line. Leave blank to use the default "
|
6692 |
"subject: <code>%s</code>."
|
6693 |
msgstr ""
|
6694 |
|
6695 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6696 |
msgid "Email Heading"
|
6697 |
msgstr ""
|
6698 |
|
6699 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6700 |
msgid ""
|
6701 |
"This controls the main heading contained within the email notification. "
|
6702 |
"Leave blank to use the default heading: <code>%s</code>."
|
6703 |
msgstr ""
|
6704 |
|
6705 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6706 |
msgid "Email type"
|
6707 |
msgstr ""
|
6708 |
|
6709 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6710 |
msgid "Choose which format of email to send."
|
6711 |
msgstr ""
|
6712 |
|
6713 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6714 |
msgid "HTML template"
|
6715 |
msgstr ""
|
6716 |
|
6717 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6718 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6719 |
msgid "You can use shortcodes here. E.g. Booster's order shortcodes."
|
6720 |
msgstr ""
|
6721 |
|
6722 |
-
#: includes/emails/class-wc-email-wcj-custom.php:
|
6723 |
msgid "Plain text template"
|
6724 |
msgstr ""
|
6725 |
|
@@ -7719,97 +7988,97 @@ msgstr ""
|
|
7719 |
msgid "Zimbabwe"
|
7720 |
msgstr ""
|
7721 |
|
7722 |
-
#: includes/functions/wcj-functions.php:
|
7723 |
msgid "Before cart"
|
7724 |
msgstr ""
|
7725 |
|
7726 |
-
#: includes/functions/wcj-functions.php:
|
7727 |
msgid "Before cart table"
|
7728 |
msgstr ""
|
7729 |
|
7730 |
-
#: includes/functions/wcj-functions.php:
|
7731 |
msgid "Before cart contents"
|
7732 |
msgstr ""
|
7733 |
|
7734 |
-
#: includes/functions/wcj-functions.php:
|
7735 |
msgid "Cart contents"
|
7736 |
msgstr ""
|
7737 |
|
7738 |
-
#: includes/functions/wcj-functions.php:
|
7739 |
msgid "Cart coupon"
|
7740 |
msgstr ""
|
7741 |
|
7742 |
-
#: includes/functions/wcj-functions.php:
|
7743 |
msgid "Cart actions"
|
7744 |
msgstr ""
|
7745 |
|
7746 |
-
#: includes/functions/wcj-functions.php:
|
7747 |
msgid "After cart contents"
|
7748 |
msgstr ""
|
7749 |
|
7750 |
-
#: includes/functions/wcj-functions.php:
|
7751 |
msgid "After cart table"
|
7752 |
msgstr ""
|
7753 |
|
7754 |
-
#: includes/functions/wcj-functions.php:
|
7755 |
msgid "Cart collaterals"
|
7756 |
msgstr ""
|
7757 |
|
7758 |
-
#: includes/functions/wcj-functions.php:
|
7759 |
msgid "After cart"
|
7760 |
msgstr ""
|
7761 |
|
7762 |
-
#: includes/functions/wcj-functions.php:
|
7763 |
msgid "Before cart totals"
|
7764 |
msgstr ""
|
7765 |
|
7766 |
-
#: includes/functions/wcj-functions.php:
|
7767 |
msgid "Cart totals: Before shipping"
|
7768 |
msgstr ""
|
7769 |
|
7770 |
-
#: includes/functions/wcj-functions.php:
|
7771 |
msgid "Cart totals: After shipping"
|
7772 |
msgstr ""
|
7773 |
|
7774 |
-
#: includes/functions/wcj-functions.php:
|
7775 |
msgid "Cart totals: Before order total"
|
7776 |
msgstr ""
|
7777 |
|
7778 |
-
#: includes/functions/wcj-functions.php:
|
7779 |
msgid "Cart totals: After order total"
|
7780 |
msgstr ""
|
7781 |
|
7782 |
-
#: includes/functions/wcj-functions.php:
|
7783 |
msgid "Proceed to checkout"
|
7784 |
msgstr ""
|
7785 |
|
7786 |
-
#: includes/functions/wcj-functions.php:
|
7787 |
msgid "After cart totals"
|
7788 |
msgstr ""
|
7789 |
|
7790 |
-
#: includes/functions/wcj-functions.php:
|
7791 |
msgid "Before shipping calculator"
|
7792 |
msgstr ""
|
7793 |
|
7794 |
-
#: includes/functions/wcj-functions.php:
|
7795 |
msgid "After shipping calculator"
|
7796 |
msgstr ""
|
7797 |
|
7798 |
-
#: includes/functions/wcj-functions.php:
|
7799 |
msgid "If cart is empty"
|
7800 |
msgstr ""
|
7801 |
|
7802 |
-
#: includes/functions/wcj-functions.php:
|
7803 |
-
#: includes/functions/wcj-functions.php:
|
7804 |
msgid "Guest"
|
7805 |
msgstr ""
|
7806 |
|
7807 |
-
#: includes/functions/wcj-functions.php:
|
7808 |
msgctxt "Order status"
|
7809 |
msgid "Pending Payment"
|
7810 |
msgstr ""
|
7811 |
|
7812 |
-
#: includes/functions/wcj-functions.php:
|
7813 |
msgctxt "Order status"
|
7814 |
msgid "On Hold"
|
7815 |
msgstr ""
|
@@ -7854,118 +8123,119 @@ msgstr ""
|
|
7854 |
msgid "Custom Documents"
|
7855 |
msgstr ""
|
7856 |
|
7857 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7858 |
msgid "Enable Custom Payment"
|
7859 |
msgstr ""
|
7860 |
|
7861 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7862 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
7863 |
msgid "This controls the title which the user sees during checkout."
|
7864 |
msgstr ""
|
7865 |
|
7866 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7867 |
msgid "Custom Payment"
|
7868 |
msgstr ""
|
7869 |
|
7870 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7871 |
msgid "Payment method description that the customer will see on your checkout."
|
7872 |
msgstr ""
|
7873 |
|
7874 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7875 |
msgid "You can add input fields with [wcj_input_field] shortcode."
|
7876 |
msgstr ""
|
7877 |
|
7878 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7879 |
msgid "Custom Payment Description."
|
7880 |
msgstr ""
|
7881 |
|
7882 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7883 |
msgid "Instructions"
|
7884 |
msgstr ""
|
7885 |
|
7886 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7887 |
msgid "Instructions that will be added to the thank you page."
|
7888 |
msgstr ""
|
7889 |
|
7890 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7891 |
msgid "Email Instructions"
|
7892 |
msgstr ""
|
7893 |
|
7894 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7895 |
msgid "Instructions that will be added to the emails."
|
7896 |
msgstr ""
|
7897 |
|
7898 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7899 |
msgid "Icon"
|
7900 |
msgstr ""
|
7901 |
|
7902 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7903 |
msgid "Minimum order amount"
|
7904 |
msgstr ""
|
7905 |
|
7906 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7907 |
msgid ""
|
7908 |
-
"If you want to set minimum order amount to show this
|
7909 |
-
"enter a number here. Set to 0 to disable."
|
7910 |
msgstr ""
|
7911 |
|
7912 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7913 |
msgid "Enable for shipping methods"
|
7914 |
msgstr ""
|
7915 |
|
7916 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7917 |
msgid ""
|
7918 |
"If gateway is only available for certain shipping methods, set it up here. "
|
7919 |
"Leave blank to enable for all methods."
|
7920 |
msgstr ""
|
7921 |
|
7922 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7923 |
msgid "Select shipping methods"
|
7924 |
msgstr ""
|
7925 |
|
7926 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7927 |
msgid "Enable for virtual orders"
|
7928 |
msgstr ""
|
7929 |
|
7930 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7931 |
msgid "Enable gateway if the order is virtual"
|
7932 |
msgstr ""
|
7933 |
|
7934 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7935 |
msgid "Send Additional Emails"
|
7936 |
msgstr ""
|
7937 |
|
7938 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7939 |
msgid "Send to Admin"
|
7940 |
msgstr ""
|
7941 |
|
7942 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7943 |
msgid "Send to Customer"
|
7944 |
msgstr ""
|
7945 |
|
7946 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7947 |
msgid ""
|
7948 |
"This may help if you are using pending or custom default status and not "
|
7949 |
"getting new order emails."
|
7950 |
msgstr ""
|
7951 |
|
7952 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7953 |
msgid "Custom Return URL (Thank You Page)"
|
7954 |
msgstr ""
|
7955 |
|
7956 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7957 |
msgid "URL"
|
7958 |
msgstr ""
|
7959 |
|
7960 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7961 |
msgid "Enter full URL with http(s)."
|
7962 |
msgstr ""
|
7963 |
|
7964 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7965 |
msgid "Optional. Leave blank to use default URL."
|
7966 |
msgstr ""
|
7967 |
|
7968 |
-
#: includes/gateways/class-wc-gateway-wcj-custom.php:
|
7969 |
msgid "Booster for WooCommerce: Custom Payment Gateway"
|
7970 |
msgstr ""
|
7971 |
|
@@ -8640,10 +8910,6 @@ msgstr ""
|
|
8640 |
msgid "Reset Currency Rates"
|
8641 |
msgstr ""
|
8642 |
|
8643 |
-
#: includes/reports/wcj-class-reports-sales.php:177
|
8644 |
-
msgid "Filter"
|
8645 |
-
msgstr ""
|
8646 |
-
|
8647 |
#: includes/reports/wcj-class-reports-stock.php:30
|
8648 |
msgid "All Products on Stock"
|
8649 |
msgstr ""
|
@@ -8743,66 +9009,78 @@ msgstr ""
|
|
8743 |
msgid "Report was generated in: "
|
8744 |
msgstr ""
|
8745 |
|
8746 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
8747 |
msgid "Booster: Custom Shipping Method"
|
8748 |
msgstr ""
|
8749 |
|
8750 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
8751 |
-
|
8752 |
-
msgstr ""
|
8753 |
-
|
8754 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:88
|
8755 |
msgid "Cost calculation type."
|
8756 |
msgstr ""
|
8757 |
|
8758 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
8759 |
msgid "Flat Rate"
|
8760 |
msgstr ""
|
8761 |
|
8762 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
8763 |
msgid "By Total Cart Weight"
|
8764 |
msgstr ""
|
8765 |
|
8766 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
8767 |
msgid "By Total Cart Weight Table"
|
8768 |
msgstr ""
|
8769 |
|
8770 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
8771 |
msgid "By Total Cart Quantity"
|
8772 |
msgstr ""
|
8773 |
|
8774 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
8775 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
|
|
8776 |
msgid "Cost"
|
8777 |
msgstr ""
|
8778 |
|
8779 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
8780 |
msgid ""
|
8781 |
"Cost. If calculating by weight - then cost per one weight unit. If "
|
8782 |
"calculating by quantity - then cost per one piece."
|
8783 |
msgstr ""
|
8784 |
|
8785 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
8786 |
msgid "Weight Table Total Rows"
|
8787 |
msgstr ""
|
8788 |
|
8789 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
8790 |
msgid "Press Save changes after you change this number."
|
8791 |
msgstr ""
|
8792 |
|
8793 |
-
#: includes/shipping/class-wc-shipping-wcj-custom.php:
|
|
|
8794 |
msgid "Max Weight"
|
8795 |
msgstr ""
|
8796 |
|
|
|
|
|
|
|
|
|
8797 |
#: includes/shortcodes/class-wcj-input-field-shortcodes.php:52
|
8798 |
msgid "Attribute \"name\" is required!"
|
8799 |
msgstr ""
|
8800 |
|
8801 |
-
#: includes/shortcodes/class-wcj-orders-shortcodes.php:
|
8802 |
msgid "Dollars"
|
8803 |
msgstr ""
|
8804 |
|
8805 |
-
#: includes/shortcodes/class-wcj-orders-shortcodes.php:
|
8806 |
msgid "Cents"
|
8807 |
msgstr ""
|
8808 |
|
@@ -8838,11 +9116,11 @@ msgstr ""
|
|
8838 |
msgid "Edit Product"
|
8839 |
msgstr ""
|
8840 |
|
8841 |
-
#: includes/shortcodes/class-wcj-products-shortcodes.php:
|
8842 |
msgid "%s ago"
|
8843 |
msgstr ""
|
8844 |
|
8845 |
-
#: includes/shortcodes/class-wcj-products-shortcodes.php:
|
8846 |
msgid "No sales yet."
|
8847 |
msgstr ""
|
8848 |
|
@@ -8964,7 +9242,7 @@ msgid ""
|
|
8964 |
"rating. Thank you, we couldn't have done it without you!"
|
8965 |
msgstr ""
|
8966 |
|
8967 |
-
#. #-#-#-#-# plugin.pot (Booster for WooCommerce 2.5.
|
8968 |
#. Plugin Name of the plugin/theme
|
8969 |
#: woocommerce-jetpack.php:342
|
8970 |
msgid "Booster for WooCommerce"
|
2 |
# This file is distributed under the same license as the Booster for WooCommerce package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Booster for WooCommerce 2.5.6\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-"
|
7 |
"jetpack\n"
|
8 |
+
"POT-Creation-Date: 2016-11-23 18:32:02+00:00\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
29 |
#: includes/admin/class-wc-settings-jetpack.php:347
|
30 |
#: includes/class-wcj-checkout-files-upload.php:140
|
31 |
#: includes/class-wcj-payment-gateways.php:55
|
32 |
+
#: includes/classes/class-wcj-module.php:182
|
33 |
+
#: includes/classes/class-wcj-module.php:371
|
34 |
msgid "Booster"
|
35 |
msgstr ""
|
36 |
|
123 |
#: includes/admin/class-wcj-tools.php:75
|
124 |
#: includes/class-wcj-eu-vat-number.php:373
|
125 |
#: includes/class-wcj-product-by-user.php:159
|
126 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:76
|
127 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:151
|
128 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:266
|
129 |
msgid "Description"
|
130 |
msgstr ""
|
131 |
|
132 |
#: includes/admin/class-wc-settings-jetpack.php:486
|
133 |
+
#: includes/classes/class-wcj-module.php:510
|
134 |
msgid "Documentation"
|
135 |
msgstr ""
|
136 |
|
204 |
msgstr ""
|
205 |
|
206 |
#: includes/admin/wcj-modules-cats.php:94
|
207 |
+
#: includes/class-wcj-payment-gateways-by-country.php:88
|
208 |
#: includes/class-wcj-payment-gateways-by-user-role.php:81
|
209 |
#: includes/class-wcj-payment-gateways-min-max.php:90
|
210 |
msgid "Payment Gateways"
|
246 |
#: includes/class-wcj-add-to-cart.php:212
|
247 |
#: includes/class-wcj-product-images.php:252
|
248 |
#: includes/class-wcj-product-images.php:326
|
249 |
+
#: includes/class-wcj-shipping.php:464 includes/class-wcj-shipping.php:496
|
250 |
msgid "Enable Section"
|
251 |
msgstr ""
|
252 |
|
285 |
#: includes/class-wcj-add-to-cart.php:90
|
286 |
#: includes/class-wcj-add-to-cart.php:101
|
287 |
#: includes/class-wcj-add-to-cart.php:149
|
288 |
+
#: includes/class-wcj-add-to-cart.php:162 includes/class-wcj-sorting.php:196
|
289 |
+
#: includes/class-wcj-sorting.php:205 includes/class-wcj-sorting.php:214
|
290 |
+
#: includes/class-wcj-sorting.php:223 includes/class-wcj-sorting.php:241
|
291 |
+
#: includes/class-wcj-sorting.php:250
|
292 |
msgid "Default: "
|
293 |
msgstr ""
|
294 |
|
350 |
msgstr ""
|
351 |
|
352 |
#: includes/class-wcj-add-to-cart.php:180
|
353 |
+
#: includes/class-wcj-product-addons.php:528
|
354 |
msgid "Per Product Options"
|
355 |
msgstr ""
|
356 |
|
385 |
msgstr ""
|
386 |
|
387 |
#: includes/class-wcj-add-to-cart.php:257
|
388 |
+
#: includes/class-wcj-price-by-country.php:303
|
389 |
+
#: includes/class-wcj-price-by-country.php:314
|
390 |
+
#: includes/class-wcj-price-by-country.php:325
|
391 |
+
#: includes/class-wcj-price-by-country.php:379
|
392 |
msgid "Group"
|
393 |
msgstr ""
|
394 |
|
400 |
#: includes/class-wcj-multicurrency.php:375
|
401 |
#: includes/class-wcj-order-numbers.php:210
|
402 |
#: includes/class-wcj-order-numbers.php:273
|
403 |
+
#: includes/class-wcj-order-numbers.php:281 includes/class-wcj-orders.php:353
|
404 |
+
#: includes/class-wcj-orders.php:474
|
405 |
+
#: includes/class-wcj-price-by-country.php:185
|
406 |
+
#: includes/class-wcj-price-by-country.php:207
|
407 |
+
#: includes/class-wcj-price-by-country.php:216
|
408 |
+
#: includes/class-wcj-price-by-country.php:226
|
409 |
#: includes/class-wcj-price-by-user-role.php:373
|
410 |
#: includes/class-wcj-price-by-user-role.php:390
|
411 |
#: includes/class-wcj-price-labels.php:51
|
412 |
#: includes/class-wcj-price-labels.php:749
|
413 |
+
#: includes/class-wcj-product-add-to-cart.php:248
|
414 |
+
#: includes/class-wcj-product-add-to-cart.php:348
|
415 |
+
#: includes/class-wcj-product-add-to-cart.php:374
|
416 |
+
#: includes/class-wcj-product-add-to-cart.php:390
|
417 |
+
#: includes/class-wcj-product-add-to-cart.php:432
|
418 |
+
#: includes/class-wcj-product-add-to-cart.php:449
|
419 |
+
#: includes/class-wcj-product-add-to-cart.php:466
|
420 |
+
#: includes/class-wcj-product-addons.php:456
|
421 |
+
#: includes/class-wcj-product-addons.php:534
|
422 |
+
#: includes/class-wcj-product-addons.php:553
|
423 |
+
#: includes/class-wcj-product-addons.php:577
|
424 |
+
#: includes/class-wcj-product-addons.php:648
|
425 |
#: includes/class-wcj-product-by-user.php:232
|
426 |
#: includes/class-wcj-product-info.php:256
|
427 |
#: includes/class-wcj-product-info.php:351
|
442 |
#: includes/class-wcj-shipping-calculator.php:123
|
443 |
#: includes/class-wcj-shipping-calculator.php:130
|
444 |
#: includes/class-wcj-shipping-calculator.php:137
|
445 |
+
#: includes/class-wcj-shipping.php:243 includes/class-wcj-shipping.php:330
|
446 |
+
#: includes/class-wcj-shipping.php:362 includes/class-wcj-shipping.php:400
|
447 |
+
#: includes/class-wcj-sku.php:385 includes/class-wcj-sku.php:393
|
448 |
+
#: includes/class-wcj-sorting.php:189
|
449 |
#: includes/class-wcj-wholesale-price.php:372
|
450 |
#: includes/class-wcj-wholesale-price.php:379
|
451 |
#: includes/class-wcj-wholesale-price.php:386
|
627 |
#: includes/class-wcj-mini-cart.php:106
|
628 |
#: includes/class-wcj-product-custom-info.php:135
|
629 |
#: includes/class-wcj-product-tabs.php:431
|
630 |
+
#: includes/class-wcj-product-tabs.php:557 includes/class-wcj-shipping.php:337
|
631 |
+
#: includes/class-wcj-shipping.php:371 includes/class-wcj-shipping.php:409
|
632 |
msgid "Content"
|
633 |
msgstr ""
|
634 |
|
635 |
#: includes/class-wcj-cart.php:167
|
636 |
#: includes/class-wcj-checkout-custom-info.php:102
|
637 |
+
#: includes/class-wcj-checkout-files-upload.php:623
|
638 |
#: includes/class-wcj-mini-cart.php:114
|
639 |
#: includes/class-wcj-product-custom-info.php:142
|
640 |
#: includes/class-wcj-product-info.php:263
|
641 |
#: includes/class-wcj-product-info.php:366
|
642 |
#: includes/class-wcj-product-info.php:399
|
643 |
#: includes/class-wcj-product-listings.php:471
|
644 |
+
#: includes/class-wcj-shipping.php:345 includes/class-wcj-shipping.php:379
|
645 |
+
#: includes/class-wcj-shipping.php:417
|
646 |
msgid "Position"
|
647 |
msgstr ""
|
648 |
|
681 |
msgstr ""
|
682 |
|
683 |
#: includes/class-wcj-checkout-core-fields.php:225
|
684 |
+
#: includes/classes/class-wcj-module.php:423
|
685 |
msgid "enabled"
|
686 |
msgstr ""
|
687 |
|
694 |
|
695 |
#: includes/class-wcj-checkout-core-fields.php:231
|
696 |
#: includes/class-wcj-checkout-custom-fields.php:668
|
697 |
+
#: includes/class-wcj-checkout-files-upload.php:611
|
698 |
+
#: includes/class-wcj-orders.php:514
|
699 |
#: includes/class-wcj-price-by-user-role.php:140
|
700 |
+
#: includes/class-wcj-product-addons.php:442
|
701 |
#: includes/class-wcj-product-bookings.php:417
|
702 |
#: includes/class-wcj-product-open-pricing.php:178
|
703 |
#: includes/class-wcj-product-price-by-formula.php:237
|
706 |
msgstr ""
|
707 |
|
708 |
#: includes/class-wcj-checkout-core-fields.php:232
|
709 |
+
#: includes/class-wcj-pdf-invoicing.php:204
|
710 |
#: includes/class-wcj-product-tabs.php:440
|
711 |
msgid "Disabled"
|
712 |
msgstr ""
|
717 |
msgstr ""
|
718 |
|
719 |
#: includes/class-wcj-checkout-core-fields.php:245
|
720 |
+
#: includes/class-wcj-checkout-files-upload.php:617
|
721 |
#: includes/class-wcj-eu-vat-number.php:386
|
722 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:207
|
723 |
msgid "Required"
|
779 |
#: includes/class-wcj-checkout-custom-fields.php:613
|
780 |
#: includes/class-wcj-checkout-custom-fields.php:620
|
781 |
#: includes/class-wcj-general.php:122
|
782 |
+
#: includes/class-wcj-order-custom-statuses.php:251
|
783 |
+
#: includes/class-wcj-order-custom-statuses.php:326
|
784 |
+
#: includes/class-wcj-order-custom-statuses.php:333
|
785 |
+
#: includes/class-wcj-orders.php:410 includes/class-wcj-orders.php:492
|
786 |
#: includes/class-wcj-product-by-user.php:239
|
787 |
#: includes/class-wcj-purchase-data.php:389 includes/class-wcj-sku.php:400
|
788 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:359
|
831 |
msgstr ""
|
832 |
|
833 |
#: includes/class-wcj-checkout-custom-fields.php:686
|
834 |
+
#: includes/class-wcj-product-addons.php:471
|
835 |
+
#: includes/class-wcj-product-addons.php:589
|
836 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:51
|
837 |
msgid "Checkbox"
|
838 |
msgstr ""
|
868 |
msgstr ""
|
869 |
|
870 |
#: includes/class-wcj-checkout-custom-fields.php:694
|
871 |
+
#: includes/class-wcj-orders.php:161 includes/class-wcj-orders.php:491
|
872 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:59
|
873 |
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:90
|
874 |
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:104
|
880 |
msgstr ""
|
881 |
|
882 |
#: includes/class-wcj-checkout-custom-fields.php:696
|
883 |
+
#: includes/class-wcj-export-import.php:533
|
884 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:61
|
885 |
#: includes/reports/wcj-class-reports-customers.php:92
|
886 |
msgid "Email"
|
911 |
#: includes/class-wcj-eu-vat-number.php:452
|
912 |
#: includes/class-wcj-price-by-user-role.php:137
|
913 |
#: includes/class-wcj-price-by-user-role.php:180
|
914 |
+
#: includes/class-wcj-product-add-to-cart.php:212
|
915 |
+
#: includes/class-wcj-product-add-to-cart.php:222
|
916 |
+
#: includes/class-wcj-product-addons.php:439
|
917 |
+
#: includes/class-wcj-product-addons.php:461
|
918 |
+
#: includes/class-wcj-product-addons.php:509
|
919 |
#: includes/class-wcj-product-bookings.php:414
|
920 |
#: includes/class-wcj-product-images.php:210
|
921 |
#: includes/class-wcj-product-images.php:220
|
937 |
#: includes/class-wcj-checkout-custom-fields.php:722
|
938 |
#: includes/class-wcj-price-by-user-role.php:138
|
939 |
#: includes/class-wcj-price-by-user-role.php:181
|
940 |
+
#: includes/class-wcj-product-add-to-cart.php:213
|
941 |
+
#: includes/class-wcj-product-add-to-cart.php:223
|
942 |
+
#: includes/class-wcj-product-addons.php:440
|
943 |
+
#: includes/class-wcj-product-addons.php:462
|
944 |
+
#: includes/class-wcj-product-addons.php:510
|
945 |
#: includes/class-wcj-product-bookings.php:415
|
946 |
#: includes/class-wcj-product-images.php:211
|
947 |
#: includes/class-wcj-product-images.php:221
|
1075 |
#: includes/class-wcj-checkout-custom-fields.php:836
|
1076 |
#: includes/class-wcj-checkout-custom-info.php:110
|
1077 |
#: includes/class-wcj-empty-cart-button.php:117
|
1078 |
+
#: includes/class-wcj-shipping.php:424
|
1079 |
msgid "Billing"
|
1080 |
msgstr ""
|
1081 |
|
1083 |
#: includes/class-wcj-checkout-custom-info.php:111
|
1084 |
#: includes/class-wcj-empty-cart-button.php:118
|
1085 |
#: includes/class-wcj-price-by-user-role.php:389
|
1086 |
+
#: includes/class-wcj-shipping.php:25 includes/class-wcj-shipping.php:425
|
1087 |
msgid "Shipping"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
#: includes/class-wcj-checkout-custom-fields.php:838
|
1091 |
+
#: includes/class-wcj-export-import.php:158
|
1092 |
msgid "Order Notes"
|
1093 |
msgstr ""
|
1094 |
|
1141 |
msgstr ""
|
1142 |
|
1143 |
#: includes/class-wcj-checkout-custom-info.php:108
|
1144 |
+
#: includes/class-wcj-checkout-files-upload.php:627
|
1145 |
#: includes/class-wcj-empty-cart-button.php:115
|
1146 |
+
#: includes/class-wcj-shipping.php:422
|
1147 |
msgid "Before checkout form"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
#: includes/class-wcj-checkout-custom-info.php:109
|
1151 |
#: includes/class-wcj-empty-cart-button.php:116
|
1152 |
+
#: includes/class-wcj-shipping.php:423
|
1153 |
msgid "Before customer details"
|
1154 |
msgstr ""
|
1155 |
|
1156 |
#: includes/class-wcj-checkout-custom-info.php:112
|
1157 |
#: includes/class-wcj-empty-cart-button.php:119
|
1158 |
+
#: includes/class-wcj-shipping.php:426
|
1159 |
msgid "After customer details"
|
1160 |
msgstr ""
|
1161 |
|
1162 |
#: includes/class-wcj-checkout-custom-info.php:113
|
1163 |
#: includes/class-wcj-empty-cart-button.php:120
|
1164 |
+
#: includes/class-wcj-shipping.php:427
|
1165 |
msgid "Before order review"
|
1166 |
msgstr ""
|
1167 |
|
1168 |
#: includes/class-wcj-checkout-custom-info.php:114
|
1169 |
#: includes/class-wcj-empty-cart-button.php:121
|
1170 |
+
#: includes/class-wcj-shipping.php:428
|
1171 |
msgid "Order review"
|
1172 |
msgstr ""
|
1173 |
|
1174 |
#: includes/class-wcj-checkout-custom-info.php:115
|
1175 |
#: includes/class-wcj-empty-cart-button.php:122
|
1176 |
+
#: includes/class-wcj-shipping.php:429
|
1177 |
msgid "After order review"
|
1178 |
msgstr ""
|
1179 |
|
1180 |
#: includes/class-wcj-checkout-custom-info.php:116
|
1181 |
+
#: includes/class-wcj-checkout-files-upload.php:628
|
1182 |
#: includes/class-wcj-empty-cart-button.php:123
|
1183 |
+
#: includes/class-wcj-shipping.php:430
|
1184 |
msgid "After checkout form"
|
1185 |
msgstr ""
|
1186 |
|
1193 |
msgstr ""
|
1194 |
|
1195 |
#: includes/class-wcj-checkout-files-upload.php:88
|
1196 |
+
#: includes/class-wcj-checkout-files-upload.php:609
|
1197 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:52
|
1198 |
msgid "File"
|
1199 |
msgstr ""
|
1200 |
|
1201 |
#: includes/class-wcj-checkout-files-upload.php:110
|
1202 |
+
#: includes/class-wcj-checkout-files-upload.php:694
|
1203 |
msgid "File is required!"
|
1204 |
msgstr ""
|
1205 |
|
1206 |
#: includes/class-wcj-checkout-files-upload.php:120
|
1207 |
+
#: includes/class-wcj-checkout-files-upload.php:257
|
1208 |
+
#: includes/class-wcj-checkout-files-upload.php:687
|
1209 |
msgid "Wrong file type: \"%s\"!"
|
1210 |
msgstr ""
|
1211 |
|
1213 |
msgid "Uploaded Files"
|
1214 |
msgstr ""
|
1215 |
|
1216 |
+
#: includes/class-wcj-checkout-files-upload.php:172
|
1217 |
+
msgid "No files uploaded."
|
1218 |
+
msgstr ""
|
1219 |
+
|
1220 |
+
#: includes/class-wcj-checkout-files-upload.php:229
|
1221 |
+
#: includes/class-wcj-checkout-files-upload.php:237
|
1222 |
+
#: includes/class-wcj-checkout-files-upload.php:717
|
1223 |
msgid "File \"%s\" was successfully removed."
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: includes/class-wcj-checkout-files-upload.php:269
|
1227 |
+
#: includes/class-wcj-checkout-files-upload.php:702
|
1228 |
msgid "File \"%s\" was successfully uploaded."
|
1229 |
msgstr ""
|
1230 |
|
1231 |
+
#: includes/class-wcj-checkout-files-upload.php:277
|
1232 |
+
#: includes/class-wcj-checkout-files-upload.php:709
|
1233 |
msgid "Please select file to upload!"
|
1234 |
msgstr ""
|
1235 |
|
1236 |
+
#: includes/class-wcj-checkout-files-upload.php:440
|
1237 |
+
#: includes/class-wcj-checkout-files-upload.php:441
|
1238 |
+
#: includes/class-wcj-checkout-files-upload.php:672
|
1239 |
msgid "Upload"
|
1240 |
msgstr ""
|
1241 |
|
1242 |
+
#: includes/class-wcj-checkout-files-upload.php:466
|
1243 |
+
#: includes/class-wcj-checkout-files-upload.php:467
|
1244 |
+
#: includes/class-wcj-checkout-files-upload.php:679
|
1245 |
msgid "Remove"
|
1246 |
msgstr ""
|
1247 |
|
1248 |
+
#: includes/class-wcj-checkout-files-upload.php:588
|
1249 |
+
#: includes/class-wcj-currency-per-product.php:281
|
1250 |
#: includes/class-wcj-eu-vat-number.php:354
|
1251 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:236
|
1252 |
#: includes/class-wcj-multicurrency.php:346
|
1253 |
#: includes/class-wcj-payment-gateways-icons.php:95
|
1254 |
#: includes/class-wcj-payment-gateways-per-category.php:166
|
1255 |
#: includes/class-wcj-price-by-user-role.php:367
|
1256 |
+
#: includes/class-wcj-product-addons.php:642
|
1257 |
#: includes/class-wcj-product-bookings.php:490
|
1258 |
#: includes/class-wcj-product-by-user.php:204
|
1259 |
#: includes/class-wcj-related-products.php:98
|
1261 |
msgid "Options"
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: includes/class-wcj-checkout-files-upload.php:593
|
1265 |
msgid "Total Files"
|
1266 |
msgstr ""
|
1267 |
|
1268 |
+
#: includes/class-wcj-checkout-files-upload.php:629
|
1269 |
msgid "Do not add on checkout"
|
1270 |
msgstr ""
|
1271 |
|
1272 |
+
#: includes/class-wcj-checkout-files-upload.php:634
|
1273 |
msgid "Position order"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: includes/class-wcj-checkout-files-upload.php:643
|
1277 |
msgid "Add to Thank You page"
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: includes/class-wcj-checkout-files-upload.php:649
|
1281 |
msgid "Add to My Account page"
|
1282 |
msgstr ""
|
1283 |
|
1284 |
+
#: includes/class-wcj-checkout-files-upload.php:654
|
1285 |
+
#: includes/class-wcj-checkout-files-upload.php:798
|
1286 |
+
#: includes/class-wcj-order-custom-statuses.php:217
|
1287 |
+
#: includes/class-wcj-order-custom-statuses.php:256
|
1288 |
+
#: includes/class-wcj-orders.php:520
|
1289 |
msgid "Label"
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: includes/class-wcj-checkout-files-upload.php:655
|
1293 |
msgid "Leave blank to disable label"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: includes/class-wcj-checkout-files-upload.php:657
|
1297 |
msgid "Please select file to upload"
|
1298 |
msgstr ""
|
1299 |
|
1300 |
+
#: includes/class-wcj-checkout-files-upload.php:662
|
1301 |
msgid "Accepted file types"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
+
#: includes/class-wcj-checkout-files-upload.php:663
|
1305 |
msgid ""
|
1306 |
"Accepted file types. E.g.: \".jpg,.jpeg,.png\". Leave blank to accept all "
|
1307 |
"files"
|
1308 |
msgstr ""
|
1309 |
|
1310 |
+
#: includes/class-wcj-checkout-files-upload.php:670
|
1311 |
msgid "Label: Upload button"
|
1312 |
msgstr ""
|
1313 |
|
1314 |
+
#: includes/class-wcj-checkout-files-upload.php:677
|
1315 |
msgid "Label: Remove button"
|
1316 |
msgstr ""
|
1317 |
|
1318 |
+
#: includes/class-wcj-checkout-files-upload.php:684
|
1319 |
msgid "Notice: Wrong file type"
|
1320 |
msgstr ""
|
1321 |
|
1322 |
+
#: includes/class-wcj-checkout-files-upload.php:685
|
1323 |
+
#: includes/class-wcj-checkout-files-upload.php:700
|
1324 |
+
#: includes/class-wcj-checkout-files-upload.php:715
|
1325 |
msgid "%s will be replaced with file name"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: includes/class-wcj-checkout-files-upload.php:692
|
1329 |
msgid "Notice: File is required"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: includes/class-wcj-checkout-files-upload.php:699
|
1333 |
msgid "Notice: File was successfully uploaded"
|
1334 |
msgstr ""
|
1335 |
|
1336 |
+
#: includes/class-wcj-checkout-files-upload.php:707
|
1337 |
msgid "Notice: No file selected"
|
1338 |
msgstr ""
|
1339 |
|
1340 |
+
#: includes/class-wcj-checkout-files-upload.php:714
|
1341 |
msgid "Notice: File was successfully removed"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: includes/class-wcj-checkout-files-upload.php:723
|
1345 |
msgid "PRODUCTS to show this field"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
+
#: includes/class-wcj-checkout-files-upload.php:724
|
1349 |
msgid ""
|
1350 |
"To show this field only if at least one selected product is in cart, enter "
|
1351 |
"products here. Leave blank to show for all products."
|
1352 |
msgstr ""
|
1353 |
|
1354 |
+
#: includes/class-wcj-checkout-files-upload.php:733
|
1355 |
msgid "CATEGORIES to show this field"
|
1356 |
msgstr ""
|
1357 |
|
1358 |
+
#: includes/class-wcj-checkout-files-upload.php:734
|
1359 |
msgid ""
|
1360 |
"To show this field only if at least one product of selected category is in "
|
1361 |
"cart, enter categories here. Leave blank to show for all products."
|
1362 |
msgstr ""
|
1363 |
|
1364 |
+
#: includes/class-wcj-checkout-files-upload.php:743
|
1365 |
msgid "TAGS to show this field"
|
1366 |
msgstr ""
|
1367 |
|
1368 |
+
#: includes/class-wcj-checkout-files-upload.php:744
|
1369 |
msgid ""
|
1370 |
"To show this field only if at least one product of selected tag is in cart, "
|
1371 |
"enter tags here. Leave blank to show for all products."
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: includes/class-wcj-checkout-files-upload.php:761
|
1375 |
#: includes/class-wcj-product-input-fields.php:247
|
1376 |
msgid "Emails Options"
|
1377 |
msgstr ""
|
1378 |
|
1379 |
+
#: includes/class-wcj-checkout-files-upload.php:766
|
1380 |
#: includes/class-wcj-product-input-fields.php:253
|
1381 |
msgid "Attach Files to Admin's New Order Emails"
|
1382 |
msgstr ""
|
1383 |
|
1384 |
+
#: includes/class-wcj-checkout-files-upload.php:767
|
1385 |
+
#: includes/class-wcj-checkout-files-upload.php:774
|
1386 |
#: includes/class-wcj-product-input-fields.php:254
|
1387 |
#: includes/class-wcj-product-input-fields.php:262
|
1388 |
msgid "Attach"
|
1389 |
msgstr ""
|
1390 |
|
1391 |
+
#: includes/class-wcj-checkout-files-upload.php:773
|
1392 |
#: includes/class-wcj-product-input-fields.php:261
|
1393 |
msgid "Attach Files to Customer's Processing Order Emails"
|
1394 |
msgstr ""
|
1395 |
|
1396 |
+
#: includes/class-wcj-checkout-files-upload.php:786
|
1397 |
+
msgid "Form Template Options"
|
1398 |
+
msgstr ""
|
1399 |
+
|
1400 |
+
#: includes/class-wcj-checkout-files-upload.php:791
|
1401 |
+
#: includes/class-wcj-product-addons.php:655
|
1402 |
+
#: includes/class-wcj-product-addons.php:678
|
1403 |
+
msgid "Before"
|
1404 |
+
msgstr ""
|
1405 |
+
|
1406 |
+
#: includes/class-wcj-checkout-files-upload.php:799
|
1407 |
+
msgid "Replaced values: %field_id%, %field_label%, %required_html%."
|
1408 |
+
msgstr ""
|
1409 |
+
|
1410 |
+
#: includes/class-wcj-checkout-files-upload.php:806
|
1411 |
+
msgid "Field"
|
1412 |
+
msgstr ""
|
1413 |
+
|
1414 |
+
#: includes/class-wcj-checkout-files-upload.php:807
|
1415 |
+
msgid "Replaced values: %field_html%, %button_html%."
|
1416 |
+
msgstr ""
|
1417 |
+
|
1418 |
+
#: includes/class-wcj-checkout-files-upload.php:814
|
1419 |
+
#: includes/class-wcj-product-addons.php:670
|
1420 |
+
#: includes/class-wcj-product-addons.php:693
|
1421 |
+
msgid "After"
|
1422 |
+
msgstr ""
|
1423 |
+
|
1424 |
#: includes/class-wcj-crowdfunding.php:26
|
1425 |
msgid "Crowdfunding"
|
1426 |
msgstr ""
|
1484 |
msgstr ""
|
1485 |
|
1486 |
#: includes/class-wcj-currencies.php:106
|
1487 |
+
#: includes/class-wcj-pdf-invoicing.php:229
|
1488 |
#: includes/class-wcj-product-bookings.php:496
|
1489 |
#: includes/class-wcj-product-images.php:259
|
1490 |
#: includes/class-wcj-product-images.php:266
|
1532 |
msgstr ""
|
1533 |
|
1534 |
#: includes/class-wcj-currency-exchange-rates.php:80
|
1535 |
+
#: includes/class-wcj-currency-per-product.php:350
|
1536 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:305
|
1537 |
#: includes/class-wcj-multicurrency.php:431
|
1538 |
#: includes/class-wcj-payment-gateways-currency.php:275
|
1539 |
+
#: includes/class-wcj-price-by-country.php:388
|
1540 |
msgid "Grab %s rate from Yahoo.com"
|
1541 |
msgstr ""
|
1542 |
|
1545 |
msgstr ""
|
1546 |
|
1547 |
#: includes/class-wcj-currency-exchange-rates.php:106
|
1548 |
+
#: includes/class-wcj-price-by-country.php:348
|
1549 |
msgid "Exchange Rates"
|
1550 |
msgstr ""
|
1551 |
|
1556 |
msgstr ""
|
1557 |
|
1558 |
#: includes/class-wcj-currency-exchange-rates.php:113
|
1559 |
+
#: includes/class-wcj-currency-per-product.php:286
|
1560 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:241
|
1561 |
#: includes/class-wcj-multicurrency.php:351
|
1562 |
#: includes/class-wcj-payment-gateways-currency.php:282
|
1563 |
+
#: includes/class-wcj-price-by-country.php:351
|
1564 |
msgid "Exchange Rates Updates"
|
1565 |
msgstr ""
|
1566 |
|
1602 |
msgstr ""
|
1603 |
|
1604 |
#: includes/class-wcj-currency-external-products.php:79
|
1605 |
+
#: includes/class-wcj-currency-per-product.php:334
|
1606 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:289
|
1607 |
#: includes/class-wcj-multicurrency.php:415
|
1608 |
+
#: includes/class-wcj-price-by-country.php:338
|
1609 |
#: includes/class-wcj-price-formats.php:135
|
1610 |
msgid "Currency"
|
1611 |
msgstr ""
|
1627 |
msgid "%1$s–%2$s"
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
#: includes/class-wcj-currency-per-product.php:236
|
1631 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:185
|
1632 |
msgid "Product Currency"
|
1633 |
msgstr ""
|
1634 |
|
1635 |
+
#: includes/class-wcj-currency-per-product.php:238
|
1636 |
+
msgid "Update product after you change this field's value."
|
1637 |
+
msgstr ""
|
1638 |
+
|
1639 |
+
#: includes/class-wcj-currency-per-product.php:291
|
1640 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:246
|
1641 |
#: includes/class-wcj-multicurrency.php:356
|
1642 |
#: includes/class-wcj-payment-gateways-currency.php:287
|
1643 |
+
#: includes/class-wcj-price-by-country.php:356
|
1644 |
msgid "Enter Rates Manually"
|
1645 |
msgstr ""
|
1646 |
|
1647 |
+
#: includes/class-wcj-currency-per-product.php:292
|
1648 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:247
|
1649 |
#: includes/class-wcj-multicurrency.php:357
|
1650 |
#: includes/class-wcj-payment-gateways-currency.php:288
|
1651 |
+
#: includes/class-wcj-price-by-country.php:357
|
1652 |
msgid "Automatically via Currency Exchange Rates module"
|
1653 |
msgstr ""
|
1654 |
|
1655 |
+
#: includes/class-wcj-currency-per-product.php:295
|
1656 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:250
|
1657 |
#: includes/class-wcj-multicurrency.php:360
|
1658 |
#: includes/class-wcj-payment-gateways-currency.php:291
|
1659 |
+
#: includes/class-wcj-price-by-country.php:360
|
1660 |
msgid "Visit"
|
1661 |
msgstr ""
|
1662 |
|
1663 |
+
#: includes/class-wcj-currency-per-product.php:295
|
1664 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:250
|
1665 |
#: includes/class-wcj-multicurrency.php:360
|
1666 |
#: includes/class-wcj-payment-gateways-currency.php:291
|
1667 |
+
#: includes/class-wcj-price-by-country.php:360
|
1668 |
msgid "Currency Exchange Rates module"
|
1669 |
msgstr ""
|
1670 |
|
1671 |
+
#: includes/class-wcj-currency-per-product.php:305
|
1672 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:260
|
1673 |
#: includes/class-wcj-multicurrency.php:385
|
1674 |
msgid "Currencies Options"
|
1675 |
msgstr ""
|
1676 |
|
1677 |
+
#: includes/class-wcj-currency-per-product.php:310
|
1678 |
+
#: includes/class-wcj-multicurrency-product-base-price.php:265
|
1679 |
#: includes/class-wcj-multicurrency.php:391
|
1680 |
msgid "Total Currencies"
|
1681 |
msgstr ""
|
1737 |
msgid "Admin Title Custom Email"
|
1738 |
msgstr ""
|
1739 |
|
1740 |
+
#: includes/class-wcj-emails.php:207 includes/class-wcj-shipping.php:283
|
1741 |
#: includes/emails/class-wc-email-wcj-custom.php:30
|
1742 |
#: includes/pdf-invoices/settings/class-wcj-pdf-invoicing-emails.php:127
|
1743 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:44
|
1744 |
msgid "Custom"
|
1745 |
msgstr ""
|
1746 |
|
1943 |
msgid "Filter by Product Title"
|
1944 |
msgstr ""
|
1945 |
|
1946 |
+
#: includes/class-wcj-export-import.php:132 includes/class-wcj-orders.php:366
|
1947 |
+
#: includes/reports/wcj-class-reports-sales.php:165
|
1948 |
+
msgid "Filter"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1949 |
msgstr ""
|
1950 |
|
1951 |
+
#: includes/class-wcj-export-import.php:147
|
1952 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:208
|
1953 |
msgid "Order ID"
|
1954 |
msgstr ""
|
1955 |
|
1956 |
+
#: includes/class-wcj-export-import.php:148
|
1957 |
msgid "Order Number"
|
1958 |
msgstr ""
|
1959 |
|
1960 |
+
#: includes/class-wcj-export-import.php:149
|
1961 |
msgid "Order Status"
|
1962 |
msgstr ""
|
1963 |
|
1964 |
+
#: includes/class-wcj-export-import.php:150
|
1965 |
msgid "Order Date"
|
1966 |
msgstr ""
|
1967 |
|
1968 |
+
#: includes/class-wcj-export-import.php:151
|
1969 |
msgid "Order Item Count"
|
1970 |
msgstr ""
|
1971 |
|
1972 |
+
#: includes/class-wcj-export-import.php:152
|
1973 |
msgid "Order Items"
|
1974 |
msgstr ""
|
1975 |
|
1976 |
+
#: includes/class-wcj-export-import.php:153
|
1977 |
+
msgid "Order Items Product Input Fields"
|
1978 |
+
msgstr ""
|
1979 |
+
|
1980 |
+
#: includes/class-wcj-export-import.php:154 includes/class-wcj-orders.php:88
|
1981 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:215
|
1982 |
msgid "Order Currency"
|
1983 |
msgstr ""
|
1984 |
|
1985 |
+
#: includes/class-wcj-export-import.php:155
|
1986 |
#: includes/pdf-invoices/class-wcj-pdf-invoicing-report-tool.php:214
|
1987 |
msgid "Order Total"
|
1988 |
msgstr ""
|
1989 |
|
1990 |
+
#: includes/class-wcj-export-import.php:156
|
1991 |
msgid "Order Total Tax"
|
1992 |
msgstr ""
|
1993 |
|
1994 |
+
#: includes/class-wcj-export-import.php:157
|
1995 |
msgid "Order Payment Method"
|
1996 |
msgstr ""
|
1997 |
|
1998 |
+
#: includes/class-wcj-export-import.php:159
|
1999 |
msgid "Billing First Name"
|
2000 |
msgstr ""
|
2001 |
|
2002 |
+
#: includes/class-wcj-export-import.php:160
|
2003 |
msgid "Billing Last Name"
|
2004 |
msgstr ""
|
2005 |
|
2006 |
+
#: includes/class-wcj-export-import.php:161
|
2007 |
msgid "Billing Company"
|
2008 |
msgstr ""
|
2009 |
|
2010 |
+
#: includes/class-wcj-export-import.php:162
|
2011 |
msgid "Billing Address 1"
|
2012 |
msgstr ""
|
2013 |
|
2014 |
+
#: includes/class-wcj-export-import.php:163
|
2015 |
msgid "Billing Address 2"
|
2016 |
msgstr ""
|
2017 |
|
2018 |
+
#: includes/class-wcj-export-import.php:164
|
2019 |
msgid "Billing City"
|
2020 |
msgstr ""
|
2021 |
|
2022 |
+
#: includes/class-wcj-export-import.php:165
|
2023 |
msgid "Billing State"
|
2024 |
msgstr ""
|
2025 |
|
2026 |
+
#: includes/class-wcj-export-import.php:166
|
2027 |
msgid "Billing Postcode"
|
2028 |
msgstr ""
|
2029 |
|
2030 |
+
#: includes/class-wcj-export-import.php:167
|
2031 |
msgid "Billing Country"
|
2032 |
msgstr ""
|
2033 |
|
2034 |
+
#: includes/class-wcj-export-import.php:168
|
2035 |
msgid "Billing Phone"
|
2036 |
msgstr ""
|
2037 |
|
2038 |
+
#: includes/class-wcj-export-import.php:169
|
2039 |
msgid "Billing Email"
|
2040 |
msgstr ""
|
2041 |
|
2042 |
+
#: includes/class-wcj-export-import.php:170
|
2043 |
msgid "Shipping First Name"
|
2044 |
msgstr ""
|
2045 |
|
2046 |
+
#: includes/class-wcj-export-import.php:171
|
2047 |
msgid "Shipping Last Name"
|
2048 |
msgstr ""
|
2049 |
|
2050 |
+
#: includes/class-wcj-export-import.php:172
|
2051 |
msgid "Shipping Company"
|
2052 |
msgstr ""
|
2053 |
|
2054 |
+
#: includes/class-wcj-export-import.php:173
|
2055 |
msgid "Shipping Address 1"
|
2056 |
msgstr ""
|
2057 |
|
2058 |
+
#: includes/class-wcj-export-import.php:174
|
2059 |
msgid "Shipping Address 2"
|
2060 |
msgstr ""
|
2061 |
|
2062 |
+
#: includes/class-wcj-export-import.php:175
|
2063 |
msgid "Shipping City"
|
2064 |
msgstr ""
|
2065 |
|
2066 |
+
#: includes/class-wcj-export-import.php:176
|
2067 |
msgid "Shipping State"
|
2068 |
msgstr ""
|
2069 |
|
2070 |
+
#: includes/class-wcj-export-import.php:177
|
2071 |
msgid "Shipping Postcode"
|
2072 |
msgstr ""
|
2073 |
|
2074 |
+
#: includes/class-wcj-export-import.php:178
|
2075 |
msgid "Shipping Country"
|
2076 |
msgstr ""
|
2077 |
|
2078 |
+
#: includes/class-wcj-export-import.php:234
|
2079 |
+
msgid "Download CSV"
|
2080 |
+
msgstr ""
|
2081 |
+
|
2082 |
+
#: includes/class-wcj-export-import.php:288
|
2083 |
+
msgid "Customer ID"
|
2084 |
+
msgstr ""
|
2085 |
+
|
2086 |
+
#: includes/class-wcj-export-import.php:289
|
2087 |
+
msgid "Customer Email"
|
2088 |
+
msgstr ""
|
2089 |
+
|
2090 |
+
#: includes/class-wcj-export-import.php:290
|
2091 |
+
msgid "Customer First Name"
|
2092 |
+
msgstr ""
|
2093 |
+
|
2094 |
+
#: includes/class-wcj-export-import.php:291
|
2095 |
+
msgid "Customer Last Name"
|
2096 |
+
msgstr ""
|
2097 |
+
|
2098 |
+
#: includes/class-wcj-export-import.php:480
|
2099 |
msgid "Product ID"
|
2100 |
msgstr ""
|
2101 |
|
2102 |
+
#: includes/class-wcj-export-import.php:481 includes/class-wcj-general.php:104
|
2103 |
#: includes/class-wcj-general.php:118
|
2104 |
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:72
|
2105 |
#: includes/tools/class-wcj-eu-countries-vat-rates-tool.php:106
|
2106 |
msgid "Name"
|
2107 |
msgstr ""
|
2108 |
|
2109 |
+
#: includes/class-wcj-export-import.php:482 includes/class-wcj-sku.php:26
|
2110 |
#: includes/class-wcj-sku.php:245
|
2111 |
msgid "SKU"
|
2112 |
msgstr ""
|
2113 |
|
2114 |
+
#: includes/class-wcj-export-import.php:483
|
2115 |
#: includes/reports/wcj-class-reports-stock.php:322
|
2116 |
msgid "Stock"
|
2117 |
msgstr ""
|
2118 |
|
2119 |
+
#: includes/class-wcj-export-import.php:484
|
2120 |
#: includes/class-wcj-multicurrency.php:76
|
2121 |
#: includes/class-wcj-price-by-user-role.php:161
|
2122 |
#: includes/class-wcj-product-by-user.php:162
|
2126 |
msgid "Regular Price"
|
2127 |
msgstr ""
|
2128 |
|
2129 |
+
#: includes/class-wcj-export-import.php:485
|
2130 |
#: includes/class-wcj-multicurrency.php:85
|
2131 |
#: includes/class-wcj-price-by-user-role.php:170
|
2132 |
#: includes/class-wcj-product-by-user.php:163
|
2136 |
msgid "Sale Price"
|
2137 |
msgstr ""
|
2138 |
|
2139 |
+
#: includes/class-wcj-export-import.php:486
|
2140 |
#: includes/reports/wcj-class-reports-stock.php:321
|
2141 |
msgid "Price"
|
2142 |
msgstr ""
|
2143 |
|
2144 |
+
#: includes/class-wcj-export-import.php:487
|
2145 |
+
#: includes/class-wcj-product-addons.php:466
|
2146 |
+
#: includes/class-wcj-product-addons.php:583
|
2147 |
#: includes/class-wcj-purchase-data.php:328
|
2148 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:44
|
2149 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:97
|
2150 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:89
|
2151 |
msgid "Type"
|
2152 |
msgstr ""
|
2153 |
|
2154 |
+
#: includes/class-wcj-export-import.php:532
|
2155 |
msgid "Nr."
|
2156 |
msgstr ""
|
2157 |
|
2158 |
+
#: includes/class-wcj-export-import.php:534
|
2159 |
msgid "First Name"
|
2160 |
msgstr ""
|
2161 |
|
2162 |
+
#: includes/class-wcj-export-import.php:535
|
2163 |
msgid "Last Name"
|
2164 |
msgstr ""
|
2165 |
|
2166 |
+
#: includes/class-wcj-export-import.php:536
|
2167 |
msgid "Last Order Date"
|
2168 |
msgstr ""
|
2169 |
|
2170 |
+
#: includes/class-wcj-export-import.php:579
|
2171 |
msgid "Export Options"
|
2172 |
msgstr ""
|
2173 |
|
2174 |
+
#: includes/class-wcj-export-import.php:584
|
2175 |
msgid "CSV Separator"
|
2176 |
msgstr ""
|
2177 |
|
2178 |
+
#: includes/class-wcj-export-import.php:590
|
2179 |
+
msgid "Export Orders Fields"
|
2180 |
+
msgstr ""
|
2181 |
+
|
2182 |
#: includes/class-wcj-general.php:25 includes/class-wcj-pdf-invoicing.php:26
|
2183 |
msgid "General"
|
2184 |
msgstr ""
|
2240 |
msgstr ""
|
2241 |
|
2242 |
#: includes/class-wcj-general.php:110
|
2243 |
+
#: includes/class-wcj-order-custom-statuses.php:220
|
2244 |
+
#: includes/class-wcj-order-custom-statuses.php:242
|
2245 |
#: includes/class-wcj-product-by-user.php:122
|
2246 |
#: includes/pdf-invoices/settings/class-wcj-pdf-invoicing-display.php:116
|
2247 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:285
|
2263 |
#: includes/class-wcj-general.php:203 includes/class-wcj-general.php:245
|
2264 |
#: includes/class-wcj-product-bulk-price-converter.php:149
|
2265 |
#: includes/class-wcj-sku.php:243
|
2266 |
+
#: includes/reports/wcj-class-reports-sales.php:120
|
2267 |
#: includes/reports/wcj-class-reports-stock.php:319
|
2268 |
msgid "Product"
|
2269 |
msgstr ""
|
2302 |
#: includes/class-wcj-general.php:326 includes/class-wcj-general.php:389
|
2303 |
#: includes/class-wcj-general.php:403 includes/class-wcj-general.php:410
|
2304 |
#: includes/class-wcj-general.php:417 includes/class-wcj-general.php:424
|
2305 |
+
#: includes/class-wcj-product-add-to-cart.php:247
|
2306 |
msgid "Disable"
|
2307 |
msgstr ""
|
2308 |
|
2382 |
msgid "Mini Cart Custom Info Blocks"
|
2383 |
msgstr ""
|
2384 |
|
2385 |
+
#: includes/class-wcj-mini-cart.php:119 includes/class-wcj-shipping.php:384
|
2386 |
msgid "Before mini cart"
|
2387 |
msgstr ""
|
2388 |
|
2389 |
+
#: includes/class-wcj-mini-cart.php:120 includes/class-wcj-shipping.php:385
|
2390 |
msgid "Before buttons"
|
2391 |
msgstr ""
|
2392 |
|
2393 |
+
#: includes/class-wcj-mini-cart.php:121 includes/class-wcj-shipping.php:386
|
2394 |
msgid "After mini cart"
|
2395 |
msgstr ""
|
2396 |
|
2444 |
msgstr ""
|
2445 |
|
2446 |
#: includes/class-wcj-multicurrency.php:368
|
2447 |
+
#: includes/class-wcj-price-by-country.php:208
|
2448 |
msgid "This will add meta boxes in product edit."
|
2449 |
msgstr ""
|
2450 |
|
2451 |
#: includes/class-wcj-multicurrency.php:374
|
2452 |
+
#: includes/class-wcj-price-by-country.php:184
|
2453 |
msgid "Revert Currency to Default on Checkout"
|
2454 |
msgstr ""
|
2455 |
|
2463 |
msgid "Role Defaults"
|
2464 |
msgstr ""
|
2465 |
|
2466 |
+
#: includes/class-wcj-multicurrency.php:445 includes/class-wcj-orders.php:440
|
2467 |
#: includes/class-wcj-price-by-user-role.php:404
|
2468 |
msgid ""
|
2469 |
"Custom roles can be added via \"Add/Manage Custom Roles\" tool in Booster's "
|
2475 |
msgstr ""
|
2476 |
|
2477 |
#: includes/class-wcj-multicurrency.php:451
|
2478 |
+
#: includes/class-wcj-wholesale-price.php:485
|
2479 |
msgid "Save settings after you change this option. Leave blank to disable."
|
2480 |
msgstr ""
|
2481 |
|
2524 |
msgstr ""
|
2525 |
|
2526 |
#: includes/class-wcj-order-custom-statuses.php:33
|
2527 |
+
#: includes/class-wcj-order-custom-statuses.php:311
|
2528 |
msgid "Custom Statuses"
|
2529 |
msgstr ""
|
2530 |
|
2532 |
msgid "Tool lets you add or delete any custom status for WooCommerce orders."
|
2533 |
msgstr ""
|
2534 |
|
2535 |
+
#: includes/class-wcj-order-custom-statuses.php:64
|
2536 |
msgctxt "Order status"
|
2537 |
msgid "Pending payment"
|
2538 |
msgstr ""
|
2539 |
|
2540 |
+
#: includes/class-wcj-order-custom-statuses.php:65
|
2541 |
+
#: includes/functions/wcj-functions.php:1034
|
2542 |
msgctxt "Order status"
|
2543 |
msgid "Processing"
|
2544 |
msgstr ""
|
2545 |
|
2546 |
+
#: includes/class-wcj-order-custom-statuses.php:66
|
2547 |
msgctxt "Order status"
|
2548 |
msgid "On hold"
|
2549 |
msgstr ""
|
2550 |
|
2551 |
+
#: includes/class-wcj-order-custom-statuses.php:67
|
2552 |
+
#: includes/functions/wcj-functions.php:1036
|
2553 |
msgctxt "Order status"
|
2554 |
msgid "Completed"
|
2555 |
msgstr ""
|
2556 |
|
2557 |
+
#: includes/class-wcj-order-custom-statuses.php:68
|
2558 |
+
#: includes/functions/wcj-functions.php:1037
|
2559 |
msgctxt "Order status"
|
2560 |
msgid "Cancelled"
|
2561 |
msgstr ""
|
2562 |
|
2563 |
+
#: includes/class-wcj-order-custom-statuses.php:69
|
2564 |
+
#: includes/functions/wcj-functions.php:1038
|
2565 |
msgctxt "Order status"
|
2566 |
msgid "Refunded"
|
2567 |
msgstr ""
|
2568 |
|
2569 |
+
#: includes/class-wcj-order-custom-statuses.php:70
|
2570 |
+
#: includes/functions/wcj-functions.php:1039
|
2571 |
msgctxt "Order status"
|
2572 |
msgid "Failed"
|
2573 |
msgstr ""
|
2574 |
|
2575 |
+
#: includes/class-wcj-order-custom-statuses.php:160
|
2576 |
msgid "Status slug is empty. Status not added."
|
2577 |
msgstr ""
|
2578 |
|
2579 |
+
#: includes/class-wcj-order-custom-statuses.php:163
|
2580 |
msgid "The length of status slug must be 17 or less characters."
|
2581 |
msgstr ""
|
2582 |
|
2583 |
+
#: includes/class-wcj-order-custom-statuses.php:166
|
2584 |
msgid "Status label is empty. Status not added."
|
2585 |
msgstr ""
|
2586 |
|
2587 |
+
#: includes/class-wcj-order-custom-statuses.php:173
|
2588 |
msgid "Duplicate slug. Status not added."
|
2589 |
msgstr ""
|
2590 |
|
2591 |
+
#: includes/class-wcj-order-custom-statuses.php:183
|
2592 |
msgid "New status have been successfully added!"
|
2593 |
msgstr ""
|
2594 |
|
2595 |
+
#: includes/class-wcj-order-custom-statuses.php:185
|
2596 |
msgid "Status was not added."
|
2597 |
msgstr ""
|
2598 |
|
2599 |
+
#: includes/class-wcj-order-custom-statuses.php:203
|
2600 |
msgid "Status have been successfully deleted."
|
2601 |
msgstr ""
|
2602 |
|
2603 |
+
#: includes/class-wcj-order-custom-statuses.php:205
|
2604 |
msgid "Delete failed."
|
2605 |
msgstr ""
|
2606 |
|
2607 |
+
#: includes/class-wcj-order-custom-statuses.php:210
|
2608 |
msgid "Booster - Custom Statuses"
|
2609 |
msgstr ""
|
2610 |
|
2611 |
+
#: includes/class-wcj-order-custom-statuses.php:211
|
2612 |
msgid ""
|
2613 |
"The tool lets you add or delete any custom status for WooCommerce orders."
|
2614 |
msgstr ""
|
2615 |
|
2616 |
+
#: includes/class-wcj-order-custom-statuses.php:213
|
2617 |
msgid "Statuses"
|
2618 |
msgstr ""
|
2619 |
|
2620 |
+
#: includes/class-wcj-order-custom-statuses.php:216
|
2621 |
msgid "Slug"
|
2622 |
msgstr ""
|
2623 |
|
2624 |
+
#: includes/class-wcj-order-custom-statuses.php:218
|
2625 |
+
#: includes/class-wcj-order-custom-statuses.php:257
|
2626 |
msgid "Icon Code"
|
2627 |
msgstr ""
|
2628 |
|
2629 |
+
#: includes/class-wcj-order-custom-statuses.php:219
|
2630 |
+
#: includes/class-wcj-order-custom-statuses.php:258
|
2631 |
msgid "Icon Color"
|
2632 |
msgstr ""
|
2633 |
|
2634 |
+
#: includes/class-wcj-order-custom-statuses.php:255
|
2635 |
msgid "Slug (without wc- prefix)"
|
2636 |
msgstr ""
|
2637 |
|
2638 |
+
#: includes/class-wcj-order-custom-statuses.php:259
|
2639 |
msgid "You can check icon codes <a target=\"_blank\" href=\"%s\">here</a>."
|
2640 |
msgstr ""
|
2641 |
|
2642 |
+
#: includes/class-wcj-order-custom-statuses.php:283
|
2643 |
+
#: includes/class-wcj-order-custom-statuses.php:284
|
2644 |
msgid "Mark"
|
2645 |
msgstr ""
|
2646 |
|
2647 |
+
#: includes/class-wcj-order-custom-statuses.php:316
|
2648 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:138
|
2649 |
msgid "Default Order Status"
|
2650 |
msgstr ""
|
2651 |
|
2652 |
+
#: includes/class-wcj-order-custom-statuses.php:317
|
2653 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:139
|
2654 |
msgid "Enable Custom Statuses feature to add custom statuses to the list."
|
2655 |
msgstr ""
|
2656 |
|
2657 |
+
#: includes/class-wcj-order-custom-statuses.php:318
|
2658 |
msgid ""
|
2659 |
"You can change the default order status here. However payment gateways can "
|
2660 |
"change this status immediatelly on order creation. E.g. BACS gateway will "
|
2661 |
"change status to On-hold."
|
2662 |
msgstr ""
|
2663 |
|
2664 |
+
#: includes/class-wcj-order-custom-statuses.php:325
|
2665 |
msgid "Add All Statuses to Admin Order Bulk Actions"
|
2666 |
msgstr ""
|
2667 |
|
2668 |
+
#: includes/class-wcj-order-custom-statuses.php:332
|
2669 |
msgid "Add Custom Statuses to Admin Reports"
|
2670 |
msgstr ""
|
2671 |
|
2807 |
#: includes/class-wcj-orders.php:26
|
2808 |
msgid ""
|
2809 |
"Minimum WooCommerce order amount (optionally by user role); orders auto-"
|
2810 |
+
"complete; custom admin order list columns; admin order currency."
|
2811 |
msgstr ""
|
2812 |
|
2813 |
+
#: includes/class-wcj-orders.php:89
|
2814 |
+
msgid "Save order after you change this field."
|
2815 |
+
msgstr ""
|
2816 |
+
|
2817 |
+
#: includes/class-wcj-orders.php:145
|
2818 |
msgid "All countries"
|
2819 |
msgstr ""
|
2820 |
|
2821 |
+
#: includes/class-wcj-orders.php:347 includes/class-wcj-orders.php:352
|
2822 |
+
msgid "Admin Order Currency"
|
2823 |
+
msgstr ""
|
2824 |
+
|
2825 |
+
#: includes/class-wcj-orders.php:354
|
2826 |
+
msgid ""
|
2827 |
+
"When enabled this will add \"Booster: Orders\" metabox to each order's edit "
|
2828 |
+
"page."
|
2829 |
+
msgstr ""
|
2830 |
+
|
2831 |
+
#: includes/class-wcj-orders.php:360
|
2832 |
+
msgid "Admin Order Currency Method"
|
2833 |
+
msgstr ""
|
2834 |
+
|
2835 |
+
#: includes/class-wcj-orders.php:361
|
2836 |
+
msgid ""
|
2837 |
+
"Choose if you want changed order currency to be saved directly to DB, or if "
|
2838 |
+
"you want to use filter. When using <em>filter</em> method, changes will be "
|
2839 |
+
"active only when \"Admin Order Currency\" section is enabled. When using "
|
2840 |
+
"<em>directly to DB</em> method, changes will be permanent, that is even if "
|
2841 |
+
"Booster plugin is removed."
|
2842 |
+
msgstr ""
|
2843 |
+
|
2844 |
+
#: includes/class-wcj-orders.php:367
|
2845 |
+
msgid "Directly to DB"
|
2846 |
+
msgstr ""
|
2847 |
+
|
2848 |
+
#: includes/class-wcj-orders.php:375
|
2849 |
msgid "Order Minimum Amount"
|
2850 |
msgstr ""
|
2851 |
|
2852 |
+
#: includes/class-wcj-orders.php:377
|
2853 |
msgid "This section lets you set minimum order amount."
|
2854 |
msgstr ""
|
2855 |
|
2856 |
+
#: includes/class-wcj-orders.php:381
|
2857 |
msgid "Amount"
|
2858 |
msgstr ""
|
2859 |
|
2860 |
+
#: includes/class-wcj-orders.php:382
|
2861 |
msgid "Minimum order amount. Set to 0 to disable."
|
2862 |
msgstr ""
|
2863 |
|
2864 |
+
#: includes/class-wcj-orders.php:392
|
2865 |
msgid "Exclude Shipping from Cart Total"
|
2866 |
msgstr ""
|
2867 |
|
2868 |
+
#: includes/class-wcj-orders.php:393
|
2869 |
msgid "Exclude"
|
2870 |
msgstr ""
|
2871 |
|
2872 |
+
#: includes/class-wcj-orders.php:399
|
2873 |
msgid "Error message"
|
2874 |
msgstr ""
|
2875 |
|
2876 |
+
#: includes/class-wcj-orders.php:401 includes/class-wcj-orders.php:418
|
2877 |
msgid ""
|
2878 |
"Message to customer if order is below minimum amount. Default: You must have "
|
2879 |
"an order with a minimum of %s to place your order, your current order total "
|
2880 |
"is %s."
|
2881 |
msgstr ""
|
2882 |
|
2883 |
+
#: includes/class-wcj-orders.php:409
|
2884 |
msgid "Add notice to cart page also"
|
2885 |
msgstr ""
|
2886 |
|
2887 |
+
#: includes/class-wcj-orders.php:416
|
2888 |
msgid "Message on cart page"
|
2889 |
msgstr ""
|
2890 |
|
2891 |
+
#: includes/class-wcj-orders.php:426
|
2892 |
msgid ""
|
2893 |
"Stop customer from seeing the Checkout page if minimum amount not reached."
|
2894 |
msgstr ""
|
2895 |
|
2896 |
+
#: includes/class-wcj-orders.php:427
|
2897 |
msgid "Redirect back to Cart page"
|
2898 |
msgstr ""
|
2899 |
|
2900 |
+
#: includes/class-wcj-orders.php:437
|
2901 |
msgid "Order Minimum Amount by User Role"
|
2902 |
msgstr ""
|
2903 |
|
2904 |
+
#: includes/class-wcj-orders.php:467
|
2905 |
msgid "Orders Auto-Complete"
|
2906 |
msgstr ""
|
2907 |
|
2908 |
+
#: includes/class-wcj-orders.php:469
|
2909 |
msgid "This section lets you enable orders auto-complete function."
|
2910 |
msgstr ""
|
2911 |
|
2912 |
+
#: includes/class-wcj-orders.php:473
|
2913 |
msgid "Auto-complete all WooCommerce orders"
|
2914 |
msgstr ""
|
2915 |
|
2916 |
+
#: includes/class-wcj-orders.php:475
|
2917 |
msgid ""
|
2918 |
"E.g. if you sell digital products then you are not shipping anything and you "
|
2919 |
"may want auto-complete all your orders."
|
2920 |
msgstr ""
|
2921 |
|
2922 |
+
#: includes/class-wcj-orders.php:485 includes/class-wcj-purchase-data.php:382
|
2923 |
msgid "Orders List Custom Columns"
|
2924 |
msgstr ""
|
2925 |
|
2926 |
+
#: includes/class-wcj-orders.php:487 includes/class-wcj-purchase-data.php:384
|
2927 |
msgid "This section lets you add custom columns to WooCommerce orders list."
|
2928 |
msgstr ""
|
2929 |
|
2930 |
+
#: includes/class-wcj-orders.php:498
|
2931 |
msgid "Custom Columns Total Number"
|
2932 |
msgstr ""
|
2933 |
|
2934 |
+
#: includes/class-wcj-orders.php:513
|
2935 |
msgid "Custom Column"
|
2936 |
msgstr ""
|
2937 |
|
2938 |
+
#: includes/class-wcj-orders.php:527
|
2939 |
msgid "Value"
|
2940 |
msgstr ""
|
2941 |
|
2942 |
+
#: includes/class-wcj-orders.php:528
|
2943 |
msgid "You can use shortcodes here."
|
2944 |
msgstr ""
|
2945 |
|
2953 |
"to show up."
|
2954 |
msgstr ""
|
2955 |
|
2956 |
+
#: includes/class-wcj-payment-gateways-by-country.php:90
|
2957 |
#: includes/class-wcj-payment-gateways-by-user-role.php:83
|
2958 |
msgid "Leave empty to disable."
|
2959 |
msgstr ""
|
2960 |
|
2961 |
+
#: includes/class-wcj-payment-gateways-by-country.php:111
|
2962 |
msgid "Include Countries"
|
2963 |
msgstr ""
|
2964 |
|
2965 |
+
#: includes/class-wcj-payment-gateways-by-country.php:123
|
2966 |
msgid "Exclude Countries"
|
2967 |
msgstr ""
|
2968 |
|
2969 |
+
#: includes/class-wcj-payment-gateways-by-country.php:135
|
2970 |
msgid "Include States (Base Country)"
|
2971 |
msgstr ""
|
2972 |
|
2973 |
+
#: includes/class-wcj-payment-gateways-by-country.php:147
|
2974 |
msgid "Exclude States (Base Country)"
|
2975 |
msgstr ""
|
2976 |
|
3050 |
#: includes/class-wcj-payment-gateways-fees.php:164
|
3051 |
#: includes/class-wcj-purchase-data.php:332
|
3052 |
#: includes/class-wcj-wholesale-price.php:260
|
3053 |
+
#: includes/class-wcj-wholesale-price.php:413
|
3054 |
msgid "Fixed"
|
3055 |
msgstr ""
|
3056 |
|
3057 |
#: includes/class-wcj-payment-gateways-fees.php:165
|
3058 |
#: includes/class-wcj-purchase-data.php:333
|
3059 |
#: includes/class-wcj-wholesale-price.php:259
|
3060 |
+
#: includes/class-wcj-wholesale-price.php:412
|
3061 |
msgid "Percent"
|
3062 |
msgstr ""
|
3063 |
|
3113 |
msgstr ""
|
3114 |
|
3115 |
#: includes/class-wcj-payment-gateways-icons.php:97
|
3116 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:103
|
3117 |
msgid ""
|
3118 |
"If you want to show an image next to the gateway's name on the frontend, "
|
3119 |
"enter a URL to an image."
|
3252 |
"gateway are in WooCommerce > Settings > Checkout."
|
3253 |
msgstr ""
|
3254 |
|
3255 |
+
#: includes/class-wcj-payment-gateways.php:139
|
3256 |
msgid "Admin Title Custom Gateway"
|
3257 |
msgstr ""
|
3258 |
|
3259 |
+
#: includes/class-wcj-payment-gateways.php:141
|
3260 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:353
|
3261 |
msgid "Custom Gateway"
|
3262 |
msgstr ""
|
3263 |
|
3289 |
msgid "Invoices Monthly Reports."
|
3290 |
msgstr ""
|
3291 |
|
3292 |
+
#: includes/class-wcj-pdf-invoicing.php:196
|
3293 |
msgid "PDF Invoicing General Options"
|
3294 |
msgstr ""
|
3295 |
|
3296 |
+
#: includes/class-wcj-pdf-invoicing.php:205
|
3297 |
msgid "Create on New Order"
|
3298 |
msgstr ""
|
3299 |
|
3300 |
+
#: includes/class-wcj-pdf-invoicing.php:208
|
3301 |
msgid "Create on Order Status"
|
3302 |
msgstr ""
|
3303 |
|
3304 |
+
#: includes/class-wcj-pdf-invoicing.php:210
|
3305 |
msgid "Manual Only"
|
3306 |
msgstr ""
|
3307 |
|
3308 |
+
#: includes/class-wcj-pdf-invoicing.php:228
|
3309 |
msgid "Hide Disabled Docs Settings"
|
3310 |
msgstr ""
|
3311 |
|
3319 |
"country."
|
3320 |
msgstr ""
|
3321 |
|
3322 |
+
#: includes/class-wcj-price-by-country.php:92
|
3323 |
+
msgid "Price filter widget product prices recalculated."
|
3324 |
+
msgstr ""
|
3325 |
+
|
3326 |
+
#: includes/class-wcj-price-by-country.php:140
|
3327 |
msgid "Price by Country Options"
|
3328 |
msgstr ""
|
3329 |
|
3330 |
+
#: includes/class-wcj-price-by-country.php:142
|
3331 |
msgid ""
|
3332 |
"Change product's price and currency by customer's country. Customer's "
|
3333 |
"country is detected automatically by IP, or selected by customer manually."
|
3334 |
msgstr ""
|
3335 |
|
3336 |
+
#: includes/class-wcj-price-by-country.php:147
|
3337 |
msgid "Customer Country Detection Method"
|
3338 |
msgstr ""
|
3339 |
|
3340 |
+
#: includes/class-wcj-price-by-country.php:149
|
3341 |
msgid ""
|
3342 |
"If you choose \"by user selection\", use [wcj_country_select_drop_down_list] "
|
3343 |
"shortcode to display country selection list on frontend."
|
3344 |
msgstr ""
|
3345 |
|
3346 |
+
#: includes/class-wcj-price-by-country.php:153
|
3347 |
msgid "by IP"
|
3348 |
msgstr ""
|
3349 |
|
3350 |
+
#: includes/class-wcj-price-by-country.php:154
|
3351 |
msgid "by IP, then by user selection"
|
3352 |
msgstr ""
|
3353 |
|
3354 |
+
#: includes/class-wcj-price-by-country.php:155
|
3355 |
msgid "by user selection"
|
3356 |
msgstr ""
|
3357 |
|
3358 |
+
#: includes/class-wcj-price-by-country.php:172
|
3359 |
+
msgid "Override Country Options"
|
3360 |
+
msgstr ""
|
3361 |
+
|
3362 |
+
#: includes/class-wcj-price-by-country.php:177
|
3363 |
+
msgid "No Override"
|
3364 |
+
msgstr ""
|
3365 |
+
|
3366 |
+
#: includes/class-wcj-price-by-country.php:178
|
3367 |
msgid "Override Country with Customer's Checkout Billing Country"
|
3368 |
msgstr ""
|
3369 |
|
3370 |
+
#: includes/class-wcj-price-by-country.php:179
|
3371 |
+
msgid "Override Country with Customer's Checkout Shipping Country"
|
3372 |
+
msgstr ""
|
3373 |
+
|
3374 |
+
#: includes/class-wcj-price-by-country.php:192
|
3375 |
msgid "Price Rounding"
|
3376 |
msgstr ""
|
3377 |
|
3378 |
+
#: includes/class-wcj-price-by-country.php:193
|
3379 |
msgid "If you choose to multiply price, set rounding options here."
|
3380 |
msgstr ""
|
3381 |
|
3382 |
+
#: includes/class-wcj-price-by-country.php:198
|
3383 |
msgid "No rounding"
|
3384 |
msgstr ""
|
3385 |
|
3386 |
+
#: includes/class-wcj-price-by-country.php:199
|
3387 |
msgid "Round"
|
3388 |
msgstr ""
|
3389 |
|
3390 |
+
#: includes/class-wcj-price-by-country.php:200
|
3391 |
msgid "Round down"
|
3392 |
msgstr ""
|
3393 |
|
3394 |
+
#: includes/class-wcj-price-by-country.php:201
|
3395 |
msgid "Round up"
|
3396 |
msgstr ""
|
3397 |
|
3398 |
+
#: includes/class-wcj-price-by-country.php:206
|
3399 |
msgid "Price by Country on per Product Basis"
|
3400 |
msgstr ""
|
3401 |
|
3402 |
+
#: includes/class-wcj-price-by-country.php:215
|
3403 |
+
msgid "Price Filter Widget and Sorting by Price Support"
|
3404 |
msgstr ""
|
3405 |
|
3406 |
+
#: includes/class-wcj-price-by-country.php:218
|
3407 |
+
msgid "Recalculate price filter widget and sorting by price product prices"
|
3408 |
+
msgstr ""
|
3409 |
+
|
3410 |
+
#: includes/class-wcj-price-by-country.php:225
|
3411 |
msgid "Add Countries Flags Images to Select Drop-Down Box"
|
3412 |
msgstr ""
|
3413 |
|
3414 |
+
#: includes/class-wcj-price-by-country.php:227
|
3415 |
msgid ""
|
3416 |
"If you are using [wcj_country_select_drop_down_list] shortcode or \"Booster: "
|
3417 |
"Country Switcher\" widget, this will add country flags to these select boxes."
|
3418 |
msgstr ""
|
3419 |
|
3420 |
+
#: includes/class-wcj-price-by-country.php:234
|
3421 |
+
msgid "Search Engine Bots"
|
3422 |
+
msgstr ""
|
3423 |
+
|
3424 |
+
#: includes/class-wcj-price-by-country.php:235
|
3425 |
+
msgid "Disable Price by Country for Bots"
|
3426 |
+
msgstr ""
|
3427 |
+
|
3428 |
+
#: includes/class-wcj-price-by-country.php:244
|
3429 |
msgid "Country Groups"
|
3430 |
msgstr ""
|
3431 |
|
3432 |
+
#: includes/class-wcj-price-by-country.php:250
|
3433 |
msgid "Countries Selection"
|
3434 |
msgstr ""
|
3435 |
|
3436 |
+
#: includes/class-wcj-price-by-country.php:251
|
3437 |
msgid "Choose how do you want to enter countries groups in admin."
|
3438 |
msgstr ""
|
3439 |
|
3440 |
+
#: includes/class-wcj-price-by-country.php:256
|
3441 |
msgid "Comma separated list"
|
3442 |
msgstr ""
|
3443 |
|
3444 |
+
#: includes/class-wcj-price-by-country.php:257
|
3445 |
msgid "Multiselect"
|
3446 |
msgstr ""
|
3447 |
|
3448 |
+
#: includes/class-wcj-price-by-country.php:258
|
3449 |
msgid "Chosen select"
|
3450 |
msgstr ""
|
3451 |
|
3452 |
+
#: includes/class-wcj-price-by-country.php:263
|
3453 |
msgid "Autogenerate Groups"
|
3454 |
msgstr ""
|
3455 |
|
3456 |
+
#: includes/class-wcj-price-by-country.php:268
|
3457 |
msgid "Currencies supported in both PayPal and Yahoo Exchange Rates:"
|
3458 |
msgstr ""
|
3459 |
|
3460 |
+
#: includes/class-wcj-price-by-country.php:270
|
3461 |
+
#: includes/class-wcj-price-by-country.php:275
|
3462 |
+
#: includes/class-wcj-price-by-country.php:280
|
3463 |
msgid "Generate"
|
3464 |
msgstr ""
|
3465 |
|
3466 |
+
#: includes/class-wcj-price-by-country.php:273
|
3467 |
msgid "Currencies supported in Yahoo Exchange Rates:"
|
3468 |
msgstr ""
|
3469 |
|
3470 |
+
#: includes/class-wcj-price-by-country.php:278
|
3471 |
msgid "All Countries and Currencies:"
|
3472 |
msgstr ""
|
3473 |
|
3474 |
+
#: includes/class-wcj-price-by-country.php:285
|
3475 |
msgid "Groups Number"
|
3476 |
msgstr ""
|
3477 |
|
3478 |
+
#: includes/class-wcj-price-by-country.php:304
|
3479 |
msgid ""
|
3480 |
"Countries. List of comma separated country codes.<br>For country codes and "
|
3481 |
"predifined sets visit <a href=\"http://booster.io/features/prices-and-"
|
3482 |
"currencies-by-customers-country\" target=\"_blank\">http://booster.io</a>"
|
3483 |
msgstr ""
|
3484 |
|
3485 |
+
#: includes/class-wcj-price-by-country.php:380
|
3486 |
msgid "Multiply Price by"
|
3487 |
msgstr ""
|
3488 |
|
3489 |
+
#: includes/class-wcj-price-by-country.php:403
|
3490 |
#: includes/price-by-country/class-wcj-price-by-country-local.php:143
|
3491 |
msgid "Make empty price"
|
3492 |
msgstr ""
|
3820 |
msgid "Open external products on add to cart in new window."
|
3821 |
msgstr ""
|
3822 |
|
3823 |
+
#: includes/class-wcj-product-add-to-cart.php:215
|
3824 |
msgid "Disable Add to Cart Button (Single Product Page)"
|
3825 |
msgstr ""
|
3826 |
|
3827 |
+
#: includes/class-wcj-product-add-to-cart.php:225
|
3828 |
msgid "Disable Add to Cart Button (Category/Archives)"
|
3829 |
msgstr ""
|
3830 |
|
3831 |
+
#: includes/class-wcj-product-add-to-cart.php:235
|
3832 |
+
msgid "Custom Add to Cart Button URL (Category/Archives)"
|
3833 |
+
msgstr ""
|
3834 |
+
|
3835 |
+
#: includes/class-wcj-product-add-to-cart.php:246
|
3836 |
+
msgid "As shop default (no changes)"
|
3837 |
+
msgstr ""
|
3838 |
+
|
3839 |
+
#: includes/class-wcj-product-add-to-cart.php:250
|
3840 |
+
msgid "Disable Add to Cart Button AJAX"
|
3841 |
+
msgstr ""
|
3842 |
+
|
3843 |
+
#: includes/class-wcj-product-add-to-cart.php:341
|
3844 |
msgid "Add to Cart Local Redirect Options"
|
3845 |
msgstr ""
|
3846 |
|
3847 |
+
#: includes/class-wcj-product-add-to-cart.php:343
|
3848 |
msgid ""
|
3849 |
"This section lets you set any local URL to redirect to after successfully "
|
3850 |
"adding product to cart. Leave empty to redirect to checkout page (skipping "
|
3851 |
"the cart page)."
|
3852 |
msgstr ""
|
3853 |
|
3854 |
+
#: includes/class-wcj-product-add-to-cart.php:347
|
3855 |
msgid "Local Redirect"
|
3856 |
msgstr ""
|
3857 |
|
3858 |
+
#: includes/class-wcj-product-add-to-cart.php:354
|
3859 |
msgid "Local Redirect URL"
|
3860 |
msgstr ""
|
3861 |
|
3862 |
+
#: includes/class-wcj-product-add-to-cart.php:355
|
3863 |
msgid "Performs a safe (local) redirect, using wp_redirect()."
|
3864 |
msgstr ""
|
3865 |
|
3866 |
+
#: includes/class-wcj-product-add-to-cart.php:356
|
3867 |
msgid "Local redirect URL. Leave empty to redirect to checkout."
|
3868 |
msgstr ""
|
3869 |
|
3870 |
+
#: includes/class-wcj-product-add-to-cart.php:367
|
3871 |
+
#: includes/class-wcj-product-add-to-cart.php:373
|
3872 |
msgid "Add to Cart on Visit"
|
3873 |
msgstr ""
|
3874 |
|
3875 |
+
#: includes/class-wcj-product-add-to-cart.php:369
|
3876 |
msgid ""
|
3877 |
"This section lets you enable automatically adding product to cart on "
|
3878 |
"visiting the product page. Product is only added once, so if it is already "
|
3879 |
"in cart - duplicate product is not added. "
|
3880 |
msgstr ""
|
3881 |
|
3882 |
+
#: includes/class-wcj-product-add-to-cart.php:384
|
3883 |
msgid "Add to Cart Variable Product"
|
3884 |
msgstr ""
|
3885 |
|
3886 |
+
#: includes/class-wcj-product-add-to-cart.php:389
|
3887 |
msgid "Display Radio Buttons Instead of Drop Box"
|
3888 |
msgstr ""
|
3889 |
|
3890 |
+
#: includes/class-wcj-product-add-to-cart.php:402
|
3891 |
msgid "Add to Cart Quantity"
|
3892 |
msgstr ""
|
3893 |
|
3894 |
+
#: includes/class-wcj-product-add-to-cart.php:407
|
3895 |
msgid "Disable Quantity Field for All Products"
|
3896 |
msgstr ""
|
3897 |
|
3898 |
+
#: includes/class-wcj-product-add-to-cart.php:408
|
3899 |
msgid "Disable on Single Product Page"
|
3900 |
msgstr ""
|
3901 |
|
3902 |
+
#: includes/class-wcj-product-add-to-cart.php:415
|
3903 |
msgid "Disable on Cart Page"
|
3904 |
msgstr ""
|
3905 |
|
3906 |
+
#: includes/class-wcj-product-add-to-cart.php:426
|
3907 |
+
msgid "Add to Cart Button Disabling"
|
3908 |
msgstr ""
|
3909 |
|
3910 |
+
#: includes/class-wcj-product-add-to-cart.php:431
|
3911 |
+
msgid "Disable Add to Cart Buttons on per Product Basis"
|
3912 |
msgstr ""
|
3913 |
|
3914 |
+
#: includes/class-wcj-product-add-to-cart.php:433
|
3915 |
+
#: includes/class-wcj-product-add-to-cart.php:450
|
3916 |
+
#: includes/class-wcj-product-add-to-cart.php:467
|
3917 |
msgid "This will add meta box to each product's edit page"
|
3918 |
msgstr ""
|
3919 |
|
3920 |
+
#: includes/class-wcj-product-add-to-cart.php:443
|
3921 |
+
msgid "Add to Cart Button Custom URL"
|
3922 |
+
msgstr ""
|
3923 |
+
|
3924 |
+
#: includes/class-wcj-product-add-to-cart.php:448
|
3925 |
+
msgid "Custom Add to Cart Buttons URL on Archives on per Product Basis"
|
3926 |
+
msgstr ""
|
3927 |
+
|
3928 |
+
#: includes/class-wcj-product-add-to-cart.php:460
|
3929 |
+
msgid "Add to Cart Button AJAX"
|
3930 |
+
msgstr ""
|
3931 |
+
|
3932 |
+
#: includes/class-wcj-product-add-to-cart.php:465
|
3933 |
+
msgid "Disable/Enable Add to Cart Button AJAX on per Product Basis"
|
3934 |
+
msgstr ""
|
3935 |
+
|
3936 |
+
#: includes/class-wcj-product-add-to-cart.php:477
|
3937 |
msgid "External Products"
|
3938 |
msgstr ""
|
3939 |
|
3940 |
+
#: includes/class-wcj-product-add-to-cart.php:482
|
3941 |
msgid "Open External Products on Add to Cart in New Window"
|
3942 |
msgstr ""
|
3943 |
|
3944 |
+
#: includes/class-wcj-product-add-to-cart.php:483
|
3945 |
msgid "Enable on Single Product Pages"
|
3946 |
msgstr ""
|
3947 |
|
3948 |
+
#: includes/class-wcj-product-add-to-cart.php:490
|
3949 |
msgid "Enable on Category/Archive Pages"
|
3950 |
msgstr ""
|
3951 |
|
3957 |
msgid "Add (paid/free/discount) addons to WooCommerce products."
|
3958 |
msgstr ""
|
3959 |
|
3960 |
+
#: includes/class-wcj-product-addons.php:99
|
3961 |
msgid "Some of the required addons are not selected!"
|
3962 |
msgstr ""
|
3963 |
|
3964 |
+
#: includes/class-wcj-product-addons.php:114
|
3965 |
msgid ""
|
3966 |
"Booster: Free plugin's version is limited to only three products with per "
|
3967 |
"product addons enabled at a time. You will need to get <a href=\"http://"
|
3969 |
"number of products with per product addons."
|
3970 |
msgstr ""
|
3971 |
|
3972 |
+
#: includes/class-wcj-product-addons.php:446
|
3973 |
#: includes/class-wcj-wholesale-price.php:269
|
3974 |
#: includes/class-wcj-wholesale-price.php:304
|
3975 |
msgid "Save product after you change this number."
|
3976 |
msgstr ""
|
3977 |
|
3978 |
+
#: includes/class-wcj-product-addons.php:449
|
3979 |
+
#: includes/class-wcj-product-addons.php:560
|
3980 |
msgid "Product Addons Total Number"
|
3981 |
msgstr ""
|
3982 |
|
3983 |
+
#: includes/class-wcj-product-addons.php:456
|
3984 |
+
#: includes/class-wcj-product-addons.php:576
|
3985 |
msgid "Product Addon"
|
3986 |
msgstr ""
|
3987 |
|
3988 |
+
#: includes/class-wcj-product-addons.php:472
|
3989 |
+
#: includes/class-wcj-product-addons.php:590
|
3990 |
msgid "Radio Buttons"
|
3991 |
msgstr ""
|
3992 |
|
3993 |
+
#: includes/class-wcj-product-addons.php:476
|
3994 |
+
#: includes/class-wcj-product-addons.php:594
|
3995 |
msgid "Label(s)"
|
3996 |
msgstr ""
|
3997 |
|
3998 |
+
#: includes/class-wcj-product-addons.php:477
|
3999 |
+
#: includes/class-wcj-product-addons.php:484
|
4000 |
+
#: includes/class-wcj-product-addons.php:491
|
4001 |
+
#: includes/class-wcj-product-addons.php:595
|
4002 |
+
#: includes/class-wcj-product-addons.php:603
|
4003 |
+
#: includes/class-wcj-product-addons.php:612
|
4004 |
msgid "For radio enter one value per line."
|
4005 |
msgstr ""
|
4006 |
|
4007 |
+
#: includes/class-wcj-product-addons.php:483
|
4008 |
+
#: includes/class-wcj-product-addons.php:602
|
4009 |
msgid "Price(s)"
|
4010 |
msgstr ""
|
4011 |
|
4012 |
+
#: includes/class-wcj-product-addons.php:490
|
4013 |
+
#: includes/class-wcj-product-addons.php:611
|
4014 |
msgid "Tooltip(s)"
|
4015 |
msgstr ""
|
4016 |
|
4017 |
+
#: includes/class-wcj-product-addons.php:497
|
4018 |
+
#: includes/class-wcj-product-addons.php:619
|
4019 |
#: includes/class-wcj-purchase-data.php:338
|
4020 |
msgid "Default Value"
|
4021 |
msgstr ""
|
4022 |
|
4023 |
+
#: includes/class-wcj-product-addons.php:498
|
4024 |
+
#: includes/class-wcj-product-addons.php:620
|
4025 |
msgid ""
|
4026 |
"For checkbox use 'checked'; for radio enter default label. Leave blank for "
|
4027 |
"no default value."
|
4028 |
msgstr ""
|
4029 |
|
4030 |
+
#: includes/class-wcj-product-addons.php:504
|
4031 |
msgid "Is required"
|
4032 |
msgstr ""
|
4033 |
|
4034 |
+
#: includes/class-wcj-product-addons.php:533
|
4035 |
msgid "Enable per Product Addons"
|
4036 |
msgstr ""
|
4037 |
|
4038 |
+
#: includes/class-wcj-product-addons.php:535
|
4039 |
msgid ""
|
4040 |
"When enabled, this will add new \"Booster: Product Addons\" meta box to each "
|
4041 |
"product's edit page."
|
4042 |
msgstr ""
|
4043 |
|
4044 |
+
#: includes/class-wcj-product-addons.php:547
|
4045 |
msgid "All Product Options"
|
4046 |
msgstr ""
|
4047 |
|
4048 |
+
#: includes/class-wcj-product-addons.php:552
|
4049 |
msgid "Enable All Products Addons"
|
4050 |
msgstr ""
|
4051 |
|
4052 |
+
#: includes/class-wcj-product-addons.php:554
|
4053 |
msgid "When enabled, this will add addons below to all products."
|
4054 |
msgstr ""
|
4055 |
|
4056 |
+
#: includes/class-wcj-product-addons.php:561
|
4057 |
msgid "Save changes after you change this number."
|
4058 |
msgstr ""
|
4059 |
|
4060 |
+
#: includes/class-wcj-product-addons.php:627
|
4061 |
#: includes/class-wcj-product-by-user.php:190
|
4062 |
msgid "Is Required"
|
4063 |
msgstr ""
|
4064 |
|
4065 |
+
#: includes/class-wcj-product-addons.php:647
|
4066 |
msgid "Enable AJAX on Single Product Page"
|
4067 |
msgstr ""
|
4068 |
|
4069 |
+
#: includes/class-wcj-product-addons.php:654
|
4070 |
+
msgid "Addon in Cart Format"
|
4071 |
+
msgstr ""
|
4072 |
+
|
4073 |
+
#: includes/class-wcj-product-addons.php:662
|
4074 |
+
#: includes/class-wcj-product-addons.php:685
|
4075 |
+
msgid "Each Addon"
|
4076 |
+
msgstr ""
|
4077 |
+
|
4078 |
+
#: includes/class-wcj-product-addons.php:663
|
4079 |
+
#: includes/class-wcj-product-addons.php:686
|
4080 |
+
msgid "You can use %addon_label% and %addon_price%."
|
4081 |
+
msgstr ""
|
4082 |
+
|
4083 |
+
#: includes/class-wcj-product-addons.php:677
|
4084 |
+
msgid "Addon in Order Details Table Format"
|
4085 |
+
msgstr ""
|
4086 |
+
|
4087 |
+
#: includes/class-wcj-product-addons.php:700
|
4088 |
+
msgid "Admin Order Page"
|
4089 |
+
msgstr ""
|
4090 |
+
|
4091 |
+
#: includes/class-wcj-product-addons.php:701
|
4092 |
+
msgid "Hide all addons"
|
4093 |
+
msgstr ""
|
4094 |
+
|
4095 |
#: includes/class-wcj-product-bookings.php:27
|
4096 |
msgid "Bookings"
|
4097 |
msgstr ""
|
4254 |
msgstr ""
|
4255 |
|
4256 |
#: includes/class-wcj-product-bulk-price-converter.php:261
|
4257 |
+
#: includes/shortcodes/class-wcj-products-shortcodes.php:222
|
4258 |
msgid "Any"
|
4259 |
msgstr ""
|
4260 |
|
4283 |
msgstr ""
|
4284 |
|
4285 |
#: includes/class-wcj-product-by-country.php:28
|
4286 |
+
msgid "Display WooCommerce products by customer's country."
|
4287 |
msgstr ""
|
4288 |
|
4289 |
#: includes/class-wcj-product-by-country.php:76
|
4292 |
|
4293 |
#: includes/class-wcj-product-by-country.php:90
|
4294 |
msgid ""
|
4295 |
+
"When enabled, module will add new \"Booster: Product Visibility by Country\" "
|
4296 |
+
"meta box to each product's edit page."
|
4297 |
msgstr ""
|
4298 |
|
4299 |
#: includes/class-wcj-product-by-user-role.php:27
|
4301 |
msgstr ""
|
4302 |
|
4303 |
#: includes/class-wcj-product-by-user-role.php:28
|
4304 |
+
msgid "Display WooCommerce products by customer's user role."
|
4305 |
msgstr ""
|
4306 |
|
4307 |
+
#: includes/class-wcj-product-by-user-role.php:73
|
4308 |
msgid "Visible for User Roles"
|
4309 |
msgstr ""
|
4310 |
|
4311 |
+
#: includes/class-wcj-product-by-user-role.php:74
|
4312 |
+
msgid "Hold Control (Ctrl) key to select multiple roles."
|
4313 |
+
msgstr ""
|
4314 |
+
|
4315 |
+
#: includes/class-wcj-product-by-user-role.php:88
|
4316 |
msgid ""
|
4317 |
+
"When enabled, module will add new \"Booster: Product Visibility by User Role"
|
4318 |
+
"\" meta box to each product's edit page."
|
4319 |
msgstr ""
|
4320 |
|
4321 |
#: includes/class-wcj-product-by-user.php:27
|
4342 |
#: includes/class-wcj-product-tabs.php:542
|
4343 |
#: includes/class-wcj-purchase-data.php:321
|
4344 |
#: includes/class-wcj-related-products.php:123
|
4345 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:68
|
4346 |
#: includes/input-fields/class-wcj-product-input-fields-abstract.php:214
|
4347 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:90
|
4348 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:82
|
4349 |
#: includes/shortcodes/class-wcj-products-add-form-shortcodes.php:259
|
4350 |
msgid "Title"
|
4351 |
msgstr ""
|
5209 |
#: includes/class-wcj-product-tabs.php:635
|
5210 |
#: includes/class-wcj-product-tabs.php:644
|
5211 |
#: includes/class-wcj-product-tabs.php:653
|
5212 |
+
#: includes/classes/class-wcj-module.php:432
|
5213 |
msgid "Depreciated"
|
5214 |
msgstr ""
|
5215 |
|
5625 |
msgid "Make non clickable"
|
5626 |
msgstr ""
|
5627 |
|
5628 |
+
#: includes/class-wcj-shipping.php:27
|
5629 |
msgid "Add multiple custom shipping methods to WooCommerce."
|
5630 |
msgstr ""
|
5631 |
|
5632 |
+
#: includes/class-wcj-shipping.php:28
|
5633 |
+
msgid "Add descriptions and icons to shipping methods on frontend."
|
5634 |
+
msgstr ""
|
5635 |
+
|
5636 |
#: includes/class-wcj-shipping.php:29
|
5637 |
msgid "Hide WooCommerce shipping when free is available."
|
5638 |
msgstr ""
|
5641 |
msgid "Display \"left to free shipping\" info."
|
5642 |
msgstr ""
|
5643 |
|
5644 |
+
#: includes/class-wcj-shipping.php:120 includes/class-wcj-shipping.php:130
|
5645 |
+
#: includes/class-wcj-shipping.php:140 includes/class-wcj-shipping.php:339
|
5646 |
+
#: includes/class-wcj-shipping.php:373 includes/class-wcj-shipping.php:411
|
5647 |
+
#: includes/functions/wcj-functions.php:448
|
5648 |
#: includes/widgets/class-wcj-widget-left-to-free-shipping.php:53
|
5649 |
msgid "%left_to_free% left to free shipping"
|
5650 |
msgstr ""
|
5651 |
|
5652 |
+
#: includes/class-wcj-shipping.php:191
|
5653 |
msgid "Booster: Hide shipping"
|
5654 |
msgstr ""
|
5655 |
|
5656 |
+
#: includes/class-wcj-shipping.php:192 includes/class-wcj-shipping.php:310
|
5657 |
msgid "Hide all when free is available"
|
5658 |
msgstr ""
|
5659 |
|
5660 |
+
#: includes/class-wcj-shipping.php:232
|
5661 |
msgid "WooCommerce > Settings > Shipping"
|
5662 |
msgstr ""
|
5663 |
|
5664 |
+
#: includes/class-wcj-shipping.php:235 includes/class-wcj-shipping.php:242
|
5665 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:93
|
5666 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:85
|
5667 |
msgid "Custom Shipping"
|
5668 |
msgstr ""
|
5669 |
|
5670 |
+
#: includes/class-wcj-shipping.php:238
|
5671 |
+
msgid "This section lets you add custom shipping method."
|
5672 |
+
msgstr ""
|
5673 |
+
|
5674 |
+
#: includes/class-wcj-shipping.php:239
|
5675 |
+
msgid "Visit %s to set method's options."
|
5676 |
+
msgstr ""
|
5677 |
+
|
5678 |
+
#: includes/class-wcj-shipping.php:249
|
5679 |
+
msgid "Admin Title"
|
5680 |
+
msgstr ""
|
5681 |
+
|
5682 |
+
#: includes/class-wcj-shipping.php:251
|
5683 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:51
|
5684 |
+
msgid "Booster: Custom Shipping"
|
5685 |
+
msgstr ""
|
5686 |
+
|
5687 |
+
#: includes/class-wcj-shipping.php:262
|
5688 |
+
msgid "Custom Shipping (Legacy - without Shipping Zones)"
|
5689 |
+
msgstr ""
|
5690 |
+
|
5691 |
+
#: includes/class-wcj-shipping.php:265
|
5692 |
msgid "This section lets you set number of custom shipping methods to add."
|
5693 |
msgstr ""
|
5694 |
|
5695 |
+
#: includes/class-wcj-shipping.php:266
|
5696 |
msgid "After setting the number, visit %s to set each method options."
|
5697 |
msgstr ""
|
5698 |
|
5699 |
+
#: includes/class-wcj-shipping.php:269
|
5700 |
msgid "Custom Shipping Methods Number"
|
5701 |
msgstr ""
|
5702 |
|
5703 |
+
#: includes/class-wcj-shipping.php:281
|
5704 |
msgid "Admin Title Custom Shipping"
|
5705 |
msgstr ""
|
5706 |
|
5707 |
+
#: includes/class-wcj-shipping.php:295
|
5708 |
msgid "Hide if Free is Available"
|
5709 |
msgstr ""
|
5710 |
|
5711 |
+
#: includes/class-wcj-shipping.php:297
|
5712 |
msgid ""
|
5713 |
"This section lets you hide other shipping options when free shipping is "
|
5714 |
"available on shop frontend."
|
5715 |
msgstr ""
|
5716 |
|
5717 |
+
#: includes/class-wcj-shipping.php:309
|
5718 |
msgid "Hide shipping"
|
5719 |
msgstr ""
|
5720 |
|
5721 |
+
#: includes/class-wcj-shipping.php:321
|
5722 |
msgid "Left to Free Shipping Info Options"
|
5723 |
msgstr ""
|
5724 |
|
5725 |
+
#: includes/class-wcj-shipping.php:323
|
5726 |
msgid ""
|
5727 |
"This section lets you enable info on cart, mini cart and checkout pages."
|
5728 |
msgstr ""
|
5729 |
|
5730 |
+
#: includes/class-wcj-shipping.php:324
|
5731 |
msgid ""
|
5732 |
"You can also use <em>Booster - Left to Free Shipping</em> widget, <em>"
|
5733 |
"[wcj_get_left_to_free_shipping content=\"\"]</em> shortcode or "
|
5734 |
"<em>wcj_get_left_to_free_shipping( $content );</em> function."
|
5735 |
msgstr ""
|
5736 |
|
5737 |
+
#: includes/class-wcj-shipping.php:325
|
5738 |
msgid ""
|
5739 |
"In content you can use: <em>%left_to_free%</em> and <em>"
|
5740 |
"%free_shipping_min_amount%</em> shortcodes."
|
5741 |
msgstr ""
|
5742 |
|
5743 |
+
#: includes/class-wcj-shipping.php:329
|
5744 |
msgid "Info on Cart"
|
5745 |
msgstr ""
|
5746 |
|
5747 |
+
#: includes/class-wcj-shipping.php:354 includes/class-wcj-shipping.php:392
|
5748 |
+
#: includes/class-wcj-shipping.php:436
|
5749 |
msgid "Position Order (Priority)"
|
5750 |
msgstr ""
|
5751 |
|
5752 |
+
#: includes/class-wcj-shipping.php:361
|
5753 |
msgid "Info on Mini Cart"
|
5754 |
msgstr ""
|
5755 |
|
5756 |
+
#: includes/class-wcj-shipping.php:399
|
5757 |
msgid "Info on Checkout"
|
5758 |
msgstr ""
|
5759 |
|
5760 |
+
#: includes/class-wcj-shipping.php:443
|
5761 |
msgid "Message on Free Shipping Reached"
|
5762 |
msgstr ""
|
5763 |
|
5764 |
+
#: includes/class-wcj-shipping.php:444
|
5765 |
msgid "You can set it empty"
|
5766 |
msgstr ""
|
5767 |
|
5768 |
+
#: includes/class-wcj-shipping.php:446
|
5769 |
+
#: includes/functions/wcj-functions.php:488
|
5770 |
msgid "You have Free delivery"
|
5771 |
msgstr ""
|
5772 |
|
5773 |
+
#: includes/class-wcj-shipping.php:457 includes/class-wcj-shipping.php:463
|
5774 |
+
msgid "Shipping Descriptions"
|
5775 |
+
msgstr ""
|
5776 |
+
|
5777 |
+
#: includes/class-wcj-shipping.php:459
|
5778 |
+
msgid ""
|
5779 |
+
"This section will allow you to add any text (e.g. description) for shipping "
|
5780 |
+
"method. Text will be visible on cart and checkout pages. You can add HTML "
|
5781 |
+
"tags here, e.g. try \"%s\""
|
5782 |
+
msgstr ""
|
5783 |
+
|
5784 |
+
#: includes/class-wcj-shipping.php:489 includes/class-wcj-shipping.php:495
|
5785 |
+
msgid "Shipping Icons"
|
5786 |
+
msgstr ""
|
5787 |
+
|
5788 |
+
#: includes/class-wcj-shipping.php:491
|
5789 |
+
msgid ""
|
5790 |
+
"This section will allow you to add icons for shipping method. Icons will be "
|
5791 |
+
"visible on cart and checkout pages."
|
5792 |
+
msgstr ""
|
5793 |
+
|
5794 |
+
#: includes/class-wcj-shipping.php:502
|
5795 |
+
msgid "Icon Position"
|
5796 |
+
msgstr ""
|
5797 |
+
|
5798 |
+
#: includes/class-wcj-shipping.php:507
|
5799 |
+
msgid "Before label"
|
5800 |
+
msgstr ""
|
5801 |
+
|
5802 |
+
#: includes/class-wcj-shipping.php:508
|
5803 |
+
msgid "After label"
|
5804 |
+
msgstr ""
|
5805 |
+
|
5806 |
+
#: includes/class-wcj-shipping.php:512
|
5807 |
+
msgid "Icon Style"
|
5808 |
+
msgstr ""
|
5809 |
+
|
5810 |
+
#: includes/class-wcj-shipping.php:513
|
5811 |
+
msgid ""
|
5812 |
+
"You can also style icons with CSS class \"wcj_shipping_icon\", or id "
|
5813 |
+
"\"wcj_shipping_icon_method_id\""
|
5814 |
+
msgstr ""
|
5815 |
+
|
5816 |
+
#: includes/class-wcj-shipping.php:524
|
5817 |
+
msgid "Image URL"
|
5818 |
+
msgstr ""
|
5819 |
+
|
5820 |
#: includes/class-wcj-sku.php:27
|
5821 |
msgid "Generate WooCommerce SKUs automatically."
|
5822 |
msgstr ""
|
5933 |
"Tool."
|
5934 |
msgstr ""
|
5935 |
|
5936 |
+
#: includes/class-wcj-sorting.php:26
|
5937 |
msgid "Sorting"
|
5938 |
msgstr ""
|
5939 |
|
5940 |
+
#: includes/class-wcj-sorting.php:27
|
5941 |
msgid ""
|
5942 |
"Add more WooCommerce sorting options or remove all sorting including default."
|
5943 |
msgstr ""
|
5944 |
|
5945 |
+
#: includes/class-wcj-sorting.php:67
|
5946 |
msgid "WooJetpack: Remove All Sorting"
|
5947 |
msgstr ""
|
5948 |
|
5949 |
+
#: includes/class-wcj-sorting.php:71
|
5950 |
msgid "Completely remove sorting from the shop front end"
|
5951 |
msgstr ""
|
5952 |
|
5953 |
+
#: includes/class-wcj-sorting.php:165 includes/class-wcj-sorting.php:170
|
5954 |
msgid "Remove All Sorting"
|
5955 |
msgstr ""
|
5956 |
|
5957 |
+
#: includes/class-wcj-sorting.php:171
|
5958 |
msgid "Remove all sorting (including WooCommerce default)"
|
5959 |
msgstr ""
|
5960 |
|
5961 |
+
#: includes/class-wcj-sorting.php:183 includes/class-wcj-sorting.php:188
|
5962 |
msgid "Add More Sorting"
|
5963 |
msgstr ""
|
5964 |
|
5965 |
+
#: includes/class-wcj-sorting.php:195
|
5966 |
msgid "Sort by Name"
|
5967 |
msgstr ""
|
5968 |
|
5969 |
+
#: includes/class-wcj-sorting.php:196 includes/class-wcj-sorting.php:199
|
5970 |
msgid "Sort by title: A to Z"
|
5971 |
msgstr ""
|
5972 |
|
5973 |
+
#: includes/class-wcj-sorting.php:197 includes/class-wcj-sorting.php:206
|
5974 |
+
#: includes/class-wcj-sorting.php:215 includes/class-wcj-sorting.php:224
|
5975 |
+
#: includes/class-wcj-sorting.php:242 includes/class-wcj-sorting.php:251
|
5976 |
msgid "Text to show on frontend. Leave blank to disable."
|
5977 |
msgstr ""
|
5978 |
|
5979 |
+
#: includes/class-wcj-sorting.php:205 includes/class-wcj-sorting.php:208
|
5980 |
msgid "Sort by title: Z to A"
|
5981 |
msgstr ""
|
5982 |
|
5983 |
+
#: includes/class-wcj-sorting.php:213
|
5984 |
msgid "Sort by SKU"
|
5985 |
msgstr ""
|
5986 |
|
5987 |
+
#: includes/class-wcj-sorting.php:214 includes/class-wcj-sorting.php:217
|
5988 |
msgid "Sort by SKU: low to high"
|
5989 |
msgstr ""
|
5990 |
|
5991 |
+
#: includes/class-wcj-sorting.php:223 includes/class-wcj-sorting.php:226
|
5992 |
msgid "Sort by SKU: high to low"
|
5993 |
msgstr ""
|
5994 |
|
5995 |
+
#: includes/class-wcj-sorting.php:232
|
5996 |
msgid "Sort SKUs as numbers instead of as texts"
|
5997 |
msgstr ""
|
5998 |
|
5999 |
+
#: includes/class-wcj-sorting.php:240
|
6000 |
msgid "Sort by stock quantity"
|
6001 |
msgstr ""
|
6002 |
|
6003 |
+
#: includes/class-wcj-sorting.php:241 includes/class-wcj-sorting.php:244
|
6004 |
msgid "Sort by stock quantity: low to high"
|
6005 |
msgstr ""
|
6006 |
|
6007 |
+
#: includes/class-wcj-sorting.php:250 includes/class-wcj-sorting.php:253
|
6008 |
msgid "Sort by stock quantity: high to low"
|
6009 |
msgstr ""
|
6010 |
|
6023 |
msgstr ""
|
6024 |
|
6025 |
#: includes/class-wcj-wholesale-price.php:262
|
6026 |
+
#: includes/class-wcj-wholesale-price.php:407
|
6027 |
msgid "Discount Type"
|
6028 |
msgstr ""
|
6029 |
|
6030 |
#: includes/class-wcj-wholesale-price.php:268
|
6031 |
#: includes/class-wcj-wholesale-price.php:303
|
6032 |
+
#: includes/class-wcj-wholesale-price.php:443
|
6033 |
+
#: includes/class-wcj-wholesale-price.php:498
|
6034 |
msgid "Number of levels"
|
6035 |
msgstr ""
|
6036 |
|
6050 |
|
6051 |
#: includes/class-wcj-wholesale-price.php:283
|
6052 |
#: includes/class-wcj-wholesale-price.php:318
|
6053 |
+
#: includes/class-wcj-wholesale-price.php:456
|
6054 |
+
#: includes/class-wcj-wholesale-price.php:512
|
6055 |
msgid "Min quantity"
|
6056 |
msgstr ""
|
6057 |
|
6058 |
#: includes/class-wcj-wholesale-price.php:290
|
6059 |
#: includes/class-wcj-wholesale-price.php:325
|
|
|
6060 |
#: includes/class-wcj-wholesale-price.php:464
|
6061 |
+
#: includes/class-wcj-wholesale-price.php:465
|
6062 |
#: includes/class-wcj-wholesale-price.php:520
|
6063 |
+
#: includes/class-wcj-wholesale-price.php:521
|
6064 |
msgid "Discount"
|
6065 |
msgstr ""
|
6066 |
|
6086 |
msgid "Show discount info on cart page"
|
6087 |
msgstr ""
|
6088 |
|
6089 |
+
#: includes/class-wcj-wholesale-price.php:393
|
6090 |
+
msgid "Show"
|
6091 |
+
msgstr ""
|
6092 |
+
|
6093 |
#: includes/class-wcj-wholesale-price.php:399
|
6094 |
msgid "If show discount info on cart page is enabled, set format here"
|
6095 |
msgstr ""
|
6096 |
|
6097 |
+
#: includes/class-wcj-wholesale-price.php:400
|
6098 |
+
msgid "Replaced values: %old_price%, %price%, %discount_value%."
|
6099 |
msgstr ""
|
6100 |
|
6101 |
#: includes/class-wcj-wholesale-price.php:417
|
6102 |
+
msgid "Products to include"
|
6103 |
+
msgstr ""
|
6104 |
+
|
6105 |
+
#: includes/class-wcj-wholesale-price.php:418
|
6106 |
msgid "Leave blank to include all products."
|
6107 |
msgstr ""
|
6108 |
|
6109 |
+
#: includes/class-wcj-wholesale-price.php:426
|
6110 |
msgid "Products to exclude"
|
6111 |
msgstr ""
|
6112 |
|
6113 |
+
#: includes/class-wcj-wholesale-price.php:438
|
6114 |
msgid "Wholesale Levels Options"
|
6115 |
msgstr ""
|
6116 |
|
6117 |
+
#: includes/class-wcj-wholesale-price.php:457
|
6118 |
+
#: includes/class-wcj-wholesale-price.php:513
|
6119 |
msgid "Minimum quantity to apply discount"
|
6120 |
msgstr ""
|
6121 |
|
6122 |
+
#: includes/class-wcj-wholesale-price.php:478
|
6123 |
msgid "Additional User Roles Options"
|
6124 |
msgstr ""
|
6125 |
|
6126 |
+
#: includes/class-wcj-wholesale-price.php:480
|
6127 |
msgid ""
|
6128 |
"If you want to set different wholesale pricing options for different user "
|
6129 |
"roles, fill this section. Please note that you can also use Booster's "
|
6130 |
"\"Price by User Role\" module without filling this section."
|
6131 |
msgstr ""
|
6132 |
|
6133 |
+
#: includes/class-wcj-wholesale-price.php:484
|
6134 |
msgid "User Roles Settings"
|
6135 |
msgstr ""
|
6136 |
|
6142 |
msgid "Booster for WooCommerce basic WPML support."
|
6143 |
msgstr ""
|
6144 |
|
6145 |
+
#: includes/class-wcj-wpml.php:66 includes/classes/class-wcj-module.php:344
|
6146 |
msgid "Tools"
|
6147 |
msgstr ""
|
6148 |
|
6149 |
+
#: includes/class-wcj-wpml.php:71 includes/classes/class-wcj-module.php:350
|
6150 |
msgid "Module Tools"
|
6151 |
msgstr ""
|
6152 |
|
6167 |
msgid "Settings have been reset to defaults."
|
6168 |
msgstr ""
|
6169 |
|
6170 |
+
#: includes/classes/class-wcj-module.php:332
|
6171 |
msgid "Back to Module Settings"
|
6172 |
msgstr ""
|
6173 |
|
6174 |
+
#: includes/classes/class-wcj-module.php:424
|
6175 |
msgid "disabled"
|
6176 |
msgstr ""
|
6177 |
|
6178 |
+
#: includes/classes/class-wcj-module.php:470
|
6179 |
msgid "Reset Settings"
|
6180 |
msgstr ""
|
6181 |
|
6182 |
+
#: includes/classes/class-wcj-module.php:476
|
6183 |
msgid "Reset Module to Default Settings"
|
6184 |
msgstr ""
|
6185 |
|
6186 |
+
#: includes/classes/class-wcj-module.php:477
|
6187 |
msgid "Reset Submodule to Default Settings"
|
6188 |
msgstr ""
|
6189 |
|
6190 |
+
#: includes/classes/class-wcj-module.php:480
|
6191 |
msgid "Reset settings"
|
6192 |
msgstr ""
|
6193 |
|
6194 |
+
#: includes/classes/class-wcj-module.php:514
|
6195 |
msgid "Module Options"
|
6196 |
msgstr ""
|
6197 |
|
6198 |
+
#: includes/classes/class-wcj-module.php:521
|
6199 |
msgid "Enable Module"
|
6200 |
msgstr ""
|
6201 |
|
6867 |
msgid "[{site_title}] Custom Subject - Order ({order_number}) - {order_date}"
|
6868 |
msgstr ""
|
6869 |
|
6870 |
+
#: includes/emails/class-wc-email-wcj-custom.php:251
|
6871 |
msgid "New order (%s)"
|
6872 |
msgstr ""
|
6873 |
|
6874 |
+
#: includes/emails/class-wc-email-wcj-custom.php:252
|
6875 |
msgid "Order status updated to %s"
|
6876 |
msgstr ""
|
6877 |
|
6878 |
+
#: includes/emails/class-wc-email-wcj-custom.php:255
|
6879 |
msgid "Order status %s to %s"
|
6880 |
msgstr ""
|
6881 |
|
6882 |
+
#: includes/emails/class-wc-email-wcj-custom.php:262
|
6883 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:61
|
6884 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:76
|
6885 |
msgid "Enable/Disable"
|
6886 |
msgstr ""
|
6887 |
|
6888 |
+
#: includes/emails/class-wc-email-wcj-custom.php:264
|
6889 |
msgid "Enable this email notification"
|
6890 |
msgstr ""
|
6891 |
|
6892 |
+
#: includes/emails/class-wc-email-wcj-custom.php:268
|
6893 |
msgid "Trigger(s)"
|
6894 |
msgstr ""
|
6895 |
|
6896 |
+
#: includes/emails/class-wc-email-wcj-custom.php:272
|
6897 |
msgid ""
|
6898 |
"Please note, that all new orders in WooCommerce by default are created with "
|
6899 |
"Pending Payment status. If you want to change the default order status - you "
|
6901 |
"Settings > Booster > Shipping & Orders > Order Custom Statuses)."
|
6902 |
msgstr ""
|
6903 |
|
6904 |
+
#: includes/emails/class-wc-email-wcj-custom.php:275
|
6905 |
msgid "New order (Any status)"
|
6906 |
msgstr ""
|
6907 |
|
6908 |
+
#: includes/emails/class-wc-email-wcj-custom.php:280
|
6909 |
msgid "Reset password notification"
|
6910 |
msgstr ""
|
6911 |
|
6912 |
+
#: includes/emails/class-wc-email-wcj-custom.php:281
|
6913 |
msgid "Order fully refunded notification"
|
6914 |
msgstr ""
|
6915 |
|
6916 |
+
#: includes/emails/class-wc-email-wcj-custom.php:282
|
6917 |
msgid "Order partially refunded notification"
|
6918 |
msgstr ""
|
6919 |
|
6920 |
+
#: includes/emails/class-wc-email-wcj-custom.php:283
|
6921 |
msgid "New customer note notification"
|
6922 |
msgstr ""
|
6923 |
|
6924 |
+
#: includes/emails/class-wc-email-wcj-custom.php:284
|
6925 |
+
msgid "Low stock notification"
|
6926 |
+
msgstr ""
|
6927 |
+
|
6928 |
+
#: includes/emails/class-wc-email-wcj-custom.php:285
|
6929 |
+
msgid "No stock notification"
|
6930 |
+
msgstr ""
|
6931 |
+
|
6932 |
+
#: includes/emails/class-wc-email-wcj-custom.php:286
|
6933 |
+
msgid "Product on backorder notification"
|
6934 |
+
msgstr ""
|
6935 |
+
|
6936 |
+
#: includes/emails/class-wc-email-wcj-custom.php:287
|
6937 |
+
msgid "Created customer notification"
|
6938 |
+
msgstr ""
|
6939 |
+
|
6940 |
+
#: includes/emails/class-wc-email-wcj-custom.php:295
|
6941 |
msgid "Recipient(s)"
|
6942 |
msgstr ""
|
6943 |
|
6944 |
+
#: includes/emails/class-wc-email-wcj-custom.php:297
|
6945 |
msgid ""
|
6946 |
"Enter recipients (comma separated) for this email. Defaults to <code>%s</"
|
6947 |
"code>."
|
6948 |
msgstr ""
|
6949 |
|
6950 |
+
#: includes/emails/class-wc-email-wcj-custom.php:297
|
6951 |
msgid "Or enter <code>%customer%</code> to send to customer billing email."
|
6952 |
msgstr ""
|
6953 |
|
6954 |
+
#: includes/emails/class-wc-email-wcj-custom.php:302
|
6955 |
msgid "Subject"
|
6956 |
msgstr ""
|
6957 |
|
6958 |
+
#: includes/emails/class-wc-email-wcj-custom.php:304
|
6959 |
msgid ""
|
6960 |
"This controls the email subject line. Leave blank to use the default "
|
6961 |
"subject: <code>%s</code>."
|
6962 |
msgstr ""
|
6963 |
|
6964 |
+
#: includes/emails/class-wc-email-wcj-custom.php:309
|
6965 |
msgid "Email Heading"
|
6966 |
msgstr ""
|
6967 |
|
6968 |
+
#: includes/emails/class-wc-email-wcj-custom.php:311
|
6969 |
msgid ""
|
6970 |
"This controls the main heading contained within the email notification. "
|
6971 |
"Leave blank to use the default heading: <code>%s</code>."
|
6972 |
msgstr ""
|
6973 |
|
6974 |
+
#: includes/emails/class-wc-email-wcj-custom.php:316
|
6975 |
msgid "Email type"
|
6976 |
msgstr ""
|
6977 |
|
6978 |
+
#: includes/emails/class-wc-email-wcj-custom.php:318
|
6979 |
msgid "Choose which format of email to send."
|
6980 |
msgstr ""
|
6981 |
|
6982 |
+
#: includes/emails/class-wc-email-wcj-custom.php:324
|
6983 |
msgid "HTML template"
|
6984 |
msgstr ""
|
6985 |
|
6986 |
+
#: includes/emails/class-wc-email-wcj-custom.php:326
|
6987 |
+
#: includes/emails/class-wc-email-wcj-custom.php:335
|
6988 |
msgid "You can use shortcodes here. E.g. Booster's order shortcodes."
|
6989 |
msgstr ""
|
6990 |
|
6991 |
+
#: includes/emails/class-wc-email-wcj-custom.php:333
|
6992 |
msgid "Plain text template"
|
6993 |
msgstr ""
|
6994 |
|
7988 |
msgid "Zimbabwe"
|
7989 |
msgstr ""
|
7990 |
|
7991 |
+
#: includes/functions/wcj-functions.php:509
|
7992 |
msgid "Before cart"
|
7993 |
msgstr ""
|
7994 |
|
7995 |
+
#: includes/functions/wcj-functions.php:510
|
7996 |
msgid "Before cart table"
|
7997 |
msgstr ""
|
7998 |
|
7999 |
+
#: includes/functions/wcj-functions.php:511
|
8000 |
msgid "Before cart contents"
|
8001 |
msgstr ""
|
8002 |
|
8003 |
+
#: includes/functions/wcj-functions.php:512
|
8004 |
msgid "Cart contents"
|
8005 |
msgstr ""
|
8006 |
|
8007 |
+
#: includes/functions/wcj-functions.php:513
|
8008 |
msgid "Cart coupon"
|
8009 |
msgstr ""
|
8010 |
|
8011 |
+
#: includes/functions/wcj-functions.php:514
|
8012 |
msgid "Cart actions"
|
8013 |
msgstr ""
|
8014 |
|
8015 |
+
#: includes/functions/wcj-functions.php:515
|
8016 |
msgid "After cart contents"
|
8017 |
msgstr ""
|
8018 |
|
8019 |
+
#: includes/functions/wcj-functions.php:516
|
8020 |
msgid "After cart table"
|
8021 |
msgstr ""
|
8022 |
|
8023 |
+
#: includes/functions/wcj-functions.php:517
|
8024 |
msgid "Cart collaterals"
|
8025 |
msgstr ""
|
8026 |
|
8027 |
+
#: includes/functions/wcj-functions.php:518
|
8028 |
msgid "After cart"
|
8029 |
msgstr ""
|
8030 |
|
8031 |
+
#: includes/functions/wcj-functions.php:520
|
8032 |
msgid "Before cart totals"
|
8033 |
msgstr ""
|
8034 |
|
8035 |
+
#: includes/functions/wcj-functions.php:521
|
8036 |
msgid "Cart totals: Before shipping"
|
8037 |
msgstr ""
|
8038 |
|
8039 |
+
#: includes/functions/wcj-functions.php:522
|
8040 |
msgid "Cart totals: After shipping"
|
8041 |
msgstr ""
|
8042 |
|
8043 |
+
#: includes/functions/wcj-functions.php:523
|
8044 |
msgid "Cart totals: Before order total"
|
8045 |
msgstr ""
|
8046 |
|
8047 |
+
#: includes/functions/wcj-functions.php:524
|
8048 |
msgid "Cart totals: After order total"
|
8049 |
msgstr ""
|
8050 |
|
8051 |
+
#: includes/functions/wcj-functions.php:525
|
8052 |
msgid "Proceed to checkout"
|
8053 |
msgstr ""
|
8054 |
|
8055 |
+
#: includes/functions/wcj-functions.php:526
|
8056 |
msgid "After cart totals"
|
8057 |
msgstr ""
|
8058 |
|
8059 |
+
#: includes/functions/wcj-functions.php:528
|
8060 |
msgid "Before shipping calculator"
|
8061 |
msgstr ""
|
8062 |
|
8063 |
+
#: includes/functions/wcj-functions.php:529
|
8064 |
msgid "After shipping calculator"
|
8065 |
msgstr ""
|
8066 |
|
8067 |
+
#: includes/functions/wcj-functions.php:531
|
8068 |
msgid "If cart is empty"
|
8069 |
msgstr ""
|
8070 |
|
8071 |
+
#: includes/functions/wcj-functions.php:798
|
8072 |
+
#: includes/functions/wcj-functions.php:817
|
8073 |
msgid "Guest"
|
8074 |
msgstr ""
|
8075 |
|
8076 |
+
#: includes/functions/wcj-functions.php:1033
|
8077 |
msgctxt "Order status"
|
8078 |
msgid "Pending Payment"
|
8079 |
msgstr ""
|
8080 |
|
8081 |
+
#: includes/functions/wcj-functions.php:1035
|
8082 |
msgctxt "Order status"
|
8083 |
msgid "On Hold"
|
8084 |
msgstr ""
|
8123 |
msgid "Custom Documents"
|
8124 |
msgstr ""
|
8125 |
|
8126 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:63
|
8127 |
msgid "Enable Custom Payment"
|
8128 |
msgstr ""
|
8129 |
|
8130 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:70
|
8131 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:92
|
8132 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:84
|
8133 |
msgid "This controls the title which the user sees during checkout."
|
8134 |
msgstr ""
|
8135 |
|
8136 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:71
|
8137 |
msgid "Custom Payment"
|
8138 |
msgstr ""
|
8139 |
|
8140 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:78
|
8141 |
msgid "Payment method description that the customer will see on your checkout."
|
8142 |
msgstr ""
|
8143 |
|
8144 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:79
|
8145 |
msgid "You can add input fields with [wcj_input_field] shortcode."
|
8146 |
msgstr ""
|
8147 |
|
8148 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:80
|
8149 |
msgid "Custom Payment Description."
|
8150 |
msgstr ""
|
8151 |
|
8152 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:85
|
8153 |
msgid "Instructions"
|
8154 |
msgstr ""
|
8155 |
|
8156 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:87
|
8157 |
msgid "Instructions that will be added to the thank you page."
|
8158 |
msgstr ""
|
8159 |
|
8160 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:93
|
8161 |
msgid "Email Instructions"
|
8162 |
msgstr ""
|
8163 |
|
8164 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:95
|
8165 |
msgid "Instructions that will be added to the emails."
|
8166 |
msgstr ""
|
8167 |
|
8168 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:101
|
8169 |
msgid "Icon"
|
8170 |
msgstr ""
|
8171 |
|
8172 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:110
|
8173 |
msgid "Minimum order amount"
|
8174 |
msgstr ""
|
8175 |
|
8176 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:112
|
8177 |
msgid ""
|
8178 |
+
"If you want to set minimum order amount (excluding fees) to show this "
|
8179 |
+
"gateway on frontend, enter a number here. Set to 0 to disable."
|
8180 |
msgstr ""
|
8181 |
|
8182 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:119
|
8183 |
msgid "Enable for shipping methods"
|
8184 |
msgstr ""
|
8185 |
|
8186 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:124
|
8187 |
msgid ""
|
8188 |
"If gateway is only available for certain shipping methods, set it up here. "
|
8189 |
"Leave blank to enable for all methods."
|
8190 |
msgstr ""
|
8191 |
|
8192 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:127
|
8193 |
msgid "Select shipping methods"
|
8194 |
msgstr ""
|
8195 |
|
8196 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:131
|
8197 |
msgid "Enable for virtual orders"
|
8198 |
msgstr ""
|
8199 |
|
8200 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:132
|
8201 |
msgid "Enable gateway if the order is virtual"
|
8202 |
msgstr ""
|
8203 |
|
8204 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:146
|
8205 |
msgid "Send Additional Emails"
|
8206 |
msgstr ""
|
8207 |
|
8208 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:147
|
8209 |
msgid "Send to Admin"
|
8210 |
msgstr ""
|
8211 |
|
8212 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:155
|
8213 |
msgid "Send to Customer"
|
8214 |
msgstr ""
|
8215 |
|
8216 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:156
|
8217 |
msgid ""
|
8218 |
"This may help if you are using pending or custom default status and not "
|
8219 |
"getting new order emails."
|
8220 |
msgstr ""
|
8221 |
|
8222 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:162
|
8223 |
msgid "Custom Return URL (Thank You Page)"
|
8224 |
msgstr ""
|
8225 |
|
8226 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:163
|
8227 |
msgid "URL"
|
8228 |
msgstr ""
|
8229 |
|
8230 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:164
|
8231 |
msgid "Enter full URL with http(s)."
|
8232 |
msgstr ""
|
8233 |
|
8234 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:165
|
8235 |
msgid "Optional. Leave blank to use default URL."
|
8236 |
msgstr ""
|
8237 |
|
8238 |
+
#: includes/gateways/class-wc-gateway-wcj-custom.php:354
|
8239 |
msgid "Booster for WooCommerce: Custom Payment Gateway"
|
8240 |
msgstr ""
|
8241 |
|
8910 |
msgid "Reset Currency Rates"
|
8911 |
msgstr ""
|
8912 |
|
|
|
|
|
|
|
|
|
8913 |
#: includes/reports/wcj-class-reports-stock.php:30
|
8914 |
msgid "All Products on Stock"
|
8915 |
msgstr ""
|
9009 |
msgid "Report was generated in: "
|
9010 |
msgstr ""
|
9011 |
|
9012 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:52
|
9013 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:45
|
9014 |
msgid "Booster: Custom Shipping Method"
|
9015 |
msgstr ""
|
9016 |
|
9017 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:99
|
9018 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:91
|
|
|
|
|
|
|
9019 |
msgid "Cost calculation type."
|
9020 |
msgstr ""
|
9021 |
|
9022 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:103
|
9023 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:95
|
9024 |
msgid "Flat Rate"
|
9025 |
msgstr ""
|
9026 |
|
9027 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:104
|
9028 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:96
|
9029 |
msgid "By Total Cart Weight"
|
9030 |
msgstr ""
|
9031 |
|
9032 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:105
|
9033 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:97
|
9034 |
msgid "By Total Cart Weight Table"
|
9035 |
msgstr ""
|
9036 |
|
9037 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:106
|
9038 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:98
|
9039 |
msgid "By Total Cart Quantity"
|
9040 |
msgstr ""
|
9041 |
|
9042 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:110
|
9043 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:136
|
9044 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:102
|
9045 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:128
|
9046 |
msgid "Cost"
|
9047 |
msgstr ""
|
9048 |
|
9049 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:112
|
9050 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:104
|
9051 |
msgid ""
|
9052 |
"Cost. If calculating by weight - then cost per one weight unit. If "
|
9053 |
"calculating by quantity - then cost per one piece."
|
9054 |
msgstr ""
|
9055 |
|
9056 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:118
|
9057 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:110
|
9058 |
msgid "Weight Table Total Rows"
|
9059 |
msgstr ""
|
9060 |
|
9061 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:120
|
9062 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:112
|
9063 |
msgid "Press Save changes after you change this number."
|
9064 |
msgstr ""
|
9065 |
|
9066 |
+
#: includes/shipping/class-wc-shipping-wcj-custom-with-shipping-zones.php:129
|
9067 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:121
|
9068 |
msgid "Max Weight"
|
9069 |
msgstr ""
|
9070 |
|
9071 |
+
#: includes/shipping/class-wc-shipping-wcj-custom.php:78
|
9072 |
+
msgid "Enable Custom Shipping"
|
9073 |
+
msgstr ""
|
9074 |
+
|
9075 |
#: includes/shortcodes/class-wcj-input-field-shortcodes.php:52
|
9076 |
msgid "Attribute \"name\" is required!"
|
9077 |
msgstr ""
|
9078 |
|
9079 |
+
#: includes/shortcodes/class-wcj-orders-shortcodes.php:90
|
9080 |
msgid "Dollars"
|
9081 |
msgstr ""
|
9082 |
|
9083 |
+
#: includes/shortcodes/class-wcj-orders-shortcodes.php:91
|
9084 |
msgid "Cents"
|
9085 |
msgstr ""
|
9086 |
|
9116 |
msgid "Edit Product"
|
9117 |
msgstr ""
|
9118 |
|
9119 |
+
#: includes/shortcodes/class-wcj-products-shortcodes.php:190
|
9120 |
msgid "%s ago"
|
9121 |
msgstr ""
|
9122 |
|
9123 |
+
#: includes/shortcodes/class-wcj-products-shortcodes.php:206
|
9124 |
msgid "No sales yet."
|
9125 |
msgstr ""
|
9126 |
|
9242 |
"rating. Thank you, we couldn't have done it without you!"
|
9243 |
msgstr ""
|
9244 |
|
9245 |
+
#. #-#-#-#-# plugin.pot (Booster for WooCommerce 2.5.6) #-#-#-#-#
|
9246 |
#. Plugin Name of the plugin/theme
|
9247 |
#: woocommerce-jetpack.php:342
|
9248 |
msgid "Booster for WooCommerce"
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: algoritmika,anbinder
|
|
3 |
Tags: woocommerce,booster for woocommerce,woocommerce jetpack
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 4.6
|
6 |
-
Stable tag: 2.5.
|
7 |
License: GNU General Public License v3.0
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
@@ -22,6 +22,7 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
|
|
22 |
* *Currency Exchange Rates* - Automatic currency exchange rates for WooCommerce.
|
23 |
* *Currency for External Products* - Set different currency for external WooCommerce products.
|
24 |
* *Currency per Product* - Display prices for WooCommerce products in different currencies.
|
|
|
25 |
* *Multicurrency (Currency Switcher)* - Add multiple currencies (currency switcher) to WooCommerce.
|
26 |
* *Multicurrency Product Base Price* - Enter prices for WooCommerce products in different currencies.
|
27 |
* *Price Formats* - Set different WooCommerce price formats for different currencies.
|
@@ -64,7 +65,7 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
|
|
64 |
* *Checkout Custom Fields* - Add custom fields to WooCommerce checkout page.
|
65 |
* *Checkout Custom Info* - Add custom info to WooCommerce checkout page.
|
66 |
* *Checkout Files Upload* - Let customers upload files on (or after) WooCommerce checkout.
|
67 |
-
* *Empty Cart Button* - Add and customize "Empty Cart" button to cart page.
|
68 |
* *Mini Cart* - Customize WooCommerce mini cart widget.
|
69 |
|
70 |
**Payment Gateways**
|
@@ -82,8 +83,9 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
|
|
82 |
|
83 |
* *Address Formats* - Set address format in WooCommerce orders on per country basis. Force base country display.
|
84 |
* *Order Custom Statuses* - Custom statuses for WooCommerce orders.
|
|
|
85 |
* *Order Numbers* - WooCommerce sequential order numbering, custom order number prefix, suffix and number width.
|
86 |
-
* *Orders* -
|
87 |
* *Shipping* - Add multiple custom shipping methods to WooCommerce. Add descriptions and icons to shipping methods on frontend. Hide WooCommerce shipping when free is available. Display "left to free shipping" info.
|
88 |
* *Shipping Calculator* - Customize WooCommerce shipping calculator on cart page.
|
89 |
|
@@ -96,10 +98,11 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
|
|
96 |
* *Admin Tools* - Booster for WooCommerce debug and log tools.
|
97 |
* *Booster WPML* - Booster for WooCommerce basic WPML support.
|
98 |
* *EU VAT Number* - Collect and validate EU VAT numbers on WooCommerce checkout. Automatically disable VAT for valid numbers. Add all EU countries VAT standard rates to WooCommerce.
|
99 |
-
* *Export* - WooCommerce export tools.
|
100 |
* *Emails* - Add custom emails. Add another email recipient(s) to all WooCommerce emails.
|
|
|
101 |
* *General* - Separate custom CSS for front and back end. Shortcodes in Wordpress text widgets. Custom roles tool.
|
102 |
* *Old Slugs* - Remove old WooCommerce products slugs.
|
|
|
103 |
* *Reports* - WooCommerce stock, sales, customers etc. reports.
|
104 |
|
105 |
= Feedback =
|
@@ -108,13 +111,14 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
|
|
108 |
* For support visit the [contact page](http://booster.io/contact-us/).
|
109 |
|
110 |
= More =
|
111 |
-
* Visit the [Booster for WooCommerce plugin page](http://booster.io/)
|
|
|
112 |
|
113 |
== Installation ==
|
114 |
|
115 |
-
1. Upload the entire `woocommerce-jetpack` folder to the `/wp-content/plugins/` directory
|
116 |
-
2. Activate the plugin through the 'Plugins' menu in WordPress
|
117 |
-
3. Go to WooCommerce > Settings > Booster
|
118 |
|
119 |
== Frequently Asked Questions ==
|
120 |
|
@@ -122,12 +126,93 @@ Booster for WooCommerce is a WordPress plugin that supercharges your site with a
|
|
122 |
|
123 |
To unlock all Booster for WooCommerce features, please install additional [Booster for WooCommerce Plus](http://booster.io/plus/) plugin.
|
124 |
|
|
|
|
|
|
|
|
|
125 |
== Screenshots ==
|
126 |
|
127 |
1. Plugin admin area.
|
128 |
|
129 |
== Changelog ==
|
130 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
= 2.5.6 - 29/09/2016 =
|
132 |
* Dev - Functions - `wcj_get_product_input_fields()` - `unserialize()` added for serialized values.
|
133 |
* Dev - Shortcodes - General - `[wcj_wholesale_price_table]` - `hide_if_zero_quantity` and `table_format` attributes added.
|
@@ -291,7 +376,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
291 |
* Dev - EMAILS & MISC. - Reports - Monthly Sales - Major code refactoring. New data added.
|
292 |
* Tweak - Rating message added.
|
293 |
* Tweak - Module's documentation button on new line.
|
294 |
-
* Tweak -
|
295 |
* Tweak - PRODUCTS - Product Add to Cart - Module description updated.
|
296 |
* Tweak - PRODUCTS - Product by User - Module and admin settings descriptions updated.
|
297 |
* Tweak - PRODUCTS - Product Info - Moved to EMAILS & MISC. Renamed to "Product Info V1". "Product Info V2" renamed to "Product Info".
|
@@ -600,8 +685,8 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
600 |
* Fix - PRICES & CURRENCIES - Currency Exchange Rates - `no_changes` currency bug fixed.
|
601 |
* Fix - PRICES & CURRENCIES - Multicurrency and Currency Exchange Rates - Currency pairs added to Currency Exchange Rates module.
|
602 |
* Dev - BUTTON & PRICE LABELS - Custom Price Labels - WooCommerce Subscription products support added.
|
603 |
-
* Dev - PRODUCTS - Product Tabs - "CATEGORIES to HIDE this tab" and "CATEGORIES to SHOW this tab" options added, instead of
|
604 |
-
* Dev - PRODUCTS - Product Tabs - "PRODUCTS to HIDE this tab" and "PRODUCTS to SHOW this tab" options added, instead of
|
605 |
* Dev - PRODUCTS - Product Tabs - "TAGS to HIDE this tab" and "TAGS to SHOW this tab" options added.
|
606 |
* Dev - PRODUCTS - Product Tabs - "Reset settings" button added.
|
607 |
* Dev - PAYMENT GATEWAYS - Gateways by Country or State - "Include States (Base Country)" and "Exclude States (Base Country)" options added.
|
@@ -643,7 +728,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
643 |
* Dev - Functions - General - `wcj_is_module_enabled()` function added.
|
644 |
* Dev - Shortcodes - General - `[wcj_country_select_drop_down_list]` - manual sorting when `countries` attribute is used.
|
645 |
* Fix - Shortcodes - Orders - `[wcj_order_total_tax_percent]` fixed. `precision` attribute added.
|
646 |
-
* Fix - Shortcodes - Orders - `get_cart_discount()` (
|
647 |
* Fix - Shortcodes - Orders - `[wcj_order_total_in_words]` - decimal part rounding bug fixed.
|
648 |
* Dev - Shortcodes - Orders - `[wcj_order_total_in_words]` - `whole` and `decimal` attributes added.
|
649 |
* Dev - Shortcodes - Orders - `[wcj_order_items_table]` - `item_short_description` option added.
|
@@ -660,7 +745,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
660 |
* Dev - PRICES & CURRENCIES - Bulk Price Converter - Code refactoring.
|
661 |
* Dev - PRICES & CURRENCIES - Bulk Price Converter - Option to convert prices by *product category* added.
|
662 |
* Dev - PRODUCTS - Product Info - Code refactoring.
|
663 |
-
* Dev - PRODUCTS - Product Info V2 - Initial module release. Product Info marked as
|
664 |
* Dev - PRODUCTS - Product Input Fields - Code refactoring.
|
665 |
* Dev - PRODUCTS - Product Input Fields - Required field sign option added.
|
666 |
* Dev - PRODUCTS - Product Input Fields - "time format", "interval" options for Timepicker added.
|
@@ -704,7 +789,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
704 |
* Dev - PDF Invoicing - Display - Admin's "Orders" Page - "Column Title", "Create Button" and "Delete Button" options added.
|
705 |
* Dev - PDF Invoicing - Display - "Misc." menu renamed to "Display & Misc.".
|
706 |
* Dev - PDF Invoicing - Display - Customer's "My Account" Page - "Add link" and "Link text" options unlocked.
|
707 |
-
* Dev - PDF Invoices (v1) marked as "
|
708 |
* Fix - EMAILS & MISC. - General - Tabs on "Booster Tools" page fixed (caused other module's tools tabs disappear). Info on "Booster Tools Dashboard" page fixed.
|
709 |
* Dev - EMAILS & MISC. - EU VAT Number - "EU Countries VAT Rates" tool added.
|
710 |
* Dev - Donate link removed.
|
@@ -784,7 +869,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
784 |
= 2.3.0 - 01/10/2015 =
|
785 |
* Fix - `time` function calls replaced with `current_time` in: crowdfunding module and shortcode, invoicing, stock report.
|
786 |
* Dev - `WCJ_Module` code refactoring.
|
787 |
-
* Dev - Shortcodes - Orders - `[wcj_order_checkout_field]` shortcode modified. `[wcj_order_custom_meta_field]`
|
788 |
* Dev - PAYMENT GATEWAYS category added and modules renamed.
|
789 |
* Dev - PAYMENT GATEWAYS - Gateways Currency - Initial module release.
|
790 |
* Dev - PAYMENT GATEWAYS - Gateways Fees and Discounts - "Fee (or discount) type" option unlocked.
|
@@ -901,7 +986,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
901 |
* Dev - Tools (SKU and Admin) moved to each module's settings.
|
902 |
|
903 |
= 2.2.2 - 24/07/2015 =
|
904 |
-
* Fix - DASHBOARD - White screen on dashboard issue, fixed. `wcj_features_status` filter
|
905 |
* Fix - PRICES & CURRENCIES - Price by Country - Variable onsale old price bug fixed.
|
906 |
* Dev - PRICES & CURRENCIES - Wholesale Price Table Shortcode (`[wcj_product_wholesale_price_table]`) - Discount percent row added to the table.
|
907 |
* Dev - PRICES & CURRENCIES - Wholesale Price - "Show discount info on cart page" and "Discount info on cart page format" options added.
|
@@ -912,7 +997,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
912 |
* Dev - CART & CHECKOUT - Payment Gateways - Code refactoring, new modules created:
|
913 |
Custom Payment Gateways, Payment Gateways Icons, Payment Gateways Fees, Payment Gateways per Category.
|
914 |
Attaching PDF Invoice V1 to emails - code moved to PDF Invoice V1 module.
|
915 |
-
All settings (except
|
916 |
* Fix - SHIPPING & ORDERS - Orders - Step in min order amount changed.
|
917 |
* Fix - PDF Invoicing - Numbering - `[wcj_invoice_date]` in invoice number bug fixed.
|
918 |
* Fix - PDF Invoicing - In TCPDF lib, `symlink` call changed to calling with variable function name to prevent autodeleting tcpdf_fonts.php file from some servers bug.
|
@@ -996,7 +1081,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
996 |
* Dev - PDF Invoicing - Option for `item_variation` column added to `[wcj_order_items_table]` shortcode. Suggested by Brad.
|
997 |
* Dev - PDF Invoicing - Shop manager (not only admin) now is also allowed to see the invoices (`is_shop_manager` function). Also added to PDF Invoices (V1).
|
998 |
* Dev - PDF Invoicing - Extra check on `fopen`. Also added to PDF Invoices (V1).
|
999 |
-
* Dev - EMAILS & MISC. - PDF Invoices (V1) moved to "EMAILS & MISC." submenu and marked as "
|
1000 |
* Dev - EMAILS & MISC. - PDF Invoices (V1) - `get_item_total` replaced with `get_item_subtotal`.
|
1001 |
* Dev - EMAILS & MISC. - Reports - Customers by Country - Total spent by country added.
|
1002 |
* Dev - EMAILS & MISC. - WPML - New module added. Support for some options added to wpml-config.xml file.
|
@@ -1118,7 +1203,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
1118 |
Fields can be added globally (i.e. for all products), or on per product basis.
|
1119 |
Currently only fields of `text` type are available.
|
1120 |
* Dev - PRODUCTS - **Product Info** - Wordpress shortcodes added for every WooJetpack shortcode.
|
1121 |
-
WooJetpack shortcodes are now
|
1122 |
This covers Wordpress.org Support Forum thread by dudemcpek - https://wordpress.org/support/topic/not-displaying-shortcodes.
|
1123 |
* Dev - CART - **Add to Cart per Category** - Add to cart button text on *per category* basis (single or category view). Idea by Craig.
|
1124 |
* Dev - CART - **Add to Cart per Product** - Custom add to cart button text on *per product* basis (single or category view). Idea by Craig.
|
@@ -1167,7 +1252,7 @@ To unlock all Booster for WooCommerce features, please install additional [Boost
|
|
1167 |
Products with *empty price* only for archives (single view does not contain add to cart button at all, so nothing to cover).
|
1168 |
* Feature Upgraded - **Product Info** - Added `[wcjp_list_attribute]` shortcode.
|
1169 |
Now it is possible to display product's attribute values list (e.g. to list the different colour variations of a product). Idea by Tony.
|
1170 |
-
This is the right way to display product info, so WooJetpack shortcodes (introduced in v.1.8.2) are
|
1171 |
Shortcode has `visibility` parameter which gives the possibility to show shortcode's product info to admin only.
|
1172 |
* Feature Upgraded - **Product Info** - `%stock_quantity%` WooJetpack Shortcode added.
|
1173 |
* Dev - **Product Info** - `the_content` filter added to result. Now shortcodes will be displayed properly.
|
3 |
Tags: woocommerce,booster for woocommerce,woocommerce jetpack
|
4 |
Requires at least: 4.4
|
5 |
Tested up to: 4.6
|
6 |
+
Stable tag: 2.5.7
|
7 |
License: GNU General Public License v3.0
|
8 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
|
22 |
* *Currency Exchange Rates* - Automatic currency exchange rates for WooCommerce.
|
23 |
* *Currency for External Products* - Set different currency for external WooCommerce products.
|
24 |
* *Currency per Product* - Display prices for WooCommerce products in different currencies.
|
25 |
+
* *Global Discount* - Add global discount to all WooCommerce products.
|
26 |
* *Multicurrency (Currency Switcher)* - Add multiple currencies (currency switcher) to WooCommerce.
|
27 |
* *Multicurrency Product Base Price* - Enter prices for WooCommerce products in different currencies.
|
28 |
* *Price Formats* - Set different WooCommerce price formats for different currencies.
|
65 |
* *Checkout Custom Fields* - Add custom fields to WooCommerce checkout page.
|
66 |
* *Checkout Custom Info* - Add custom info to WooCommerce checkout page.
|
67 |
* *Checkout Files Upload* - Let customers upload files on (or after) WooCommerce checkout.
|
68 |
+
* *Empty Cart Button* - Add and customize "Empty Cart" button to WooCommerce cart page.
|
69 |
* *Mini Cart* - Customize WooCommerce mini cart widget.
|
70 |
|
71 |
**Payment Gateways**
|
83 |
|
84 |
* *Address Formats* - Set address format in WooCommerce orders on per country basis. Force base country display.
|
85 |
* *Order Custom Statuses* - Custom statuses for WooCommerce orders.
|
86 |
+
* *Order Minimum Amount* - Minimum WooCommerce order amount (optionally by user role).
|
87 |
* *Order Numbers* - WooCommerce sequential order numbering, custom order number prefix, suffix and number width.
|
88 |
+
* *Orders* - Orders auto-complete. Custom admin order list columns. Admin order currency. Admin order list multiple status filtering.
|
89 |
* *Shipping* - Add multiple custom shipping methods to WooCommerce. Add descriptions and icons to shipping methods on frontend. Hide WooCommerce shipping when free is available. Display "left to free shipping" info.
|
90 |
* *Shipping Calculator* - Customize WooCommerce shipping calculator on cart page.
|
91 |
|
98 |
* *Admin Tools* - Booster for WooCommerce debug and log tools.
|
99 |
* *Booster WPML* - Booster for WooCommerce basic WPML support.
|
100 |
* *EU VAT Number* - Collect and validate EU VAT numbers on WooCommerce checkout. Automatically disable VAT for valid numbers. Add all EU countries VAT standard rates to WooCommerce.
|
|
|
101 |
* *Emails* - Add custom emails. Add another email recipient(s) to all WooCommerce emails.
|
102 |
+
* *Export* - WooCommerce export tools.
|
103 |
* *General* - Separate custom CSS for front and back end. Shortcodes in Wordpress text widgets. Custom roles tool.
|
104 |
* *Old Slugs* - Remove old WooCommerce products slugs.
|
105 |
+
* *Products XML* - WooCommerce products XML feed.
|
106 |
* *Reports* - WooCommerce stock, sales, customers etc. reports.
|
107 |
|
108 |
= Feedback =
|
111 |
* For support visit the [contact page](http://booster.io/contact-us/).
|
112 |
|
113 |
= More =
|
114 |
+
* Visit the [Booster for WooCommerce plugin page](http://booster.io/).
|
115 |
+
* [Compare free and Plus version](http://booster.io/booster-woocommerce-free-vs-plus/).
|
116 |
|
117 |
== Installation ==
|
118 |
|
119 |
+
1. Upload the entire `woocommerce-jetpack` folder to the `/wp-content/plugins/` directory.
|
120 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress.
|
121 |
+
3. Go to WooCommerce > Settings > Booster.
|
122 |
|
123 |
== Frequently Asked Questions ==
|
124 |
|
126 |
|
127 |
To unlock all Booster for WooCommerce features, please install additional [Booster for WooCommerce Plus](http://booster.io/plus/) plugin.
|
128 |
|
129 |
+
= What features are in free and what are in Plus version? =
|
130 |
+
|
131 |
+
You can see the differences between version in this [table](http://booster.io/booster-woocommerce-free-vs-plus/).
|
132 |
+
|
133 |
== Screenshots ==
|
134 |
|
135 |
1. Plugin admin area.
|
136 |
|
137 |
== Changelog ==
|
138 |
|
139 |
+
= 2.5.7 - 27/11/2016 =
|
140 |
+
* Fix - `load_plugin_textdomain` moved from `init` hook to constructor (fixes the issue with module titles, descriptions not translating).
|
141 |
+
* Fix - `class-wcj-currency-reports.php` - `filter_reports` is now applied on `wc-reports` page only.
|
142 |
+
* Dev - `unclean_custom_textarea()` added.
|
143 |
+
* Dev - Made "Booster Tools" accessible to shop manager.
|
144 |
+
* Dev - Shortcodes - `find` and `replace` attributes added to all shortcodes.
|
145 |
+
* Dev - Shortcodes - General - `[wcj_wholesale_price_table]` - `%level_max_qty%` replace value added to `heading_format` attribute. `%level_qty%` marked as deprecated (`%level_min_qty%` should be used instead).
|
146 |
+
* Dev - Shortcodes - Orders - `[wcj_order_items_total_weight]` replaced with `[wcj_order_total_weight]`.
|
147 |
+
* Dev - Shortcodes - Orders - `[wcj_order_total_width]`, `[wcj_order_total_height]` and `[wcj_order_total_length]` shortcodes added.
|
148 |
+
* Dev - Shortcodes - Orders - `[wcj_order_items]` shortcode added.
|
149 |
+
* Dev - Shortcodes - Orders - `[wcj_order_items_table]` - `item_image_width` and `item_image_height` replaced with `product_image_width` and `product_image_height`.
|
150 |
+
* Dev - Shortcodes - Orders - `[wcj_order_items_table]` - `columns` - Added to all appropriate `item_` columns: `product_name`, `product_attribute`, `product_excerpt`, `product_short_description`, `product_variation`, `product_thumbnail`, `product_sku`, `product_weight`.
|
151 |
+
* Dev - Shortcodes - Orders - `[wcj_order_items_table]` - `columns` - `product_length`, `product_width` and `product_height` columns added.
|
152 |
+
* Dev - Shortcodes - Orders - `[wcj_order_items_table]` - `item_short_description` - now displays item's short description (may be different from `item_excerpt`). `item_description` attribute removed.
|
153 |
+
* Dev - Shortcodes - Orders - `[wcj_order_items_table]` - `columns` - `product_regular_price` and `product_sale_price` columns added.
|
154 |
+
* Dev - Shortcodes - Orders - `[wcj_order_items_table]` - `columns` - `item_tax_class` column added.
|
155 |
+
* Dev - Shortcodes - Products - `[wcj_product_price_excluding_tax]` and `[wcj_product_price_including_tax]` - `multiply_by` attribute added. And both functions code refactored.
|
156 |
+
* Fix - Shortcodes - Products - `[wcj_product_excerpt]` - Manually checking for short description first (so `length` can be applied).
|
157 |
+
* Dev - Shortcodes - Products - `[wcj_product_excerpt]` - `excerpt_length` attribute deprecated (replaced with `length`).
|
158 |
+
* Dev - Shortcodes - Products - `[wcj_product_short_description]` shortcode added.
|
159 |
+
* Dev - Shortcodes - Products - `[wcj_product_url]` shortcode added.
|
160 |
+
* Dev - Shortcodes - Products - `[wcj_product_image_url]` shortcode added.
|
161 |
+
* Dev - Shortcodes - Products - `[wcj_product_categories_names]` shortcode added.
|
162 |
+
* Dev - Shortcodes - Products - `[wcj_product_categories_urls]` shortcode added.
|
163 |
+
* Dev - Shortcodes - Products - `[wcj_product_meta]` shortcode added.
|
164 |
+
* Dev - Shortcodes - Products - `[wcj_product_wholesale_price_table]` - `%level_max_qty%` replace value added to `heading_format` attribute. `%level_qty%` marked as deprecated (`%level_min_qty%` should be used instead).
|
165 |
+
* Dev - PRICES & CURRENCIES - Global Discount - Initial module release.
|
166 |
+
* Dev - PRICES & CURRENCIES - Multicurrency (Currency Switcher) - Compatibility - "WooCommerce TM Extra Product Options" plugin.
|
167 |
+
* Dev - PRICES & CURRENCIES - Price by User Role - "Search Engine Bots" option added.
|
168 |
+
* Dev - PRICES & CURRENCIES - Wholesale Price - Global settings discount now can be negative.
|
169 |
+
* Dev - PRICES & CURRENCIES - Wholesale Price - Per product - "Price directly" option added (for non variable products only).
|
170 |
+
* Dev - BUTTON & PRICE LABELS - Call for Price - "Make All Products Call for Price" option added.
|
171 |
+
* Fix - PRODUCTS - User Products - "My Account > Products" fixed.
|
172 |
+
* Fix - PAYMENT GATEWAYS - Custom Gateways - Enable for shipping methods - Empty method title bug fixed.
|
173 |
+
* Fix - SHIPPING & ORDERS - Order Custom Statuses - Custom Statuses tool - Empty array passed on apply `wc_order_statuses` filter (produced PHP warning).
|
174 |
+
* Dev - SHIPPING & ORDERS - Order Minimum Amount - Initial module release (moved from Orders module).
|
175 |
+
* Dev - SHIPPING & ORDERS - Orders - "Admin Orders List Columns Order" section added. Priorities in all Booster's added `manage_edit-shop_order_columns` filters changed.
|
176 |
+
* Dev - SHIPPING & ORDERS - Orders - "Admin Orders List Multiple Status" section added.
|
177 |
+
* Dev - SHIPPING & ORDERS - Shipping - Custom Shipping with Zones - "Min Weight" and "Max Weight" options added.
|
178 |
+
* Dev - SHIPPING & ORDERS - Shipping Calculator - "Labels" settings section added.
|
179 |
+
* Dev - PDF INVOICING & PACKING SLIPS - "Generate" and "Download" bulk actions added to admin orders list.
|
180 |
+
* Dev - PDF INVOICING & PACKING SLIPS - Invoices Report tool - `get_invoices_report_data()` - `WP_Query` optimized to return `ids` only.
|
181 |
+
* Dev - PDF INVOICING & PACKING SLIPS - Invoices Report tool - "Download monthly documents CSV" added.
|
182 |
+
* Dev - EMAILS & MISC. - Admin Tools - "System Info" table added.
|
183 |
+
* Dev - EMAILS & MISC. - Admin Tools - "PHP Memory Limit" option added.
|
184 |
+
* Fix - EMAILS & MISC. - EU VAT Number - Preserve VAT in Base Country - `EL` replaced with `GR` for Greece when checking location.
|
185 |
+
* Dev - EMAILS & MISC. - EU VAT Number - Validate VAT without SOAP fallback added (`validate_vat_no_soap` function).
|
186 |
+
* Dev - EMAILS & MISC. - Export - "UTF-8 BOM" option added.
|
187 |
+
* Fix - EMAILS & MISC. - Export - Export Orders - "Order Date" column fixed.
|
188 |
+
* Dev - EMAILS & MISC. - Export - Export Orders - "Order Time" column added.
|
189 |
+
* Dev - EMAILS & MISC. - Export - Export Products - Stock - `get_stock_quantity()` replaced with `get_total_stock()`. Separate "Stock Quantity" export field added.
|
190 |
+
* Dev - EMAILS & MISC. - Export - Export Products - Variable and grouped products price, regular price, sale price, stock quantity and total stock for each variation added.
|
191 |
+
* Dev - EMAILS & MISC. - Export - Export Products - "Additional Export Products Fields" section added.
|
192 |
+
* Dev - EMAILS & MISC. - Export - Export Products - "Export Products Fields" option added.
|
193 |
+
* Dev - EMAILS & MISC. - Export - Export Products - "Image URL", "Short Description", "Description", "Status", "URL", "Shipping Class", "Shipping Class Id", "Width", "Length", "Height", "Weight", "Downloadable", "Virtual", "Sold Individually", "Tax Status", "Tax Class", "Manage Stock", "Stock Status", "Backorders", "Featured" and "Visibility" export fields added.
|
194 |
+
* Dev - EMAILS & MISC. - Export - Export Products - `WP_Query` optimized to return `ids` only.
|
195 |
+
* Dev - EMAILS & MISC. - General - "Session Expiration Options" section added.
|
196 |
+
* Dev - EMAILS & MISC. - Products XML - Initial module release.
|
197 |
+
* Dev - EMAILS & MISC. - Reports - Booster: Product Sales - Variations added in report.
|
198 |
+
* Tweak - Deprecated typo fixed.
|
199 |
+
* Tweak - `WCJ_Module` - `create_meta_box()` - `wcj_get_meta_box_options_type_price_step` filter added.
|
200 |
+
* Tweak - `wcj_get_table_html()` - "row_styles" parameter added.
|
201 |
+
* Tweak - Language (POT) file updated.
|
202 |
+
* Tweak - Shortcodes - Products - `[wcj_product_excerpt]` - Using `product_excerpt_length` object property instead of global variable.
|
203 |
+
* Tweak - Shortcodes - Products - `[wcj_product_wholesale_price_table]` - `wcj_product_wholesale_price_table_price_before` and `wcj_product_wholesale_price_table_price_after` filters added.
|
204 |
+
* Tweak - PRICES & CURRENCIES - Price by User Role - `change_price_by_role()` - `wcj_price_by_user_role_get_price` filter added.
|
205 |
+
* Tweak - PRICES & CURRENCIES - Wholesale Price - `get_wholesale_price()` - `price_directly` - `wcj_get_wholesale_price` filter added.
|
206 |
+
* Tweak - CART & CHECKOUT - Empty Cart Button - Description updated.
|
207 |
+
* Tweak - SHIPPING & ORDERS - Order Custom Statuses - Custom Statuses tool - User messages updated.
|
208 |
+
* Tweak - SHIPPING & ORDERS - Order Custom Statuses - Custom Statuses tool - "Add new custom status" button label added to translation.
|
209 |
+
* Tweak - SHIPPING & ORDERS - Shipping - Custom Shipping - "Weight Table Total Rows" option description updated.
|
210 |
+
* Tweak - PDF INVOICING & PACKING SLIPS - Invoices Report tool - `get_invoices_report_zip()` - Headers cleaned up.
|
211 |
+
* Tweak - PDF INVOICING & PACKING SLIPS - Invoices Report tool - Calling `get_tool_header_html()` instead of directly outputting header.
|
212 |
+
* Tweak - EMAILS & MISC. - Export - Tool header added to all export tools.
|
213 |
+
* Tweak - EMAILS & MISC. - Export - Headers cleaned up.
|
214 |
+
* Tweak - EMAILS & MISC. - Reports - Button restyled in admin settings.
|
215 |
+
|
216 |
= 2.5.6 - 29/09/2016 =
|
217 |
* Dev - Functions - `wcj_get_product_input_fields()` - `unserialize()` added for serialized values.
|
218 |
* Dev - Shortcodes - General - `[wcj_wholesale_price_table]` - `hide_if_zero_quantity` and `table_format` attributes added.
|
376 |
* Dev - EMAILS & MISC. - Reports - Monthly Sales - Major code refactoring. New data added.
|
377 |
* Tweak - Rating message added.
|
378 |
* Tweak - Module's documentation button on new line.
|
379 |
+
* Tweak - Deprecated module message updated.
|
380 |
* Tweak - PRODUCTS - Product Add to Cart - Module description updated.
|
381 |
* Tweak - PRODUCTS - Product by User - Module and admin settings descriptions updated.
|
382 |
* Tweak - PRODUCTS - Product Info - Moved to EMAILS & MISC. Renamed to "Product Info V1". "Product Info V2" renamed to "Product Info".
|
685 |
* Fix - PRICES & CURRENCIES - Currency Exchange Rates - `no_changes` currency bug fixed.
|
686 |
* Fix - PRICES & CURRENCIES - Multicurrency and Currency Exchange Rates - Currency pairs added to Currency Exchange Rates module.
|
687 |
* Dev - BUTTON & PRICE LABELS - Custom Price Labels - WooCommerce Subscription products support added.
|
688 |
+
* Dev - PRODUCTS - Product Tabs - "CATEGORIES to HIDE this tab" and "CATEGORIES to SHOW this tab" options added, instead of deprecated "Comma separated CATEGORY IDs..." options.
|
689 |
+
* Dev - PRODUCTS - Product Tabs - "PRODUCTS to HIDE this tab" and "PRODUCTS to SHOW this tab" options added, instead of deprecated "Comma separated PRODUCT IDs..." options.
|
690 |
* Dev - PRODUCTS - Product Tabs - "TAGS to HIDE this tab" and "TAGS to SHOW this tab" options added.
|
691 |
* Dev - PRODUCTS - Product Tabs - "Reset settings" button added.
|
692 |
* Dev - PAYMENT GATEWAYS - Gateways by Country or State - "Include States (Base Country)" and "Exclude States (Base Country)" options added.
|
728 |
* Dev - Functions - General - `wcj_is_module_enabled()` function added.
|
729 |
* Dev - Shortcodes - General - `[wcj_country_select_drop_down_list]` - manual sorting when `countries` attribute is used.
|
730 |
* Fix - Shortcodes - Orders - `[wcj_order_total_tax_percent]` fixed. `precision` attribute added.
|
731 |
+
* Fix - Shortcodes - Orders - `get_cart_discount()` (deprecated since WooCommerce 2.3) removed from `[wcj_order_items_table]` shortcode (affected if `discount_as_item` option was used); removed from `[wcj_order_total_discount]` shortcode; `[wcj_order_cart_discount]` shortcode removed.
|
732 |
* Fix - Shortcodes - Orders - `[wcj_order_total_in_words]` - decimal part rounding bug fixed.
|
733 |
* Dev - Shortcodes - Orders - `[wcj_order_total_in_words]` - `whole` and `decimal` attributes added.
|
734 |
* Dev - Shortcodes - Orders - `[wcj_order_items_table]` - `item_short_description` option added.
|
745 |
* Dev - PRICES & CURRENCIES - Bulk Price Converter - Code refactoring.
|
746 |
* Dev - PRICES & CURRENCIES - Bulk Price Converter - Option to convert prices by *product category* added.
|
747 |
* Dev - PRODUCTS - Product Info - Code refactoring.
|
748 |
+
* Dev - PRODUCTS - Product Info V2 - Initial module release. Product Info marked as deprecated.
|
749 |
* Dev - PRODUCTS - Product Input Fields - Code refactoring.
|
750 |
* Dev - PRODUCTS - Product Input Fields - Required field sign option added.
|
751 |
* Dev - PRODUCTS - Product Input Fields - "time format", "interval" options for Timepicker added.
|
789 |
* Dev - PDF Invoicing - Display - Admin's "Orders" Page - "Column Title", "Create Button" and "Delete Button" options added.
|
790 |
* Dev - PDF Invoicing - Display - "Misc." menu renamed to "Display & Misc.".
|
791 |
* Dev - PDF Invoicing - Display - Customer's "My Account" Page - "Add link" and "Link text" options unlocked.
|
792 |
+
* Dev - PDF Invoices (v1) marked as "Deprecated".
|
793 |
* Fix - EMAILS & MISC. - General - Tabs on "Booster Tools" page fixed (caused other module's tools tabs disappear). Info on "Booster Tools Dashboard" page fixed.
|
794 |
* Dev - EMAILS & MISC. - EU VAT Number - "EU Countries VAT Rates" tool added.
|
795 |
* Dev - Donate link removed.
|
869 |
= 2.3.0 - 01/10/2015 =
|
870 |
* Fix - `time` function calls replaced with `current_time` in: crowdfunding module and shortcode, invoicing, stock report.
|
871 |
* Dev - `WCJ_Module` code refactoring.
|
872 |
+
* Dev - Shortcodes - Orders - `[wcj_order_checkout_field]` shortcode modified. `[wcj_order_custom_meta_field]` deprecated (now duplicates `[wcj_order_checkout_field]`).
|
873 |
* Dev - PAYMENT GATEWAYS category added and modules renamed.
|
874 |
* Dev - PAYMENT GATEWAYS - Gateways Currency - Initial module release.
|
875 |
* Dev - PAYMENT GATEWAYS - Gateways Fees and Discounts - "Fee (or discount) type" option unlocked.
|
986 |
* Dev - Tools (SKU and Admin) moved to each module's settings.
|
987 |
|
988 |
= 2.2.2 - 24/07/2015 =
|
989 |
+
* Fix - DASHBOARD - White screen on dashboard issue, fixed. `wcj_features_status` filter deprecated.
|
990 |
* Fix - PRICES & CURRENCIES - Price by Country - Variable onsale old price bug fixed.
|
991 |
* Dev - PRICES & CURRENCIES - Wholesale Price Table Shortcode (`[wcj_product_wholesale_price_table]`) - Discount percent row added to the table.
|
992 |
* Dev - PRICES & CURRENCIES - Wholesale Price - "Show discount info on cart page" and "Discount info on cart page format" options added.
|
997 |
* Dev - CART & CHECKOUT - Payment Gateways - Code refactoring, new modules created:
|
998 |
Custom Payment Gateways, Payment Gateways Icons, Payment Gateways Fees, Payment Gateways per Category.
|
999 |
Attaching PDF Invoice V1 to emails - code moved to PDF Invoice V1 module.
|
1000 |
+
All settings (except deprecated "attaching PDF Invoice V1") moved from WooCommerce Checkout settings to module's settings.
|
1001 |
* Fix - SHIPPING & ORDERS - Orders - Step in min order amount changed.
|
1002 |
* Fix - PDF Invoicing - Numbering - `[wcj_invoice_date]` in invoice number bug fixed.
|
1003 |
* Fix - PDF Invoicing - In TCPDF lib, `symlink` call changed to calling with variable function name to prevent autodeleting tcpdf_fonts.php file from some servers bug.
|
1081 |
* Dev - PDF Invoicing - Option for `item_variation` column added to `[wcj_order_items_table]` shortcode. Suggested by Brad.
|
1082 |
* Dev - PDF Invoicing - Shop manager (not only admin) now is also allowed to see the invoices (`is_shop_manager` function). Also added to PDF Invoices (V1).
|
1083 |
* Dev - PDF Invoicing - Extra check on `fopen`. Also added to PDF Invoices (V1).
|
1084 |
+
* Dev - EMAILS & MISC. - PDF Invoices (V1) moved to "EMAILS & MISC." submenu and marked as "deprecated".
|
1085 |
* Dev - EMAILS & MISC. - PDF Invoices (V1) - `get_item_total` replaced with `get_item_subtotal`.
|
1086 |
* Dev - EMAILS & MISC. - Reports - Customers by Country - Total spent by country added.
|
1087 |
* Dev - EMAILS & MISC. - WPML - New module added. Support for some options added to wpml-config.xml file.
|
1203 |
Fields can be added globally (i.e. for all products), or on per product basis.
|
1204 |
Currently only fields of `text` type are available.
|
1205 |
* Dev - PRODUCTS - **Product Info** - Wordpress shortcodes added for every WooJetpack shortcode.
|
1206 |
+
WooJetpack shortcodes are now deprecated and will be removed in future releases. See v.1.9.0 changelog for more details.
|
1207 |
This covers Wordpress.org Support Forum thread by dudemcpek - https://wordpress.org/support/topic/not-displaying-shortcodes.
|
1208 |
* Dev - CART - **Add to Cart per Category** - Add to cart button text on *per category* basis (single or category view). Idea by Craig.
|
1209 |
* Dev - CART - **Add to Cart per Product** - Custom add to cart button text on *per product* basis (single or category view). Idea by Craig.
|
1252 |
Products with *empty price* only for archives (single view does not contain add to cart button at all, so nothing to cover).
|
1253 |
* Feature Upgraded - **Product Info** - Added `[wcjp_list_attribute]` shortcode.
|
1254 |
Now it is possible to display product's attribute values list (e.g. to list the different colour variations of a product). Idea by Tony.
|
1255 |
+
This is the right way to display product info, so WooJetpack shortcodes (introduced in v.1.8.2) are deprecated and will be removed in feature releases.
|
1256 |
Shortcode has `visibility` parameter which gives the possibility to show shortcode's product info to admin only.
|
1257 |
* Feature Upgraded - **Product Info** - `%stock_quantity%` WooJetpack Shortcode added.
|
1258 |
* Dev - **Product Info** - `the_content` filter added to result. Now shortcodes will be displayed properly.
|
woocommerce-jetpack.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Booster for WooCommerce
|
4 |
Plugin URI: http://booster.io
|
5 |
Description: Supercharge your WooCommerce site with these awesome powerful features.
|
6 |
-
Version: 2.5.
|
7 |
Author: Algoritmika Ltd
|
8 |
Author URI: http://www.algoritmika.com
|
9 |
Text Domain: woocommerce-jetpack
|
@@ -28,7 +28,7 @@ if ( ! class_exists( 'WC_Jetpack' ) ) :
|
|
28 |
* Main WC_Jetpack Class
|
29 |
*
|
30 |
* @class WC_Jetpack
|
31 |
-
* @version 2.5.
|
32 |
*/
|
33 |
|
34 |
final class WC_Jetpack {
|
@@ -39,7 +39,7 @@ final class WC_Jetpack {
|
|
39 |
* @var string
|
40 |
* @since 2.4.7
|
41 |
*/
|
42 |
-
public $version = '2.5.
|
43 |
|
44 |
/**
|
45 |
* @var WC_Jetpack The single instance of the class
|
@@ -78,17 +78,25 @@ final class WC_Jetpack {
|
|
78 |
/**
|
79 |
* WC_Jetpack Constructor.
|
80 |
*
|
81 |
-
* @version 2.5.
|
82 |
-
* @access
|
83 |
*/
|
84 |
public function __construct() {
|
85 |
|
|
|
|
|
|
|
86 |
// require_once( WP_PLUGIN_DIR . '/woocommerce/woocommerce.php' );
|
87 |
|
88 |
// Include required files
|
89 |
$this->includes();
|
90 |
|
91 |
-
|
|
|
|
|
|
|
|
|
|
|
92 |
// add_action( 'admin_init', array( $this, 'install' ) );
|
93 |
add_action( 'init', array( $this, 'init' ), 0 );
|
94 |
|
@@ -132,6 +140,41 @@ final class WC_Jetpack {
|
|
132 |
do_action( 'wcj_loaded' );
|
133 |
}
|
134 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
/**
|
136 |
* enqueue_wcj_backend_scripts.
|
137 |
*
|
@@ -481,7 +524,7 @@ final class WC_Jetpack {
|
|
481 |
/**
|
482 |
* Include modules and submodules
|
483 |
*
|
484 |
-
* @version 2.5.
|
485 |
*/
|
486 |
function include_modules() {
|
487 |
$modules_files = array(
|
@@ -504,6 +547,7 @@ final class WC_Jetpack {
|
|
504 |
'includes/class-wcj-wholesale-price.php',
|
505 |
'includes/class-wcj-product-open-pricing.php',
|
506 |
'includes/class-wcj-price-by-user-role.php',
|
|
|
507 |
'includes/class-wcj-product-price-by-formula.php',
|
508 |
'includes/class-wcj-product-images.php',
|
509 |
'includes/class-wcj-product-by-country.php',
|
@@ -530,6 +574,7 @@ final class WC_Jetpack {
|
|
530 |
'includes/class-wcj-shipping-calculator.php',
|
531 |
'includes/class-wcj-address-formats.php',
|
532 |
'includes/class-wcj-orders.php',
|
|
|
533 |
'includes/class-wcj-order-numbers.php',
|
534 |
'includes/class-wcj-order-custom-statuses.php',
|
535 |
// 'includes/class-wcj-pdf-invoices.php',
|
@@ -544,6 +589,7 @@ final class WC_Jetpack {
|
|
544 |
'includes/class-wcj-currency-exchange-rates.php',
|
545 |
'includes/class-wcj-price-formats.php',
|
546 |
'includes/class-wcj-general.php',
|
|
|
547 |
'includes/class-wcj-export-import.php',
|
548 |
// 'includes/class-wcj-shortcodes-module.php',
|
549 |
'includes/class-wcj-eu-vat-number.php',
|
@@ -738,12 +784,13 @@ final class WC_Jetpack {
|
|
738 |
|
739 |
/**
|
740 |
* Init WC_Jetpack when WordPress initialises.
|
|
|
|
|
741 |
*/
|
742 |
public function init() {
|
743 |
// Before init action
|
744 |
do_action( 'before_wcj_init' );
|
745 |
-
|
746 |
-
load_plugin_textdomain( 'woocommerce-jetpack', false, dirname( plugin_basename( __FILE__ ) ) . '/langs/' );
|
747 |
// Init action
|
748 |
do_action( 'wcj_init' );
|
749 |
}
|
@@ -772,10 +819,25 @@ endif;
|
|
772 |
/**
|
773 |
* Returns the main instance of WC_Jetpack to prevent the need to use globals.
|
774 |
*
|
775 |
-
* @
|
|
|
776 |
*/
|
777 |
-
|
778 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
779 |
}
|
780 |
|
781 |
WCJ();
|
3 |
Plugin Name: Booster for WooCommerce
|
4 |
Plugin URI: http://booster.io
|
5 |
Description: Supercharge your WooCommerce site with these awesome powerful features.
|
6 |
+
Version: 2.5.7
|
7 |
Author: Algoritmika Ltd
|
8 |
Author URI: http://www.algoritmika.com
|
9 |
Text Domain: woocommerce-jetpack
|
28 |
* Main WC_Jetpack Class
|
29 |
*
|
30 |
* @class WC_Jetpack
|
31 |
+
* @version 2.5.7
|
32 |
*/
|
33 |
|
34 |
final class WC_Jetpack {
|
39 |
* @var string
|
40 |
* @since 2.4.7
|
41 |
*/
|
42 |
+
public $version = '2.5.7';
|
43 |
|
44 |
/**
|
45 |
* @var WC_Jetpack The single instance of the class
|
78 |
/**
|
79 |
* WC_Jetpack Constructor.
|
80 |
*
|
81 |
+
* @version 2.5.7
|
82 |
+
* @access public
|
83 |
*/
|
84 |
public function __construct() {
|
85 |
|
86 |
+
// Set up localisation
|
87 |
+
load_plugin_textdomain( 'woocommerce-jetpack', false, dirname( plugin_basename( __FILE__ ) ) . '/langs/' );
|
88 |
+
|
89 |
// require_once( WP_PLUGIN_DIR . '/woocommerce/woocommerce.php' );
|
90 |
|
91 |
// Include required files
|
92 |
$this->includes();
|
93 |
|
94 |
+
register_activation_hook( __FILE__, array( $this, 'add_my_products_endpoint_flush_rewrite_rules' ) );
|
95 |
+
register_deactivation_hook( __FILE__, array( $this, 'add_my_products_endpoint_flush_rewrite_rules' ) );
|
96 |
+
add_filter( 'query_vars', array( $this, 'add_my_products_endpoint_query_var' ), 0 );
|
97 |
+
add_action( 'init', array( $this, 'add_my_products_endpoint' ) );
|
98 |
+
|
99 |
+
// register_activation_hook( __FILE__, array( $this, 'install' ) );
|
100 |
// add_action( 'admin_init', array( $this, 'install' ) );
|
101 |
add_action( 'init', array( $this, 'init' ), 0 );
|
102 |
|
140 |
do_action( 'wcj_loaded' );
|
141 |
}
|
142 |
|
143 |
+
/**
|
144 |
+
* Flush rewrite rules on plugin activation.
|
145 |
+
*
|
146 |
+
* @version 2.5.7
|
147 |
+
* @since 2.5.7
|
148 |
+
*/
|
149 |
+
function add_my_products_endpoint_flush_rewrite_rules() {
|
150 |
+
add_rewrite_endpoint( 'wcj-my-products', EP_ROOT | EP_PAGES );
|
151 |
+
flush_rewrite_rules();
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* Add new query var.
|
156 |
+
*
|
157 |
+
* @version 2.5.7
|
158 |
+
* @since 2.5.7
|
159 |
+
* @param array $vars
|
160 |
+
* @return array
|
161 |
+
*/
|
162 |
+
function add_my_products_endpoint_query_var( $vars ) {
|
163 |
+
$vars[] = 'wcj-my-products';
|
164 |
+
return $vars;
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* Register new endpoint to use inside My Account page.
|
169 |
+
*
|
170 |
+
* @version 2.5.7
|
171 |
+
* @since 2.5.7
|
172 |
+
* @see https://developer.wordpress.org/reference/functions/add_rewrite_endpoint/
|
173 |
+
*/
|
174 |
+
function add_my_products_endpoint() {
|
175 |
+
add_rewrite_endpoint( 'wcj-my-products', EP_ROOT | EP_PAGES );
|
176 |
+
}
|
177 |
+
|
178 |
/**
|
179 |
* enqueue_wcj_backend_scripts.
|
180 |
*
|
524 |
/**
|
525 |
* Include modules and submodules
|
526 |
*
|
527 |
+
* @version 2.5.7
|
528 |
*/
|
529 |
function include_modules() {
|
530 |
$modules_files = array(
|
547 |
'includes/class-wcj-wholesale-price.php',
|
548 |
'includes/class-wcj-product-open-pricing.php',
|
549 |
'includes/class-wcj-price-by-user-role.php',
|
550 |
+
'includes/class-wcj-global-discount.php',
|
551 |
'includes/class-wcj-product-price-by-formula.php',
|
552 |
'includes/class-wcj-product-images.php',
|
553 |
'includes/class-wcj-product-by-country.php',
|
574 |
'includes/class-wcj-shipping-calculator.php',
|
575 |
'includes/class-wcj-address-formats.php',
|
576 |
'includes/class-wcj-orders.php',
|
577 |
+
'includes/class-wcj-order-min-amount.php',
|
578 |
'includes/class-wcj-order-numbers.php',
|
579 |
'includes/class-wcj-order-custom-statuses.php',
|
580 |
// 'includes/class-wcj-pdf-invoices.php',
|
589 |
'includes/class-wcj-currency-exchange-rates.php',
|
590 |
'includes/class-wcj-price-formats.php',
|
591 |
'includes/class-wcj-general.php',
|
592 |
+
'includes/class-wcj-products-xml.php',
|
593 |
'includes/class-wcj-export-import.php',
|
594 |
// 'includes/class-wcj-shortcodes-module.php',
|
595 |
'includes/class-wcj-eu-vat-number.php',
|
784 |
|
785 |
/**
|
786 |
* Init WC_Jetpack when WordPress initialises.
|
787 |
+
*
|
788 |
+
* @version 2.5.7
|
789 |
*/
|
790 |
public function init() {
|
791 |
// Before init action
|
792 |
do_action( 'before_wcj_init' );
|
793 |
+
|
|
|
794 |
// Init action
|
795 |
do_action( 'wcj_init' );
|
796 |
}
|
819 |
/**
|
820 |
* Returns the main instance of WC_Jetpack to prevent the need to use globals.
|
821 |
*
|
822 |
+
* @version 2.5.7
|
823 |
+
* @return WC_Jetpack
|
824 |
*/
|
825 |
+
if ( ! function_exists( 'WCJ' ) ) {
|
826 |
+
function WCJ() {
|
827 |
+
return WC_Jetpack::instance();
|
828 |
+
}
|
829 |
+
}
|
830 |
+
|
831 |
+
/**
|
832 |
+
* Get the plugin file.
|
833 |
+
*
|
834 |
+
* @version 2.5.7
|
835 |
+
* @since 2.5.7
|
836 |
+
*/
|
837 |
+
if ( ! function_exists( 'wcj_plugin_file' ) ) {
|
838 |
+
function wcj_plugin_file() {
|
839 |
+
return __FILE__;
|
840 |
+
}
|
841 |
}
|
842 |
|
843 |
WCJ();
|