Flexible Quantity – Measurement Price Calculator for WooCommerce Security & Risk Analysis

wordpress.org/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce

WooCommerce price calculator. Sell products by unit, dimension or volume. Calculate quantity increment and final price for a new unit of measure.

2K active installs v2.3.15 PHP 7.4+ WP 6.4+ Updated Mar 7, 2026
measurement-priceprice-calculatorproduct-quantityquantity-incrementunit-of-measure
100
A · Safe
CVEs total0
Unpatched0
Last CVENever
Safety Verdict

Is Flexible Quantity – Measurement Price Calculator for WooCommerce Safe to Use in 2026?

Generally Safe

Score 100/100

Flexible Quantity – Measurement Price Calculator for WooCommerce has no known CVEs and is actively maintained. It's a solid choice for most WordPress installations.

No known CVEs Updated 27d ago
Risk Assessment

The plugin "flexible-quantity-measurement-price-calculator-for-woocommerce" v2.3.15 presents a mixed security posture. On the positive side, it has no known vulnerabilities (CVEs) and demonstrates good practices like utilizing prepared statements for a majority of its SQL queries and implementing nonce and capability checks on its entry points. The attack surface appears minimal and protected, with no REST API routes or cron events found, and the identified AJAX handler and shortcode are not explicitly listed as unprotected.

However, the static analysis reveals several significant concerns. The presence of dangerous functions such as 'assert', 'unserialize', 'proc_open', and 'shell_exec' is a red flag, indicating potential avenues for code execution or deserialization vulnerabilities if input is not rigorously sanitized. Furthermore, the taint analysis highlights two flows with unsanitized paths, rated as high severity, which could lead to the exploitation of these dangerous functions or other injection-like vulnerabilities. The fact that only 40% of output is properly escaped also raises concerns about potential cross-site scripting (XSS) vulnerabilities.

The plugin's vulnerability history is a strength, showing no recorded CVEs. This suggests either a historically secure codebase or potentially limited discovery of vulnerabilities, rather than an inherent guarantee of current security. In conclusion, while the plugin has a clean history and some good security implementations, the identified dangerous functions, unsanitized taint flows, and insufficient output escaping warrant careful attention and remediation.

Key Concerns

  • High severity unsanitized taint flows
  • Presence of dangerous functions (unserialize, shell_exec, etc.)
  • Low percentage of properly escaped output
  • Unsanitized paths in taint analysis
Vulnerabilities
None known

Flexible Quantity – Measurement Price Calculator for WooCommerce Security Vulnerabilities

No known vulnerabilities — this is a good sign.
Code Analysis
Analyzed Mar 16, 2026

Flexible Quantity – Measurement Price Calculator for WooCommerce Code Analysis

Dangerous Functions
13
Raw SQL Queries
3
9 prepared
Unescaped Output
107
70 escaped
Nonce Checks
5
Capability Checks
4
File Operations
19
External Requests
4
Bundled Libraries
0

Dangerous Functions Found

assertassert($bin !== \false);vendor_prefixed\brick\math\src\BigInteger.php:916
assertassert($denominator !== null);vendor_prefixed\brick\math\src\BigNumber.php:65
assertassert($q !== null);vendor_prefixed\brick\math\src\Internal\Calculator\BcMathCalculator.php:71
assertassert($r !== null);vendor_prefixed\brick\math\src\Internal\Calculator\BcMathCalculator.php:72
assertassert(is_int($q));vendor_prefixed\brick\math\src\Internal\Calculator\NativeCalculator.php:155
assertassert($carry === 0);vendor_prefixed\brick\math\src\Internal\Calculator\NativeCalculator.php:341
assertassert(self::$logger !== null);vendor_prefixed\doctrine\deprecations\src\Deprecation.php:150
unserializereturn unserialize($serializedString);vendor_prefixed\doctrine\instantiator\src\Doctrine\Instantiator\Instantiator.php:112
unserializeunserialize($serializedString);vendor_prefixed\doctrine\instantiator\src\Doctrine\Instantiator\Instantiator.php:171
proc_open$this->process = proc_open($this->command, static::DESCRIPTOR_SPEC, $this->pipes, $this->cwd);vendor_prefixed\monolog\monolog\src\Monolog\Handler\ProcessHandler.php:104
shell_exec$branches = shell_exec('git branch -v --no-abbrev');vendor_prefixed\monolog\monolog\src\Monolog\Processor\GitProcessor.php:60
shell_exec$result = explode(' ', trim((string) shell_exec('hg id -nb')));vendor_prefixed\monolog\monolog\src\Monolog\Processor\MercurialProcessor.php:59
unserializereturn unserialize($this->container->get($id));vendor_prefixed\wpdesk\wp-persistence\src\Decorator\SerializedPersistentContainer.php:24

SQL Query Safety

75% prepared12 total queries

Output Escaping

40% escaped177 total outputs
Data Flows
2 unsanitized

