| 开发者 |
anbinder
karzin pluggabl ronyp gravid7 |
|---|---|
| 更新时间 | 2025年10月25日 21:36 |
| 捐献地址: | 去捐款 |
| PHP版本: | 7.2 及以上 |
| WordPress版本: | 6.8.3 |
| 版权: | GNU General Public License v3.0 |
| 版权网址: | 版权信息 |
The easiest way to install Booster is via your site’s Dashboard. Please follow these instructions:
The free version offers a powerful set of core tools to enhance your WooCommerce store. Booster Elite unlocks all 110+ modules, providing advanced customization, powerful sales-driving features (like full Abandoned Cart recovery and Variation Swatches), and priority support. It's designed for professionals and store owners who want to maximize their revenue and efficiency. Check out our detailed feature comparison to see which version is best for you.
Absolutely not! You can configure everything Booster has to offer without any coding knowledge. Our interface is designed to be user-friendly, with clear options and toggles for each of the 110+ modules.
Booster for WooCommerce is the most comprehensive WooCommerce enhancement toolkit, combining 110+ powerful modules that often replace the need for multiple, expensive standalone plugins. Our all-in-one solution provides essential tools to boost sales and streamline operations, from professional PDF invoices and multi-currency support to flexible dynamic pricing and checkout field customization.
Our WooCommerce toolkit (Booster) adds advanced capabilities like global multi-currency selling, sophisticated dynamic pricing rules, streamlined checkout optimization, automated PDF invoicing, and versatile product addons. All these features are integrated into a single, performance-optimized plugin, allowing you to enhance your store without bloat and potentially replace 10+ individual plugins with one comprehensive solution.
No! Performance is a top priority for Booster. Our plugin is highly modular, meaning only the code for the modules you activate is loaded. Disabled modules have zero impact on your site's speed. We continuously optimize our code to ensure Booster runs efficiently, allowing you to add powerful features like PDF invoices or dynamic pricing without sacrificing performance. We have performance benchmarks available on Booster.io.
Absolutely! Booster is designed with a user-friendly interface. Each of the 110+ modules can be enabled or disabled with a single click, and settings are clearly organized within each module. You only interact with the features you choose to use, making it easy to manage without feeling overwhelmed.
Yes, definitely! Because Booster is modular, you can activate only the specific features you need (e.g., just PDF Invoices or the Bulk Price Editor). The other 100+ modules will not load any code or impact your site's performance. This way, you get the exact functionality you require without any unnecessary overhead, and you have the option to explore other features like currency switching or product addons later if your needs grow.
In many cases, yes! Booster's free core modules for features like PDF Invoicing, Currency Switching, and Checkout Field Editing are very robust and often provide comparable or even more functionality than many standalone free plugins. For advanced needs, Booster Elite frequently offers more comprehensive features than specialized premium plugins, all at a fraction of the total cost. We recommend trying the free module first and checking our feature comparison for Elite capabilities.
Yes, Booster is regularly updated and fully compatible with the latest WordPress and WooCommerce versions. This includes seamless integration with modern WooCommerce architecture like High-Performance Order Storage (HPOS) for improved scalability, as well as WooCommerce Blocks, ensuring our toolkit stays current and performs optimally with all platform advancements.
Implementing just a few premium modules from the Booster Elite suite is typically more cost-effective than buying multiple individual plugins (often priced at $49-$99 each). Stacking your WooCommerce site with many different plugins can also lead to slower performance and compatibility conflicts. Booster Elite solves these problems with over 110 compatible modules in a single, optimized package, simplifying your plugin management and saving you money.
Yes! We offer a 30-day no-questions-asked money-back guarantee for Booster Elite. If you are not completely satisfied with your purchase, you can request a refund within the first 30 days, and we will give you 100% of your money back.
To unlock all Booster Elite features, please purchase and install the Booster Elite plugin from our website. Once activated, the Elite features will be available within the existing module settings.
You can find links to documentation for each module within the Booster settings dashboard in your WordPress admin (WooCommerce > Booster Settings). Each module typically has a "Module Documentation" link. You can also visit our main documentation hub at booster.io/docs/ for comprehensive guides on all features, including PDF Invoicing, Dynamic Pricing, Multi-Currency, and more.
warning in[wcj_product_total_sales]`[wcj_order_customer_user_roles] Fixed issue for Guest user role.[Wcj_order_shipping_price_without_html_custom] shortcode.[Wcj_order_total_without_html_custom] shortcode.[Wcj_order_total_fees_incl_tax_without_html_custom] shortcode.[Wcj_order_total_tax_without_html_custom] shortcode.[wcj_product_regular_price_without_html_custom] shortcode.[wcj_product_purchase_price_without_html_custom] shortcode.is_cart().[wcj_order_total_in_words] shortcode. "Fixed issue for Lithuanian characters (LT) lang paramater.WCJ_Module - Add "hide_on_free" parameter allowing to create a feature hidden on free version.get_option() by wcj_option().get_option() by wcj_option().null.wcj_get_option() function in order to improve performance getting options from the database once the autoload option is now disabled by default.$args parameter on change_price() function allowing to disable/enable price saving.get_option() calls to wcj_get_option().Uncaught Error: Call to a member function add_enable_module_setting() on int error message in wcj-options.php:18.Call to undefined method get_product() error by fixing discount_as_item and shipping_as_item parameters from [wcj_order_items_table] shortcode.wcj_modules_loaded on wcj-modules.WC_Abstract_Legacy_Order::get_product_from_item() deprecated function by $item->get_product().item_name by product title when using [wcj_order_items_table columns="item_name"].WCJ_Module - Fix compatibility issue with Beaver Builder Plugin.Prevent User Login Globally option from creating an empty order.wcj_currency_exchange_rate filter to the correct place to also include the exchange rate value from inversion.WooCommerce Fixed Coupons compatibility option.Undefined property: WCJ_TCPDF::$imagekeys issue.[wcj_order_billing_email] shortcode.setlocale option that uses comma as decimal separator.plus attribute for all shortcodes starting as true by default.the_content filter on wcj_desc property in order to shortcodes to work.WCJ_Module - Create desc_pro and extra_desc_pro properties.wc_get_template_part hook besides the woocommerce_before_template_part._wcj_price_by_country_$group_id meta regardless of the 'Product Basis' option.wcj_export_validation filter with 3 parameters: boolean, 'object_type', $object.wcj_invoicing_header_content_length filter allowing to add/remove the Content-Length header from the invoice.%product_edit_link% template variable.add_html_on_price param.add_html_on_price param allowing to return the price without the html.heading_format param from [wcj_product_wholesale_price_table] on Heading Format option.%discount_value% will calculate the totals when the 'price directly' is in use.wcml_client_currency filter to get the currency as well.wcj_global_discount_price_hash.[wcj_product_wholesale_price_table] shortcode only to products that really need the module.$_POST.item_name paramater from wcj_order_items_table shortcode.item_meta parameter from wcj_order_items_table.[wcj_product_wholesale_price_table] shortcode.%discount_value% will calculate the totals when the fixed discount is in use.wcj_multicurrency_compatibility_wc_ttrs_instances filter.editable_roles filter allowing for example the shop_manager to see all roles.wcj_get_ajax_settings() searching customers by ajax passing woocommerce_json_search_customers on $search_type parameter.wcj_pretty_utc_date() function that takes into consideration configured language, timezone, and date format.DateTime::createFromFormat._wcj_product_addons_per_product_enable_by_variation_% meta._wcj_product_addons_per_product_enable_by_variation_% meta value after import.%addon_title% template variable on Each Addon from Cart Template./woocommerce/ folder among other paths from other possible plugins.[wcj_order_meta] shortcode added to 'instructions'.get_all_variations() for better results with 'Variable Products Variations' option.WCJ_Module_Product_By_Condition - pre_get_posts - Disables pre_get_posts query when exporting products.update_custom_payment_gateways_fields_order_meta() now also expects an array as an input value.mb_internal_encoding().WC()->customer->get_shipping_postcode too.WCJ_Module - Get products in all languages from ajax product search, if corresponding WPML option is enabled.WCJ_Module - Move remove_wpml_functions_before_get_terms and restore_wpml_functions_after_get_terms from 'Price based on User Role' module making it more flexible to be appliable to any module.[wcj_input_field] Add 'data_attributes' param.[wcj_input_field] Add 'name_array' param, allowing the input name to be set as an array. e.g. [wcj_input_field name_array="parent" name="test"] -> <input name="parent[test][value]" />.wcj_get_data_attributes_html() function allowing to create a multiple data parameters like data-param_a='value_a' when receiving a associative array.wcj_timezone() function to get timezone. wp_timezone() already does it but as it was introduced only on version 5.3.0 this was a safer option.WCJ_Module_Product_By_Condition - pre_get_posts - Add 'wcj_product_by_condition_pre_get_posts_validation' filter to setup when the query should be disabled.wcj_validate_eu_vat_number() response from ajax by using wp_send_json().WCJ_Modules - Also check if Meta-box option is an array.update_order_review_expired() if "Overwrite by Billing Country" option is enabled.wcj_validate_vat_no_soap() function with correct api_url.<script> or <style> tags.[wcj_product_wholesale_price_table] Fix "A non-numeric value encountered" PHP warning.is_cart() and is_checkout().wcj_validate_eu_vat_number() function by adding wcj_eu_vat_number_to_check and echo parameters.tax_display_by_user_role() to search on multiple roles.[wcj_order_taxes_html] - Add parameter show_label.WCJ_Modules - Change the order some submodules are loaded to make it compatible with "Load Modules on Init Hook" option.the_title filter.bulk_actions_handle().woocommerce_add_cart_item and woocommerce_get_cart_item_from_session.price_change_ajax().change_price().[wcj_order_refunds_table] - columns - refund_title param fixed.WCJ_Module - Create get_option() method to get an option from database or from the class itself for performance reasons.wcj_multicurrency_per_product_enabled option enabled.wcj_multicurrency_compatibility_wc_price_filter option default value from 'yes' to 'no'wcj_multicurrency_per_product_enabled option enabled.[wcj_order_refunds_table] - columns - refund_date param added.plus_fees for [wcj_order_subtotal_plus_shipping] shortcode.wcj_get_order_fees_total() and wcj_get_order_fees_total_tax().wcj_general_advanced_ip_detection on wcj_get_the_ip() function to 'REMOTE_ADDR', 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR'.change_price() function using maybe_convert_currency().add_files_to_email_attachments().display() function, i.e if it's on "single" or "archive"._wcj_order_quantities_min meta from being saved on variable products._wcj_order_quantities_step from parent id if variation doesn't have the _wcj_order_quantities_step meta.[wcj_order_total_width], [wcj_order_total_height], [wcj_order_total_length], [wcj_order_total_weight] shortcodes.WC_Product class on wcj_get_ajax_settings().%user_ip%) and User Agent (%user_agent%).yy-mm-dd.location and not_location attributes with comma values, like location="US, CA, NZ, AU".[wcj_order_items_table] - product_shipping_class and product_shipping_class_id columns added.wcj_get_cart_item_quantities() to get cart items quantities, with correct variation id, where native function from WooCommerce fails getting only the parent id if Manage Stock option is enabled.wcj_price_by_country_pretty_price() and wcj_price_by_country_rounding() functions.init hook priority lowered. This fixes the issue with "PDF Invoicing & Packing Slips" module not displaying decimal quantities.pattern for quantity input.$_product really exists on offer_price().woocommerce_before_main_content hook by wp_footer for adding the form on frontend as some themes don't use the original hook.urldecode().change_price_by_gateway() avoiding wrong calculations.wcj_get_settings_as_multiselect_or_text() compatible with wcj_get_ajax_settings().wcj_is_module_enabled() - Checking if it is a REST API call before requiring pluggable.php.simplexml_load_file() depending on WP_DEBUG constant.wcj_session_maybe_start() Improve session detection method.woocommerce_before_variations_form hook instead of replacing the entire add-to-cart/variable.php.maybe_hide_unavailable().check_admin_referer( 'bulk-posts' ) on bulk_actions_handle().wcj_pdf_invoicing_report_tool_row filter added.wcj_get_ajax_settings() making it possible to search products and categories by ajax.read_and_close parameter to session_start.wcj_get_the_ip().maybe_fix_settings() adds 'wc-enhanced-select' class only if 'remove_class' parameter is not present.[wcj_country_select_drop_down_list] shortcode will be hidden if Prices and Currencies by Country module is not enabled, unless parameter force_display have been passed as true.global $product is set as a String.$item->legacy_values temporary solution using woocommerce_checkout_create_order_line_item hook.continue in switch fixed.max-width:50vw; added).wcj_get_table_html() - Add wcj-row-even, wcj-row-odd for even and odd row classes and wcj-row1 and so on for each row number.wc_get_variable_product_purchase_price() function to get purchase price from variable products.wcj_get_user_roles().[wcj_order_products_terms] shortcode added.[wcj_product_purchase_price] - Get min purchase price from variable product by default instead of zero.[wcj_product_purchase_price] - search parameter added for variable products. Possible values are: min_variation, max_variation, all_variations, min_max_variations.[wcj_product_purchase_price] - format parameter added to return purchase prices of variable products as html or raw. Possible values are: yes, no.[wcj_post_meta_sum] shortcode added.product_id attribute on shortcodes.product_images_hide_on_archive() - Issue with replacing single product's image with custom HTML on archives fixed.init_options() is now initialized on init hook for better translation and performance.each() PHP notice fixed (compatibility with PHP v7.2.0).$_GET['order_id'] param added (fixes the issue with bulk status update emails on some servers).%price%, %min_price% and %max_price% replaced values added.wcj_product_images_loop_product_thumbnail_filter, wcj_product_images_loop_product_thumbnail_filter_priority, wcj_product_images_single_product_images_filter and wcj_product_images_single_product_images_filter_priority filters added.wcj_get_products() - Code optimized.[wcj_order_total_in_words] - whole attribute now automatically gets order currency symbol or currency code (set by use_currency_symbol attribute) (instead of Dollars). decimal attribute set to ¢ (instead of Cents).[wcj_product_you_save_percent] - Add compatibility with "Dynamic Pricing" plugin.get_product_orders_data() - start_date and order_status optional attributes added.get_product_orders_data() - Code cleaned up.WCJ_Module_Product_By_Condition - pre_get_posts - WP_Query optimized (post__not_in added).isEmptyObject check added in wcj-order-quantities.js.sanitize_key() added for role ID (when adding new role).[wcj_product_time_since_last_sale] - date_query fixed.wcj_is_frontend() - AJAX part improved (woocommerce_load_variations backend action added).wcj_order_number_meta filter added.[wcj_country_select_drop_down_list] - Code refactoring.[wcj_product_available_variations] - param attribute added.[wcj_product_time_since_last_sale] - Code refactoring.[wcj_product_wholesale_price_table] - user_role attribute added.wcj_update_products_price_by_country() - WP_Query optimized to return ids only.WCJ_Module - Modules' "extra description" restyled.[wcj_cross_sell_display] - Returning the result instead of echoing.[wcj_cross_sell_display] - Additional checks added for WC()->cart to exist before executing the shortcode's code.az, es_ES, fr_FR, is_IS, it_IT, ja, nl_NL, pt_BR, ro_RO, ru_RU, sv_SE.cs_CZ, el.[wcj_wpml]) can now be used in currency symbol fields.[wcj_shipping_costs_table]).is_numeric().maybe_convert_currency() - "Global Discount" module conversion added.pre_get_posts() - Additional checks added (to prevent possible "Call to undefined function is_user_logged_in() ..." error).html_entity_decode() added to XML header and footer.wp_get_current_user() function to exist added (wcj_current_user_can() function added).is_numeric() checks added.WCJ_Module - save_meta_box() - delete_post_meta() added.wcj_get_country_by_ip() - Additional checks added (to prevent possible "Call to undefined function wc_format_country_state_string() ..." error).wcj_wrap_in_wc_email_template() - {site_title} in footer replaced with blog name.WP_Query optimized to return ids only.%original_price% replaced value added.$_REQUEST first (before accessing WC()->customer). Postcode code part rewritten.get_chosen_payment_method() function added; global $woocommerce replaced with WC()).wcj_get_woocommerce_currencies_and_symbols() function added. wcj_get_currency_symbol(), wcj_get_currencies_names_and_symbols() and wcj_get_currencies_array() functions removed. Affected modules: "Currency Exchange Rates", "Admin Orders List", "Currency for External Products", "Currency per Product", "Multicurrency Product Base Price", "Multicurrency (Currency Switcher)", "Gateways by Currency", "Gateways Currency Converter", "Prices and Currencies by Country", "Price Formats", "Orders", "Currencies".[wcj_get_option] shortcode added.[wcj_image] shortcode added.[wcj_shipping_costs_table] shortcode added.[wcj_order_items_meta] - sep attribute added.[wcj_order_products_meta] shortcode added.[wcj_product_price] - min_or_max attribute added (for variable products).woocommerce_currency_symbol hooks removed (affected modules: "Prices and Currencies by Country", "Currency for External Products", "Multicurrency (Currency Switcher)", "Currency per Product", "Gateways Currency Converter").esc_url() added).is_array() check added to the wcj_get_left_to_free_shipping() function.wcj_get_product_display_price() - Extra checks for valid $_product added.$this->customer_country_by_ip and $this->customer_country_group_id added).wcj_checkout_files_upload filter - remove_file - File name parameter added.wcj_custom_shipping_do_add_table_rows filter added.custom_textarea type options added to the wpml-config.xml regeneration algorithm.wpml-config.xml file.wpml-config.xml file updated.wcj_version_updated hook added (wp_schedule_single_event()).WC_Order class before adding email attachments.add_open_price_input_field_to_frontend() - is_open_price_input_field_displayed class property added.add_input_fields_to_frontend() - are_bookings_input_fields_displayed class property added.add_addons_to_frontend() - are_addons_displayed class property added.add_product_input_fields_to_frontend() - are_product_input_fields_displayed class property added.wcj_is_product_term() - Checking for empty $term_ids param now.wcj_is_user_role() - Checking for wp_get_current_user() function to exist.[wcj_currency_select_radio_list] and [wcj_currency_select_drop_down_list] - Setting session value, when default attribute is set.[wcj_product_wholesale_price_table] - "Non-numeric value encountered" warning fixed (warning appeared in PHP 7.1 for products with empty price).wcj_currency_per_product_cart_checkout_currency and wcj_currency_per_product_is_cart_or_checkout filters added.WCJ_Module - reset_settings() - Array type options reset handling added.wcj_maybe_get_product_id_wpml() - Code refactoring (wcj_get_wpml_default_language() function added).wcj_maybe_get_product_id_wpml() - "Call to a member function get_default_language() on null ..." fatal error fixed.wcj_currency_exchange_rates_servers and wcj_currency_exchange_rate filters added.-1).wcj_price_by_user_role_do_change_price filter added.{product_slug_acronym}, {parent_product_slug_acronym}, {attribute=X}, {parent_attribute=X}, {variation_attribute=X} replaced values added.WCJ_Module_Product_By_Condition - WPML support added.wcj_checkout_files_upload action added.wcj_tcpdf_method() - Params fixed.http://storage.algoritmika.com/booster/tcpdf_fonts/ changed to http://storage.booster.io/tcpdf_fonts/.current_user_can( 'manage_woocommerce' ) before displaying the menus.[wcj_cross_sell_display] shortcode added.[wcj_upsell_display] shortcode added.[wcj_product_slug] shortcode added.wcj_is_admin_product_edit_page() - AJAX loading variations included.wcj_get_select_options() - Handling empty string ($select_options_raw) correctly now.wcj-functions-math.php added.WCJ_Module_Product_By_Condition class added (affected modules: "Product Custom Visibility", "Product Visibility by User Role", "Product Visibility by Country").WCJ_Module_Shipping_By_Condition - Changed to abstract.WCJ_Module - save_meta_box() - Global post setup added.WCJ_SESSION_TYPE. Affected modules: Checkout Files Upload, EU VAT Number, Multicurrency (Currency Switcher), Product Visibility by Country, Product Custom Visibility, Tax Display, Prices and Currencies by Country.wcj_get_left_to_free_shipping() - WooCommerce below v3.3.0 compatibility issue fixed.class-wcj-shortcodes-cart.php file.[wcj_cart_items_total_quantity] - Code refactoring.[wcj_cart_items_total_weight] - Code refactoring.[wcj_cart_discount_tax], [wcj_cart_discount_total] shortcodes added.[wcj_cart_fee_tax], [wcj_cart_fee_total] shortcodes added.[wcj_cart_function] shortcode added.[wcj_cart_shipping_total], [wcj_cart_shipping_tax] shortcodes added.[wcj_cart_subtotal], [wcj_cart_subtotal_tax] shortcodes added.[wcj_cart_tax], [wcj_cart_total_ex_tax] shortcodes added.[wcj_order_items_table] - Columns - item_product_input_fields_with_titles column added.wc_get_price_decimals filter added.{product_slug}, {parent_product_slug}, {variation_attributes}, {parent_sku} replaced values added.wcj_get_shipping_methods()).WC_Shipping_Free_Shipping class.%cart_total% replaced value added.%order_items_skus% replaced value added.WCJ_Module_Shipping_By_Condition (Shipping Methods by Products / Users) - "Use Shipping Instances" option added.check_user_roles() fixed.wcj_send_file() function added).ZIPARCHIVE::OVERWRITE added when creating zip file.[wcj_cart_total] - multiply_by attribute added.[wcj_shipping_time_table] shortcode added.[wcj_order_customer_data] shortcode added.[wcj_order_items] - Special _sku value added for the field attribute.[wcj_order_notes] - limit attribute added.[wcj_product_price] - multiply_by_attribute attribute added.[wcj_product_shipping_time_table] shortcode added.multiply common attribute added.site_visibility common attribute - front_page option added.error_reporting( E_ALL ) moved to wcj-loader.php.wcj_log() - $do_var_dump param added.wcj_get_currency_exchange_rate_product_base_currency() - Minor code refactoring.wcj_get_products() - Product's ID info added.wcj_product_has_terms() - Function now also accepts product id as param.wcj-functions-shipping.php added.WCJ_Invoice - get_file_name() - Empty file name fallback fixed.WCJ_PDF_Invoice - Minor code refactoring.init hook (on "WC Sessions").init hook (on "WC Sessions").WCJ_SESSION_TYPE. Affected modules: Checkout Files Upload, EU VAT Number, Multicurrency (Currency Switcher), Product Visibility by Country, Product Custom Visibility, Tax Display, Prices and Currencies by Country.wcj_is_frontend().K_TCPDF_CALLS_IN_HTML set to true (fixes the issue with using TCPDF methods in HTML, e.g. [wcj_tcpdf_pagebreak] shortcode).DOCUMENT_ROOT.$_SERVER info added (works with wcj_debug param).standard (and "Session Type in Booster" option temporary disabled). Affected modules: Checkout Files Upload, EU VAT Number, Multicurrency (Currency Switcher), Product Visibility by Country, Product Custom Visibility, Tax Display, Prices and Currencies by Country.pre_get_posts - $wpdb->prefix is used instead of hard-coded wp_ prefix.price_directly and fixed discount taxes display fixed.price_directly case fixed.do_shortcode added.get_checkout_url() replaced with wc_get_checkout_url().woocommerce_add_order_item_meta hook replaced with woocommerce_checkout_create_order_line_item hook.woocommerce_add_order_item_meta hook replaced with woocommerce_new_order_item hook.woocommerce_add_order_item_meta hook replaced with woocommerce_new_order_item hook.do_shortcode() is used in tabs output, instead of applying the_content filter.wp_reset_postdata() added.wcj_checkout_custom_field_visible filter added.[wcj_wpml]).pre_get_posts hook priority fixed.pre_get_posts hook priority fixed.WCJ_SESSION_TYPE constant info added.[wcj_customer_order_count] shortcode added.[wcj_customer_total_spent] shortcode added.[wcj_wc_session_value], [wcj_session_value], [wcj_request_value] shortcodes added.[wcj_order_items_table] - Columns - product_weight_multiply_qty column added.[wcj_order_notes] shortcode added.[wcj_product_price] - multiply_by_meta attribute added.[wcj_product_stock_status] shortcode added.wcj_tcpdf_method().wcj_get_left_to_free_shipping() - Backward compatibility with WooCommerce below v3.2.0 added.wcj_session_ functions.wcj_get_current_user_all_roles() - Additional checks added.WCJ_SESSION_TYPE (can be changed in "General" module).alg_ replaced with wcj_ in function and class names.http://booster.io to https://booster.io in all plugin files.BYR to BYN).inline) restyled.wcj_is_product_wholesale_enabled() - "Products to exclude" option fixed.required added to options.$paypal_allowed_currencies_and_names type fixed (changed to array).add_order_number_meta() - Bug fixed (when "Number Generation" is set to "Order ID").[wcj_tcpdf_rectangle] shortcode added.[wcj_tcpdf_barcode] and [wcj_barcode] - Code refactoring (corresponding functions added to wcj-functions-general.php).currency attribute added to all shortcodes which use wcj_price_shortcode() function.[wcj_order_tcpdf_barcode] shortcode added.[wcj_order_items_table] - item_subtotal_tax_excl, item_subtotal_tax_incl, line_subtotal_tax_excl, line_subtotal_tax_incl and line_subtax columns fixed for "custom" items (i.e. "shipping and discount as item") for WC from v3.0.0.[wcj_order_items_table] - product_barcode column added.[wcj_order_profit] and [wcj_order_items_cost] shortcodes added.[wcj_product_barcode] shortcode added.wcj_tcpdf_barcode() - Border removed.wcj-functions-core.php file renamed to wcj-functions-booster-core.php.wcj_get_saved_exchange_rate() - Returning 1 when currency_from equals currency_to.wcj_price_by_product_base_currency() - Checking if currency exchange rate not equals zero (so no division by zero can happen).woojetpack_readme removed.WCJ_Module - create_meta_box() - Tooltip restyled. Optional css attribute added to title type.w_c_j()->shortcodes array.wcj-constants.php file moved to core directory.change_currency_symbol() - Changing symbol for appropriate currency code only.wp_die() replaced with die() in price_change_ajax().wp_die() replaced with die() in price_change_ajax().array_merge() replaced with array_replace() for wcj_get_select_options() results (with placeholder).wcj_is_frontend() check added.array_merge() replaced with array_replace() for wcj_get_select_options() results (with placeholder).%customer% can now be used in comma separated list for multiple recipients.time() replaced with current_time().wcj_reports_products_sales_check_product filter added.parent property accessed directly" issue fixed.[wcj_barcode] shortcode added.[wcj_tcpdf_barcode] shortcode added.[wcj_order_date] - days attribute added.[wcj_order_items_table] - item_meta column - is_custom meta excluded.[wcj_product_category_count] shortcode added.[wcj_product_price] - currency attribute added.[wcj_product_purchase_price] - Using wcj_get_product_id() instead of wcj_get_product_id_or_variation_parent_id().[wcj_product_purchase_price] - hide_currency attribute added.wcj_log() - esc_url() added.wcj_get_saved_exchange_rate() function added.wcj_get_currency_exchange_rates_url_response() function added).wcj_get_select_options() - Prefix (wcj-) removed (was added in v3.2.3).wcj_get_select_options() - trim() added.wc_get_product_purchase_price() - int replaced with float - this fixes the issue with purchase price calculating incorrectly (cutting decimal part).wcj_ prefix, when importing plugin settings.exchange_rate field updated (12 decimals in step and code refactoring).core directory added.WC() function to exist before accessing to WC()->cart. Checking for is_checkout(). Code refactoring.get_cart_url() method replaced with wc_get_cart_url() function.get_cart_url() method replaced with wc_get_cart_url() function.wcj_get_select_options() - Prefix (wcj-) is added to the keys (to prevent issues with numeric keys).manage_options() - Security issue fixed.hide_breadcrumbs_with_css() - Additional identifier added.post_status.[wcj_order_items_table] - wcj_order_items_table_data filter added.[wcj_order_items_table] - sort_by_column attribute added.wcj_get_order_statuses()).wc_get_product_purchase_price() - Converting post meta to int before adding (fixes PHP 7 notice).wcj_get_current_user_first_role() - Code changed, so now user role is always correctly identified (i.e. with any array index).WCJ_Invoice - Default values added to get_option() calls.WCJ_Product - Class removed (get_purchase_price() function moved to wc_get_product_purchase_price()).user_id) section added. Module (documentation) URL changed.WCJ_Module_Shipping_By_Condition (Shipping Methods by Products / Users) - Admin settings restyled.WCJ_Module_Shipping_By_Condition - Code refactoring.[wcj_store_address] shortcode added.[wcj_wp_option] shortcode added.wcj_get_product_input_fields() - Array type values display fixed.pt_BR, ro_RO, ja, is_IS, it_IT, sv_SE, az translation files added.WCJ_Module - Minor code refactoring.select type options fixed; text with class widefat options fixed.[wcj_order_custom_field] - key attribute added.[wcj_order_items_table] - product_meta and product_post_meta columns fixed.[wcj_order_items_table] - Major code refactoring and clean up.[wcj_order_items_table] - "Multicolumns" functionality added.wcj_get_european_union_countries_with_vat() - GR changed to 24; RO changed to 19.es_ES translation files added.wcj_is_user_role() - super_admin added if checking for administrator.wcj_full_pack filter added.[wcj_order_items_table] - wcj_pdf_invoicing_cell_data filter - order argument added.[wcj_order_items_table] - hide_zero_prices - attribute added.[wcj_order_refunds_table] - columns - refund_number fixed.[wcj_order_refunds_table] - insert_page_break attribute added.[wcj_order_total_after_refund] shortcode added.[wcj_order_total_tax_after_refund] shortcode added.[wcj_order_total_tax] - Code refactoring.WCJ_Module - create_meta_box() - show_value option added.WCJ_Module - create_meta_box() - class option added.[wcj_get_order_id] - Check added (is_object( $_order )).[wcj_current_currency_code] and [wcj_current_currency_symbol] shortcodes added.[wcj_product_you_save] - multiply_by attribute added.disabled).post_status error fixed.add_pdf_invoice_email_attachment() - Check added (is_object( $order )).visibility attribute - wrong_user_text attribute set to empty string by default now; wrong_user_text_not_logged_in attribute added (defaults to empty string).location and not_location attributes - wcj_get_user_location() - Code refactoring.[wcj_wholesale_price_table] - columns_style attribute added.[wcj_selector] - shortcode added.[wcj_order_items_table] - WooCommerce v3.x.x compatibility - unserialize() replaced with maybe_unserialize() for "WooCommerce TM Extra Product Options" plugin data.[wcj_order_items_table] - columns - product_categories column added.[wcj_order_items_table] - columns - item_quantity_refunded and item_quantity_excl_refunded columns added.[wcj_order_items_table] - columns - item_total_refunded column added.[wcj_order_items_table] - refunded_items_table attribute added.[wcj_order_items_table] - Returning empty string if no items found.[wcj_order_refunds_table] shortcode added.[wcj_order_total_shipping_refunded] shortcode added.[wcj_order_total_tax_refunded] shortcode added.[wcj_order_subtotal_to_display] shortcode added.[wcj_order_total_formatted] shortcode added.[wcj_order_remaining_refund_amount] shortcode added.[wcj_product_wholesale_price_table] - columns_style attribute added.WCJ_Widget child classes).is_string( $value ) added.do_shortcode added when checking for empty content (before displaying the tab).post__not_in from query (instead of starting with empty array).auto-draft orders.WP_Query optimized to return ids only.WP_Query optimized to return ids only.ZipArchive to exist before generating ZIPs.get_option() calls.billing_email, order_date, post.serialize() and unserialize() replaced with json_encode() and json_decode().required attribute added to [wcj_input_field] shortcode.wcj_modules filter added.WC_Settings_Jetpack - wcj_custom_dashboard_modules filter added.[wcj_order_billing_country_name] and [wcj_order_shipping_country_name] shortcodes added.[wcj_order_items_table] - columns - item_product_addons column added.wcj_pdf_invoicing_fonts filter added.wcj_admin_bar_dashboard_nodes filter added.WCJ_Module - save_meta_box_validate_value() added.wcj_get_country_flag_by_code() - "No flag" added.[wcj_site_url] shortcode added.Hide all except "Local Pickup" and Hide "Flat Rate" only options added.WP_Query optimized to return ids only.[wcj_order_items_table] - product_name column - "WooCommerce TM Extra Product Options" plugin compatibility - get_meta().[wcj_product_dimensions] - wc_format_dimensions().wc_reduce_stock_levels().WCJ_Module - create_meta_box() - placeholder option added.wcj-currencies.php file (wcj_get_currencies_array() function) moved to functions folder.wcj_get_product_id() and wcj_get_product_id_or_variation_parent_id() - Check for "product not null" and is_object added.wcj_get_invoice_date() - Check for not empty invoice date added.[wcj_currency_select_link_list], [wcj_currency_select_radio_list], [wcj_currency_select_drop_down_list] - default attribute added.[wcj_currency_exchange_rate] and [wcj_currency_exchange_rates_table] shortcodes added.[wcj_order_items_table] - add_variation_info_to_item_name attribute defaults to yes now.[wcj_order_items_table] - columns - product_meta, product_cost, product_profit, line_cost, line_profit, product_id, item_product_id, product_post_meta, product_purchase_note columns added.[wcj_order_items_table] - insert_page_break (defaults to empty string) attribute added.[wcj_order_items_table] - columns - product_attribute - Checking parent product's attribute for variation products.[wcj_order_shipping_address] - fallback_billing_address attribute added.[wcj_order_customer_meta] shortcode added.[wcj_product_weight], [wcj_product_length], [wcj_product_width], [wcj_product_height], [wcj_product_dimensions] - variations attribute added.get_current_product_id_and_currency() - Getting ID from global $product added.wcj_currency_exchange_rates_additional_currencies filter added.init hook) - this fixes the issue with wrong currency symbol in price filter widget.yes).wcj_get_terms().woocommerce_duplicate_product).woocommerce_uploads folder.wp_safe_redirect() added to "Delete log" action.%resend_verification_url% replaceable value added.wcj-reports-functions.php added.wcj-core-functions.php, wcj-order-functions.php, wcj-product-functions.php, wcj-date-time-functions.php files added.wcj-ajax-exchange-rates.js, wcj-product-input-fields.js, wcj-checkout.js, wcj-eu-vat-number.js).lib directory.wcj_order_get_payment_method() - Additional check for order (not null, object and method/property exists) added.[wcj_order_items_table] - add_variation_info_to_item_name (defaults to no) attribute added - this fixes the issue with double variation info.[wcj_order_items_table] - exclude_by_categories and exclude_by_tags attributes added.get_variation_prices_hash() - Additional check for categories option not empty added.[wcj_order_checkout_field] - Fixed custom checkout fields value not returning properly.[wcj_product_id] shortcode added.wcj_get_product_input_fields() fixed (used in "Export" module and in [wcj_order_items_table] shortcode's item_product_input_fields column).[wcj_order_checkout_field] - $order->get_data().[wcj_order_items_table] - shipping_as_item and discount_as_item fixed (in add_item()).get_country().wcj_get_product_id_or_variation_parent_id() instead of get_id().woocommerce_single_product_image_html hook replaced.$item->meta_exists() and $item->get_meta()) in add_product_input_fields_to_order_item_name() and add_files_to_email_attachments().woocommerce_related_products_args hook replaced with woocommerce_product_related_posts_query. Ordering by meta values removed. Ordering by ID, price etc. added.get_payment_method(); get_status().get_payment_method().wcj_get_order_item_meta_info() - is_custom meta key excluded from results.wcj-datepicker.js - 'zero' special value added for mindate and maxdate (fixes the issue with mindate=0 and maxdate=0 in Checkout Custom Fields).add_settings_hook() function removed from WCJ_Module class.wcj_number_plus_checkbox admin settings field type added (and WC_Settings_Jetpack code refactoring).wcj_get_products() - Code refactoring and add_variations param added.WCJ_Module - create_meta_box() - css option added.on_zero attribute added to all shortcodes.time attribute added to all shortcodes.visibility (i.e. user role) attribute can now be used in invoice shortcodes; wrong_user_text attribute added.payment_method and not_payment_method attributes added to all shortcodes when used in invoice.[wcj_cart_total] shortcode added.[wcj_order_items] - field attribute's _qty_x_name special value added (and debug renamed to _debug).[wcj_order_items_table] - exclude_by_attribute__name and exclude_by_attribute__value attributes added.[wcj_product_stock_quantity] - Return empty string instead of false on null.[wcj_product_stock_quantity] - count_variations attribute added.[wcj_product_description] shortcode added.[wcj_product_regular_price] and [wcj_product_sale_price] - multiply_by attribute added.get_cart_checkout_currency().product_id on ajax call.id and class added.wcj_product_input_field_frontend_html filter added.WP_Query optimized to return ids only.[wcj_product_add_new]).[wcj_product_add_new]).add_settings_hook() instead of get_settings().[wcj_empty_cart_button] shortcode added.custom_textarea.settings to submodules.WCJ_Module - extra_desc and link_slug properties added.http://booster.io to https://booster.io in readme.txt; main plugin file; module's documentation links.add_settings_hook() - BUTTON & PRICE LABELS - Custom Price Labels.wcj_get_order_item_meta_info() - get_meta_data() instead of has_meta().[wcj_order_items_table] - wcj_get_order_currency(). get_short_description(). wcj_get_order_item_meta_info().get_customer_id(). wcj_get_order_currency(). wcj_get_order_id(). get_customer_note(). get_billing_phone(). wc_get_order_item_meta().[wcj_order_date] and [wcj_order_time] - get_date_created().wcj_get_product_id_or_variation_parent_id().wc_get_price_including_tax(). wc_get_price_excluding_tax(). wc_display_product_attributes(). wc_get_product_tag_list(). get_short_description(). get_gallery_image_ids().[wcj_product_image_url] - wcj_get_product_id_or_variation_parent_id().[wcj_product_categories_urls] - wcj_get_product_id_or_variation_parent_id().[wcj_product_categories_names] - wcj_get_product_id_or_variation_parent_id().[wcj_product_total_sales] - wcj_get_product_id_or_variation_parent_id().[wcj_product_wholesale_price_table] - get_price filters replaced. Get parent product ID replaced with get_parent_id().[wcj_product_categories] - wc_get_product_category_list().product_type property replaced with is_type() function.WCJ_PRODUCT_GET_PRICE_FILTER.get_price filters replaced. wcj_get_product_id_or_variation_parent_id().get_price filters replaced. Get product ID replaced with get_id(). wc_get_formatted_variation() used.get_price filters replaced. Get parent product ID replaced with get_parent_id().get_price filters replaced. Get product ID replaced with get_id(). wc_get_formatted_variation() used. Get parent product ID replaced with get_parent_id().get_price filters; wcj_get_product_id(). woocommerce_clean().WCJ_PRODUCT_GET_PRICE_FILTER. wcj_get_product_id_or_variation_parent_id(). wcj_get_product_status().get_price filters; wcj_get_product_id_or_variation_parent_id().get_price filters replaced. Get parent product ID replaced with get_parent_id().wcj_get_product_id_or_variation_parent_id(); product_type -> get_type().woocommerce_get_price -> woocommerce_product_get_price.wcj_get_product_id_or_variation_parent_id(); wcj_get_product_id(); product_type -> get_type(). woocommerce_price_html filter changed.wcj_get_product_id_or_variation_parent_id(); "free price" filters;WCJ_PRODUCT_GET_PRICE_FILTER; wcj_get_product_id_or_variation_parent_id().wcj_get_product_id_or_variation_parent_id().wcj_get_product_id_or_variation_parent_id().WCJ_PRODUCT_GET_PRICE_FILTER. wcj_get_product_id_or_variation_parent_id(). wcj_get_product_display_price().get_prices_include_tax(). wcj_get_product_formatted_variation(). wcj_get_product_id_or_variation_parent_id().wcj_get_product_id_or_variation_parent_id().wcj_get_product_id_or_variation_parent_id().woocommerce_product_subcategories_args hook).wcj_get_product_id_or_variation_parent_id().wcj_get_product_id_or_variation_parent_id().get_child().woocommerce_clean().wcj_get_order_id().wcj_get_order_id().get_customer_ip_address(). wcj_get_order_id().get_country() and get_state().WCJ_PRODUCT_GET_PRICE_FILTER.wcj_get_order_id().wcj_get_order_id(); get_date_created().wcj_get_order_id(); woocommerce_order_get_currency; wcj_get_order_currency(); get_billing_country().get_billing_country().wcj_get_order_id().wcj_get_order_id().$item_meta_value is array" added.wcj_get_order_currency().wcj_get_product_total_stock(). wc_get_price_to_display() and more.wc_get_product_category_list().wp_create_nonce added.wcj_get_order_currency().wcj_get_product_total_stock(). wc_get_product_category_list().wcj-price-currency-functions.php and wcj-user-roles-functions.php added.on_empty attribute added to all shortcodes.wcj_shortcode_result filter added to all shortcodes.[wcj_product_gallery_image_url] shortcode added.[wcj_cart_items_total_quantity] shortcode added.[wcj_order_status_label] shortcode added.[wcj_order_items_table] - wcj_pdf_invoicing_cell_data filter added.textarea replaced with custom_textarea.get_option() added.woocommerce_variation_prices_regular_price hook.wcj_price_by_country() - Additional check 0 != $product->variation_id added.wcj-bookings.js - _ajax_object.wcj-product-addons.js - _ajax_object.add_product_input_fields_to_cart_item_data().validate_product_input_fields_on_add_to_cart() and add_product_input_fields_to_order_item_name().offset and posts_per_page removed).WP_Query optimized to return ids only.eu-vat-number.js - _ajax_object.get_option() calls. Code cleaned up.woocommerce_payment_complete hook added.woocommerce_shipping_init hook replaced with init hook.WCJ_Module class code refactoring - add_settings_hook() function added (18 modules).wcj_add_change_price_hooks() function added.wcj_add_change_price_hooks() - PRICES & CURRENCIES - Multicurrency (Currency Switcher).wcj_add_change_price_hooks() - PRICES & CURRENCIES - Multicurrency Product Base Price.wcj_add_change_price_hooks() - PRICES & CURRENCIES - Price by User Role.wcj_add_change_price_hooks() - PRICES & CURRENCIES - Prices and Currencies by Country.wcj_add_change_price_hooks() - PRICES & CURRENCIES - Product Price by Formula.WCJ_Module - create_meta_box - Fixed selected for multiple select.WCJ_Module - create_meta_box - custom_attributes added to select.WCJ_Module - create_meta_box - Table restyled.de_DE) translation added.output_custom_textarea - Tooltip added.morewoooptions).strip_tags attribute added to all shortcodes.find and replace attributes now accept comma separated lists.[wcj_current_datetime] shortcode added.[wcj_current_time] shortcode added.[wcj_current_date] - current_time( 'timestamp' ) added.[wcj_current_timestamp] shortcode added.order_user_roles attribute added.[wcj_order_customer_user_roles] shortcode added.[wcj_order_customer_user] shortcode added.[wcj_order_items_table] - "product_regular_price_multiply_qty" and "product_sale_price_multiply_qty" columns added.[wcj_product_author] shortcode added.[wcj_product_author_avatar] shortcode added.[wcj_product_author_link] shortcode added.[wcj_product_author_link_all_posts] shortcode added.manual" is added when creating currency pairs list.$_REQUEST['product_id'] added.get_option calls.%min_price_simple%, %max_price_simple%, %default_price_simple%, %min_price%, %max_price%, %default_price%.wp (fixes the issue with PHP notice regarding cookies already set).textarea replaced with custom_textarea in "Content" fields.woocommerce_is_purchasable and pre_get_posts filters added.PHP_EOL issue fixed.woocommerce_related_products_columns filter added.init hook replaced with wp_loaded.is_visible() - wcj_checkout_custom_field_always_visible_on_empty_cart filter added.calculate_totals() function call added before getting cart totals.init function.calculate_shipping() - get_rate_id() added (this fixes the issue with only one custom shipping method appearing at the frontend).include_modules() function.validate_vat_no_soap() - Country code lowercase not validated bug fixed.wcj_export_orders_items_fields filter added.get_post_meta() replaced with safely_get_post_meta().strip_tags="yes" added to all shortcodes in default item template.do_shortcode added to XML header and footer.WCJ_Module - "Reset settings" button now uses JS confirmation; wp_safe_redirect added.[wcj_order_items_table] - columns - item_meta column added.[wcj_order_items_table] - quantity_prefix attribute added.[wcj_order_total_in_words] - LT - Lithuanian language function added.[wcj_order_total_in_words] - BG - not including national currency; Upper-case for first letter.WP_Query optimized to return ids only.[wcj_order_items_table] - get_meta_info - replaced with wcj_get_order_item_meta_info().wcj_current_filter_priority() modified for compatibility with WordPress since v4.7.[wcj_get_left_to_free_shipping] - multiply_by attribute added (and to wcj_get_left_to_free_shipping() function).[wcj_customer_billing_country], [wcj_customer_shipping_country], [wcj_customer_meta] shortcodes added.[wcj_order_function] - implode() added in case if returned value is an array.[wcj_order_coupons] shortcode added.[wcj_order_items_table] - item_name and item_variation - variation_as_metadata attribute added.[wcj_order_items_table] - item_name and item_variation - Using get_formatted_variation_attributes instead of wc_get_formatted_variation.[wcj_order_items_table] - Compatibility - "WooCommerce TM Extra Product Options" plugin.[wcj_product_excerpt] - Function simplified by using get_the_excerpt( $post_id ) directly (available since WordPress v4.5). However there is reported bug (see https://core.trac.wordpress.org/ticket/36934).true in is_visible on empty cart (wcj_checkout_files_always_visible_on_empty_cart filter) added.wcj_price_labels_check_on_applying_label filter added.wcj_price_labels_woocommerce_get_price_html_allowed_post_types filter added.load_plugin_textdomain moved from init hook to constructor (fixes the issue with module titles, descriptions not translating).class-wcj-currency-reports.php - filter_reports is now applied on wc-reports page only.unclean_custom_textarea() added.find and replace attributes added to all shortcodes.[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).[wcj_order_items_total_weight] replaced with [wcj_order_total_weight].[wcj_order_total_width], [wcj_order_total_height] and [wcj_order_total_length] shortcodes added.[wcj_order_items] shortcode added.[wcj_order_items_table] - item_image_width and item_image_height replaced with product_image_width and product_image_height.[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.[wcj_order_items_table] - columns - product_length, product_width and product_height columns added.[wcj_order_items_table] - item_short_description - now displays item's short description (may be different from item_excerpt). item_description attribute removed.[wcj_order_items_table] - columns - product_regular_price and product_sale_price columns added.[wcj_order_items_table] - columns - item_tax_class column added.[wcj_product_price_excluding_tax] and [wcj_product_price_including_tax] - multiply_by attribute added. And both functions code refactored.[wcj_product_excerpt] - Manually checking for short description first (so length can be applied).[wcj_product_excerpt] - excerpt_length attribute deprecated (replaced with length).[wcj_product_short_description] shortcode added.[wcj_product_url] shortcode added.[wcj_product_image_url] shortcode added.[wcj_product_categories_names] shortcode added.[wcj_product_categories_urls] shortcode added.[wcj_product_meta] shortcode added.[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).wc_order_statuses filter (produced PHP warning).manage_edit-shop_order_columns filters changed.get_invoices_report_data() - WP_Query optimized to return ids only.EL replaced with GR for Greece when checking location.validate_vat_no_soap function).get_stock_quantity() replaced with get_total_stock(). Separate "Stock Quantity" export field added.WP_Query optimized to return ids only.WCJ_Module - create_meta_box() - wcj_get_meta_box_options_type_price_step filter added.wcj_get_table_html() - "row_styles" parameter added.[wcj_product_excerpt] - Using product_excerpt_length object property instead of global variable.[wcj_product_wholesale_price_table] - wcj_product_wholesale_price_table_price_before and wcj_product_wholesale_price_table_price_after filters added.change_price_by_role() - wcj_price_by_user_role_get_price filter added.get_wholesale_price() - price_directly - wcj_get_wholesale_price filter added.get_invoices_report_zip() - Headers cleaned up.get_tool_header_html() instead of directly outputting header.wcj_get_product_input_fields() - unserialize() added for serialized values.[wcj_wholesale_price_table] - hide_if_zero_quantity and table_format attributes added.[wcj_order_payment_method_transaction_id] shortcode added.[wcj_order_shipping_price], [wcj_order_total_excl_tax] code refactoring.[wcj_order_total_excl_shipping] shortcode added.[wcj_order_status] shortcode added.[wcj_order_function] shortcode added.get_product_orders_data() - WP_Query optimized to return ids only.get_product_orders_data() - Grouped products support added.[wcj_product_wholesale_price_table] - hide_if_zero_quantity and table_format attributes added.add_hooks() moved to init hook.get_display_price() function).woocommerce_payment_gateways hook).available_payment_gateways() function.woocommerce_shipping_methods hook).init hook.die after generate_pdf_on_init.woocommerce_cli_create_order, kco_before_confirm_order and woocommerce_checkout_order_processed hooks added (duplicates woocommerce_new_order hook).custom_textarea added (this lets save HTML without removing any tags).WP_Query optimized to return ids only.global $woocommerce removed.WCJ_Module - colspan fixed in create_meta_box() function.WCJ_Module - create_meta_box - custom_attributes and tooltip options added.wcj_get_rocket_icon() fixed.not_location attribute added.[wcj_order_tax_by_class] - Tax rounding per line bug fixed.[wcj_order_items_table] - Additional column_param "not empty" check on item_key column.[wcj_order_items_table] - item_attribute column added.[wcj_order_items_meta] - unique_only attribute added.[wcj_product_length], [wcj_product_width], [wcj_product_height] shortcodes added.get_customer_country_group_id().init hook.do_shortcode added to formula and params.init hook.select and radio values.yes now.woocommerce_api_create_order hook added (duplicates woocommerce_new_order hook).woocommerce_new_order hook replaced with woocommerce_checkout_order_processed hook - this will fix issues with empty shortcodes.custom_number admin settings.[wcj_country_select_drop_down_list] - replace_with_currency attribute added.[wcj_order_tax_by_class] shortcode added.[wcj_order_total_by_tax_class] shortcode added.[wcj_order_subtotal_by_tax_class] shortcode added.get_product_orders_data() - WooCommerce loop fixed.[wcj_product_time_since_last_sale] WooCommerce loop fixed.[wcj_product_crowdfunding_time_remaining_progress_bar] fixed.[wcj_product_crowdfunding_goal], [wcj_product_crowdfunding_goal_remaining], [wcj_product_total_orders_sum] fixed (and hide_currency attribute added).[wcj_product_list_attributes] fixed.[wcj_product_total_sales] - hide_if_zero and offset attributes added.[wcj_product_time_since_last_sale] attributes added.customer_country_group_id on every get_customer_country_group_id() function call.add_hooks() function moved from init hook to constructor.[wcj_country_select_drop_down_list] shortcode).label tags added.set_is_vat_exempt() function.[wcj_order_total_refunded] shortcode added.[wcj_order_taxes_html] shortcode added.[wcj_order_items_meta] shortcode added.woocommerce_currency_symbol hook moved from init hook to constructor.init hook. This caused "wp-admin show white screen and no errors" on some servers (or "Fatal error: Call to undefined function wp_get_current_user() in ..." message if debug enabled).output_custom_input_fields_in_admin_order() for shipping bug fixed.init hook.init action.do_shortcode added to custom email recipient.wcj_add_files_upload_form_to_checkout_frontend function added.include_modules function code refactoring.calculate_totals() added on wp_loaded to fix mini cart currency and price issues.module (and module_name) attribute added.visibility attribute modified.[wcj_order_total_fees_tax] and [wcj_order_total_fees_incl_tax] - using get_line_tax() instead of calculating taxes manually - that should fix the issue with wrong taxes rounding.[wcj_wholesale_price_table] and [wcj_product_wholesale_price_table] - Table class added.[wcj_product_wholesale_price_table] - Price tax bug fixed.[wcj_product_wholesale_price_table] - price_row_format attribute added.admin-ajax.php (caused issue in mini cart).change_price_by_role_shipping() fixed (produced an error if price by user role for shipping was disabled).is_product and is_bookings_product checks added to enqueue_scripts function.do_shortcode added to custom tab titles.[wcj_input_field] shortcode) added.do_shortcode added to all messages.SetTitle fixed.woocommerce_matched_rates filter changed to woocommerce_find_rates - this fixes the issue with shipping tax not exempting.namespace (as it required PHP 5 >= 5.3.0).WC_Geolocation class exists added.[wcj_order_items_table] - item_weight column added.is_super_admin() replaced with wcj_is_user_role().name_changed_notice) removed.jetpack_menu()).WCJ_Module - create_meta_box() and save_meta_box() - title option type added.WCJ_Module - create_meta_box() - multiple attribute added to select type option.wcj_get_current_currency_code() function added.wcj_get_currency_exchange_rate() function added.[wcj_order_items_table] - Fixed for deleted products.[wcj_order_items_table] - item_name and item_variation - Variation data fixed (pa_ removed and urlencode added).[wcj_order_items_table] - item_name - style_item_name_variation attribute added.[wcj_order_items_table] - debug column added.[wcj_order_total_in_words] - Bulgarian language (lang="BG") added.get_product_orders_data - total_orders fixed.get_product_orders_data - offset shortcodes attribute added.get_product_orders_data and [wcj_product_time_since_last_sale] - Query by blocks.[wcj_product_crowdfunding_goal_remaining_progress_bar] shortcode added.[wcj_product_crowdfunding_time_remaining_progress_bar] shortcode added.[wcj_product_total_orders_items] shortcode added.date_i18n added to [wcj_product_crowdfunding_startdate] and [wcj_product_crowdfunding_deadline].get_customer_country_group_id() to prevent PHP notice on empty value.get_variation_prices_hash() - Variable products main price fixed.get_customer_country_group_id() - Not recalculating customer_country_group_id - works faster now.get_variation_prices_hash() - Variable products main price fixed.add_hooks() moved from init hook to constructor.get_variation_prices_hash() - Variable products main price fixed.post__not_in added to save_meta_box_value.posts_per_page lowered to query only necessary number of product in save_meta_box_value.disable_add_to_cart_ajax added.wcj_get_products()).create_migrate_from_custom_price_labels_tool - Query by blocks.wcj_get_products()).label tag added.add_custom_order_and_account_fields_to_admin_order_display.wcj_get_products()).renumerate_orders - Query by blocks.$wpdb->prefix fix.gather_orders_data - Fixed for deleted products (caused PHP notice).gather_products_data - Query by blocks.WCJ_Module - create_meta_box - select type added.WCJ_Module - create_meta_box now takes option default value if no post meta is set.wcj_product_id_for_shortcode added to products shortcodes and to Custom Price Labels module.[wcj_wholesale_price_table] shortcode added.[wcj_order_items_table] - item_key column - maybe_unserialize added (this fixes displaying file type product input fields).[wcj_order_total_fees_tax] shortcode added.[wcj_order_total_fees_incl_tax] shortcode added.[wcj_order_custom_field] shortcode added.[wcj_product_wholesale_price_table] - Columns styles fixed (now works for more than three levels).[wcj_product_wholesale_price_table] - Fix for variable products with same min and max prices.[wcj_product_wholesale_price_table] - add_price_row shortcode parameter added.[wcj_product_price] shortcode).product_id attribute.[wcj_product_price_excluding_tax] and [wcj_product_price_including_tax] shortcodes.set_time_limit increased. show_rates added.booster_for_woocommerce_version) parameter added.source parameter added to documentation link (module and dashboard).text to textarea (in all notice and main label fields).filter_available_payment_gateways_per_category function. This is fixing compatibility issue with "WooCommerce Subscriptions" plugin.woocommerce_checkout_update_order_meta filter function removed.WCJ_Module class.wcj_current_filter_priority() function added (affected Checkout Files Upload module).K_TCPDF_THROW_EXCEPTION_ERROR "is defined" check added to tcpdf_config.php file.WCJ_Module::create_meta_box() (works for text type).[wcj_get_left_to_free_shipping] bug fixed.[wcj_currency_select_link_list] shortcode added.[wcj_currency_select_radio_list] shortcode added.[wcj_order_checkout_field] - field_id string conversion added.WCJ_Product class).WCJ_Module and WCJ_Product classes).wcj_purchase_data_product_options and wcj_get_product_purchase_price filters added (second filter added to WCJ_Product class).wcj_get_currencies_names_and_symbols() and wcj_get_currency_symbol() functions modified.[wcj_order_items_table] - item_product_input_fields and item_key= options (columns) added.UK changed to GB in wcj_get_country_currency().change_currency_code() added.no_changes currency bug fixed.K_PATH_IMAGES in tcpdf_config.php).WCJ_Module class code refactoring.init_wc_gateway_wcj_custom_class().output_custom_number() fixed.wcj_is_module_enabled() function added.[wcj_country_select_drop_down_list] - manual sorting when countries attribute is used.[wcj_order_total_tax_percent] fixed. precision attribute added.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.[wcj_order_total_in_words] - decimal part rounding bug fixed.[wcj_order_total_in_words] - whole and decimal attributes added.[wcj_order_items_table] - item_short_description option added.hide_if_zero attribute added to Products Shortcodes.[wcj_product_you_save] - checking if product is on sale.[wcj_product_you_save] - hide_currency attribute added.[wcj_product_you_save_percent] - checking if product is on sale.[wcj_product_you_save_percent] - reverse attribute added.[wcj_product_shipping_class] (returns shipping class name, not slug), [wcj_product_dimensions], [wcj_product_formatted_name], [wcj_product_stock_availability], [wcj_product_tax_class], [wcj_product_average_rating], [wcj_product_categories], [wcj_product_list_attributes], [wcj_product_list_attribute], [wcj_product_stock_quantity], [wcj_product_sale_price], [wcj_product_regular_price], [wcj_product_time_since_last_sale], [wcj_product_price_including_tax], [wcj_product_price_excluding_tax], [wcj_product_available_variations];add_product_input_fields_to_order_item_name() fixed. "Item Name Order Table Format" option added.wcj_get_european_union_countries_with_vat() Romania VAT rate changed from 24% to 20%.%customer% as recipient added.[wcj_order_total_tax_percent] shortcode "rounding bug" fixed.WCJ_Tools and WCJ_Module - Code refactoring (mostly Tools related). Additionally modified modules:
Admin Tools, Bulk Price Converter, Custom Price Labels, EU VAT Number, General, Old Slugs, Order Custom Statuses, Order Numbers, PDF Invoicing, SKU.lang and not_lang params PHP notice fixed.wcj_order_billing_address filter added.wcj_local_price_labels_enabled defaults to yes.remove_query_arg added.[wcj_product_crowdfunding_time_remaining] singular form bug fixed.textarea to custom_textarea.[wcj_tcpdf_pagebreak] shortcode added.[wcj_order_checkout_field] bug fixed.time function calls replaced with current_time in: crowdfunding module and shortcode, invoicing, stock report.WCJ_Module code refactoring.[wcj_order_checkout_field] shortcode modified. [wcj_order_custom_meta_field] deprecated (now duplicates [wcj_order_checkout_field]).[wcj_country_select_drop_down_list] shortcode - option to limit country list added.gather_orders_data function - now no errors on gathering data in shops with large number of orders.[wcj_order_meta] shortcode added (attribute: meta_key).[wcj_order_custom_meta_field] shortcode added. Suggested by https://wordpress.org/support/topic/pdf-invoice-get-order-item-meta-data.[wcj_text] shortcode added.not_lang attribute added to [wcj_wpml] shortcode; lang modified to accept comma separated values.wpml_not_language attribute added to all shortcodes; wpml_language modified to accept comma separated values.billing_country and not_billing_country attributes added to all shortcodes when used in invoice.output_dashboard_modules function.add_enable_module_setting() in WCJ_Module.wcj_get_currency_symbol function. Affects: admin (per product), frontend and reports currency symbols.[wcj_custom_doc_number] and [wcj_custom_doc_date] shortcodes added.[wcj_order_checkout_field] bug fixed.[wcj_product_total_sales] added.WCJ_Module.get_settings() added to WCJ_Module.old_price_html in add_discount_info_to_cart_page() modified.wp_reset_query to wp_reset_postdata.completed to wc-completed in orders WP_Query.custom_textarea custom settings field added).delete_product_transients added on settings save (now no need to Clear transients manually from WooCommerce Status > Tools).[wcj_product_total_orders], [wcj_product_total_orders_sum],
[wcj_product_crowdfunding_goal], [wcj_product_crowdfunding_goal_remaining],
[wcj_product_crowdfunding_startdate], [wcj_product_crowdfunding_deadline], [wcj_product_crowdfunding_time_remaining].completed to wc-completed in orders WP_Query.name_changed_notice added).fix_required_by_default added.wcj_features_status filter deprecated.[wcj_product_wholesale_price_table]) - Discount percent row added to the table.[wcj_invoice_date] in invoice number bug fixed.symlink call changed to calling with variable function name to prevent autodeleting tcpdf_fonts.php file from some servers bug.location, site_visibility, wpml_language attributes added to all shortcodes.[wcj_country_select_drop_down_list] shortcode added.date_query added (fix for "memory exhausted" message, on large number of total shop orders).[wcj_wpml_translate] added to General Shortcodes list.woojetpack_readme.WCJ_Module class added. Type submodule added.WCJ_Product class added (started).custom_number settings field added as woocommerce_admin_field_custom_number action in WC_Settings_Jetpack class.[wcj_cart_items_total_weight].[wcj_product_excerpt], [wcj_product_tags].[wcj_product_custom_field] - feature requested by: https://wordpress.org/support/topic/custom-product-info-how-to-achieve.[wcj_product_you_save], [wcj_product_you_save_percent].wcj_order_get_cart_discount_tax() in [wcj_order_total_discount] shortcode.[wcj_order_subtotal_plus_shipping].[wcj_order_customer_note], [wcj_order_checkout_field], [wcj_order_billing_phone].[wcj_order_total_fees], [wcj_order_fee], [wcj_order_fees_html].woocommerce_loaded hook changed to init in WCJ_Price_by_Country_Core.change_shipping_price_by_country function added). Suggested by Fabian.merge option added; and currency symbol fixed.[wcj_product_wholesale_price_table] shortcode added to "Products Shortcodes".do_shortcode added on price output.[wcj_product_purchase_price] shortcode added to "Products Shortcodes".number, textarea and checkbox field types added.gateways_fees function).add_fee function).on-hold, fixed (now default_order_status).# in order numbers.sanitize_file_name() added in WCJ_Invoice::get_file_name().force_balance_tags() added in WCJ_PDF_Invoice::get_pdf().WCJ_TCPDF class and defining K_PATH_IMAGES in tcpdf_config.php.woocommerce-jetpack.php.item_variation column added to [wcj_order_items_table] shortcode. Suggested by Brad.is_shop_manager function). Also added to PDF Invoices (V1).fopen. Also added to PDF Invoices (V1).get_item_total replaced with get_item_subtotal.[wcj_wpml] (and [wcj_wpml_translate]) shortcode added to "General Shortcodes" for translating any other text.internal_wc only.after_discount attribute added to [wcj_order_subtotal] shortcode (also [wcj_order_subtotal_after_discount] shortcode).[wcj_product_sku], [wcj_product_title], [wcj_product_weight].font_family and font_size settings wrongly taken from PDF Invoices V1 instead of V2, fixed.on_create bug fixed. This caused creating all document on new order only.hide_currency added to Products Shortcodes ([wcj_product_price]).[wcj_product_price] - variable product handling (as price range), added.hide_if_zero checking for _order_item_total_ shortcodes.do_shortcode on all empty price outputs.do_shortcode in payment gateway's "thank you" page and email instructions.add_custom_order_statuses_to_reports() for WooCommerce v.2.3 compatibility.generate_pdf() (order_id not defined when first checking), fixed.maybe_unserialize instead of serialize in add_custom_checkout_fields_to_pdf().add_custom_order_statuses_to_reports() for WooCommerce v.2.3 compatibility.update_database().set_product_sku function. Bug caused SKU not autogenerating when adding new product. Reported by Gary.$wpdb->prefix fix. Reported by John.wc_get_product instead of new WC_Product.wc_get_product instead of new WC_Product.id option bug, fixed.woojetpack_country_ip added to DB.booking_form_calculated_booking_cost hook added. Partial compatibility with Bookings plugin.round = none rounding by precision set in WooCommerce.wp_register_script moved to init. This caused warning generation on some servers.is_object check added. This caused warning generation on some servers.get_line_subtotal instead of get_line_total. This fixes the bug with item's discount in invoice.api.host.info.str_getcsv removed (as this function needs PHP 5.3.0 minimum).gettext (in Cart and Shipping Calculator).text type are available.Empty cart button. Suggested by Patryk.init. That lets set "priority higher than maximum".
This caused Call for Price not to work properly with other similar plugins installed. Reported by Patryk.FR_fr French translation updated. Translated by Jean-Marc.[wcjp_list_attribute] shortcode.
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.
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.
Shortcode has visibility parameter which gives the possibility to show shortcode's product info to admin only.%stock_quantity% WooJetpack Shortcode added.the_content filter added to result. Now shortcodes will be displayed properly.date function changed to date_i18n. Suggested in https://wordpress.org/support/topic/pdf-invoices-date-bug
Changes affected the Orders and PDF Invoices features (this covers request from Jean-Marc for international date formats in PDF Invoices).wp_update_post function,table).table).FR_fr translation updated by Jean-Marc Schreiber.add after price, add before price, replace in price.
Remove from price code also have been moved (and now in one place with all Global Labels) - before that it was called multiple times, fixed.FR_fr translation added. Translation by Jean-Marc Schreiber.%total_sales% fixed and enabled.%total_sales% is temporary disabled.
This was causing "PHP Parse error" on some servers (PHP 5.3), now fixed. Reported by Xavier.
Also reported in https://wordpress.org/support/topic/parse-error-syntax-error-unexpected-expecting-2date function, so most of PHP date formats can be used.
Visit PHP date function page for more information on valid date formats.
The only exception is using \ symbol in date format, as this symbol will be excluded from date (that is because of WooCommerce default option saving mechanism).textarea instead of text option type. Now it is possible to add tags (e.g. <span class="your_class"></span>) to customers messages..html file extension was wrongly added to PDF. Suggested by Pete (reported from Safari, Mac).prices_filters array.call_user_func_array() warning, fixed. Suggested by Andrew.textarea instead of <input type="text">.postbox added instead of simple form.Order Shipping Price position in Totals on admin settings page, fixed.