Data Flow Analysis

4 flows2 with unsanitized paths
processAjaxNoticeDismiss (vendor_prefixed\wpdesk\wp-notice\src\WPDesk\Notice\AjaxHandler.php:72)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface

Flexible Quantity – Measurement Price Calculator for WooCommerce Attack Surface

Entry Points2
Unprotected0

AJAX Handlers 1

authwp_ajax_wpdesk_notice_dismissvendor_prefixed\wpdesk\wp-notice\src\WPDesk\Notice\AjaxHandler.php:42

Shortcodes 1

[fq_price_calculator_pricing_table] vendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Shortcodes.php:17
WordPress Hooks 89
actionwoocommerce_initsrc\Plugin.php:125
filterwoocommerce_stock_amountsrc\Plugin.php:129
actionadmin_noticessrc\Plugin.php:183
actionwoocommerce_before_add_to_cart_buttonvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Page\ProductPage.php:30
actionwoocommerce_single_variationvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Page\ProductPage.php:32
actionwp_enqueue_scriptsvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Page\ProductPageScripts.php:30
actioninitvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\PostType\FQTemplateType.php:11
filterwoocommerce_get_price_htmlvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Prices\PriceHtml.php:20
filterwoocommerce_empty_price_htmlvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Prices\PriceHtml.php:21
filterwoocommerce_order_item_get_quantityvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Quantity\OrderQuantityModifier.php:21
filterwoocommerce_quantity_input_step_adminvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Quantity\OrderQuantityModifier.php:22
actionadmin_menuvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\CustomUnitsPage.php:48
actionadmin_enqueue_scriptsvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\CustomUnitsPage.php:49
actionwoocommerce_product_write_panel_tabsvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\ProductPage.php:33
actionwoocommerce_product_data_panelsvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\ProductPage.php:34
actionwoocommerce_product_options_pricingvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\ProductPage.php:35
actionadmin_enqueue_scriptsvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\ProductPageScripts.php:17
actionadmin_menuvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\SupportPage.php:51
actionadmin_enqueue_scriptsvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\SupportPage.php:52
filterfcm/custom_unitsvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\TemplatePageDisplayer.php:32
actionadmin_enqueue_scriptsvendor_prefixed\wpdesk\flexible-quantity-core\src\Hookable\Settings\TemplatePageScripts.php:27
filterwoocommerce_add_cart_item_datavendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:31
filterwoocommerce_add_to_cart_validationvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:33
filterwoocommerce_get_cart_item_from_sessionvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:35
actionwc_dynamic_pricing_adjusted_pricevendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:37
filterwoocommerce_get_item_datavendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:39
actionwoocommerce_checkout_create_order_line_itemvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:40
filterwoocommerce_order_item_quantityvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:42
filterwoocommerce_add_cart_itemvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:43
filterwoocommerce_cart_contents_countvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:45
filterwoocommerce_order_again_cart_item_datavendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:47
actionwoocommerce_add_to_cartvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:49
actionwoocommerce_new_order_itemvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Cart.php:410
actioncatalog_visibility_after_alternate_add_to_cart_buttonvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Compatibility.php:48
filterwoocommerce_gpf_feed_itemvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Compatibility.php:52
filterwc_fc_price_calculator_product_loop_urlvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Compatibility.php:56
filterwoocommerce_order_item_get__reduced_stockvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Compatibility.php:59
filterwoocommerce_prevent_adjust_line_item_product_stockvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Compatibility.php:61
actionbefore_woocommerce_initvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Compatibility.php:65
filterwoocommerce_stock_amountvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:26
filterwoocommerce_get_availabilityvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:27
filterwoocommerce_cart_product_not_enough_stock_messagevendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:28
filterwoocommerce_cart_item_quantityvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:29
filterwoocommerce_widget_cart_item_quantityvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:30
filterwoocommerce_checkout_cart_item_quantityvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:32
filterwoocommerce_order_item_quantityvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:33
filterwoocommerce_order_get_itemsvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:34
filterwoocommerce_cart_shipping_packagesvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:35
filterwoocommerce_backordered_item_meta_namevendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:38
filterwoocommerce_backordered_item_meta_namevendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:40
filterwoocommerce_reduce_order_stock_quantityvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:43
filterwoocommerce_restore_order_stock_quantityvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:44
filterwoocommerce_quantity_input_step_adminvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\Inventory.php:47
filterwoocommerce_loop_add_to_cart_linkvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductLoop.php:22
filterwoocommerce_product_is_visiblevendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:30
filterwoocommerce_is_purchasablevendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:32
filterwoocommerce_variation_is_visiblevendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:33
filterwoocommerce_available_variationvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:37
actionwp_print_stylesvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:39
filterwoocommerce_product_is_on_salevendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:41
actionwoocommerce_before_template_partvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:43
actionwoocommerce_after_template_partvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:44
filterwoocommerce_quantity_input_maxvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:46
filterfq_price_calculator_measurement_precisionvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:48
filterwoocommerce_get_price_htmlvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:57
filterwoocommerce_empty_price_htmlvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:58
filterwoocommerce_get_price_suffixvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:174
filterwoocommerce_get_price_suffixvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:208
filterwoocommerce_format_weightvendor_prefixed\wpdesk\flexible-quantity-core\src\WooCommerce\ProductPage.php:442
actionwp_dashboard_setupvendor_prefixed\wpdesk\ltv-dashboard-widget\src\DashboardWidget.php:102
actionadmin_enqueue_scriptsvendor_prefixed\wpdesk\wp-builder\src\Plugin\AbstractPlugin.php:148
actionwp_enqueue_scriptsvendor_prefixed\wpdesk\wp-builder\src\Plugin\AbstractPlugin.php:149
actionadmin_enqueue_scriptsvendor_prefixed\wpdesk\wp-notice\src\WPDesk\Notice\AjaxHandler.php:41
actionadmin_noticesvendor_prefixed\wpdesk\wp-notice\src\WPDesk\Notice\Notice.php:144
actionadmin_footervendor_prefixed\wpdesk\wp-notice\src\WPDesk\Notice\Notice.php:145
filterwp_autoloader_loader_loaders_to_loadvendor_prefixed\wpdesk\wp-plugin-flow-common\src\Initialization\PluginDisablerByFileTrait.php:45
filterwp_autoloader_loader_loaders_to_createvendor_prefixed\wpdesk\wp-plugin-flow-common\src\Initialization\PluginDisablerByFileTrait.php:46
actionplugins_loadedvendor_prefixed\wpdesk\wp-plugin-flow-common\src\Initialization\Simple\SimplePaidStrategy.php:58
actionplugins_loadedvendor_prefixed\wpdesk\wp-plugin-flow-common\src\PluginBootstrap.php:81
actionbefore_woocommerce_initvendor_prefixed\wpdesk\wp-plugin-flow-common\src\PluginBootstrap.php:88
actionactivated_pluginvendor_prefixed\wpdesk\wp-plugin-flow-common\src\PluginBootstrap.php:102
filterdoing_it_wrong_trigger_errorvendor_prefixed\wpdesk\wp-plugin-flow-common\src\PluginBootstrap.php:123
actionadmin_enqueue_scriptsvendor_prefixed\wpdesk\wp-wpdesk-marketing\src\Boxes\Assets.php:16
actionadmin_enqueue_scriptsvendor_prefixed\wpdesk\wp-wpdesk-marketing\src\Boxes\Assets.php:30
actionadmin_enqueue_scriptsvendor_prefixed\wpdesk\wp-wpdesk-tracker\src\PSR\WPDesk\Tracker\Assets.php:28
actionadmin_menuvendor_prefixed\wpdesk\wp-wpdesk-tracker\src\PSR\WPDesk\Tracker\OptInPage.php:35
actionadmin_initvendor_prefixed\wpdesk\wp-wpdesk-tracker\src\PSR\WPDesk\Tracker\OptInPage.php:36
actionadmin_noticesvendor_prefixed\wpdesk\wp-wpdesk-tracker\src\PSR\WPDesk\Tracker\OptOut.php:28
filterplugin_row_metavendor_prefixed\wpdesk\wp-wpdesk-tracker\src\PSR\WPDesk\Tracker\PluginActionLinks.php:36
Maintenance & Trust

Flexible Quantity – Measurement Price Calculator for WooCommerce Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedMar 7, 2026
PHP min version7.4
Downloads83K

Community Trust

Rating86/100
Number of ratings9
Active installs2K
Developer Profile

Flexible Quantity – Measurement Price Calculator for WooCommerce Developer Profile

wpdesk

23 plugins · 127K total installs

78
trust score
Avg Security Score
99/100
Avg Patch Time
135 days
View full developer profile
Detection Fingerprints

How We Detect Flexible Quantity – Measurement Price Calculator for WooCommerce

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/js/front.js/wp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/css/main.css/wp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/js/custom-units-page.js/wp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/js/product-options.js
Script Paths
wp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/js/front.jswp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/js/custom-units-page.jswp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/js/product-options.js
Version Parameters
/wp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/js/front.js?ver=/wp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/css/main.css?ver=/wp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/js/custom-units-page.js?ver=/wp-content/plugins/flexible-quantity-measurement-price-calculator-for-woocommerce/vendor_prefixed/wpdesk/flexible-quantity-core/js/product-options.js?ver=

HTML / DOM Fingerprints

CSS Classes
fq-product-options
HTML Comments
THIS VARIABLE CAN BE CHANGED AUTOMATICALLY
Data Attributes
data-fq_product_iddata-fq_product_type
JS Globals
fq_price_calculator_params
FAQ

Frequently Asked Questions about Flexible Quantity – Measurement Price Calculator for WooCommerce