{"id":380116,"date":"2026-10-04T14:52:48","date_gmt":"2026-10-04T14:52:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/asari-calculators\/"},"modified":"2026-10-04T15:47:18","modified_gmt":"2026-10-04T15:47:18","slug":"asari-calculators","status":"publish","type":"plugin","link":"https:\/\/nl.wordpress.org\/plugins\/asari-calculators\/","author":23578743,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.2","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"ASARI Calculators","header_author":"ASARI","header_description":"Spreadsheet-driven calculators that bind cell values to Contact Form 7 form fields.","assets_banners_color":"cbc9ee","last_updated":"2026-10-04 15:47:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/asaricrm.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"asaricrm","date":"2026-10-04 15:44:12","revision":3727576},"1.0.1":{"tag":"1.0.1","author":"asaricrm","date":"2026-10-04 15:47:18","revision":3727580}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3727533,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3727533,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3727533,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3727533,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3727533,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3727533,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3727533,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3727533,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3727533,"resolution":"4","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Calculator editor with the example loan calculator: a grid of values and formulas, the formula bar with the calculated value, and the Contact Form 7 shortcode with a Copy button.","2":"The Contact Form 7 form of the example: fields are bound to cells with <code>b2-edit<\/code> and <code>b7-read<\/code> classes inside the calculator wrapper.","3":"The calculator on a page: results update as the visitor types and are sent with the form.","4":"A second calculator with an <code>IF<\/code> formula that returns text, used to fill a read field."}},"plugin_section":[],"plugin_tags":[716,1152,601,25669,9471],"plugin_category":[42,59],"plugin_contributors":[284348],"plugin_business_model":[],"class_list":["post-380116","plugin","type-plugin","status-publish","hentry","plugin_tags-calculator","plugin_tags-contact-form-7","plugin_tags-forms","plugin_tags-formulas","plugin_tags-spreadsheet","plugin_category-contact-forms","plugin_category-utilities-and-tools","plugin_contributors-asaricrm","plugin_committers-asaricrm"],"banners":{"banner":"https:\/\/ps.w.org\/asari-calculators\/assets\/banner-772x250.jpg?rev=3727533","banner_2x":"https:\/\/ps.w.org\/asari-calculators\/assets\/banner-1544x500.jpg?rev=3727533","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/asari-calculators\/assets\/icon.svg?rev=3727533","icon":"https:\/\/ps.w.org\/asari-calculators\/assets\/icon.svg?rev=3727533","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/asari-calculators\/assets\/screenshot-1.png?rev=3727533","caption":"Calculator editor with the example loan calculator: a grid of values and formulas, the formula bar with the calculated value, and the Contact Form 7 shortcode with a Copy button."},{"src":"https:\/\/ps.w.org\/asari-calculators\/assets\/screenshot-2.png?rev=3727533","caption":"The Contact Form 7 form of the example: fields are bound to cells with <code>b2-edit<\/code> and <code>b7-read<\/code> classes inside the calculator wrapper."},{"src":"https:\/\/ps.w.org\/asari-calculators\/assets\/screenshot-3.png?rev=3727533","caption":"The calculator on a page: results update as the visitor types and are sent with the form."},{"src":"https:\/\/ps.w.org\/asari-calculators\/assets\/screenshot-4.png?rev=3727533","caption":"A second calculator with an <code>IF<\/code> formula that returns text, used to fill a read field."}],"raw_content":"<!--section=description-->\n<p><a href=\"https:\/\/asaricrm.com\/\">ASARI<\/a> Calculators adds a spreadsheet editor to WordPress and connects it to the Contact Form 7 forms you already use, so you do not need to rebuild them in a separate form builder. You model the calculation the way you would in a spreadsheet: values and formulas such as <code>=ROUND(B2*B3,2)<\/code> or <code>=IF(B4&gt;0,B2\/B4,0)<\/code> in a grid of cells, edited under <strong>ASARI Calculators<\/strong> in the admin menu. Then you bind cells to form fields by adding a class such as <code>b2-edit<\/code> to an input or <code>b7-read<\/code> to a result. Results update live as visitors type, are sent in the Contact Form 7 email, and follow Polish and English number formats.<\/p>\n\n<p>The plugin requires <a href=\"https:\/\/wordpress.org\/plugins\/contact-form-7\/\">Contact Form 7<\/a>. Until Contact Form 7 is installed and active, an admin notice is shown and calculators are not loaded on the site.<\/p>\n\n<h4>Example calculator<\/h4>\n\n<p>The <strong>Add example calculator<\/strong> button at the top of the ASARI Calculators screen creates a ready-made loan or lease instalment calculator (amount, annual interest rate, number of months \u2192 monthly instalment, total cost, total interest) together with its Contact Form 7 form. The calculator then shows the form shortcode to paste into a page, with a Copy button and a link to edit the form. Labels are created in the site language. The button is shown until the example calculator exists.<\/p>\n\n<h4>Connecting a calculator to a form<\/h4>\n\n<p>Mark the form with the calculator ID, in one of these ways:<\/p>\n\n<ul>\n<li>add the <code>html_class<\/code> attribute to the form shortcode: <code>[contact-form-7 id=\"123\" html_class=\"asari-calculator-asari-calc-1\"]<\/code>,<\/li>\n<li>or wrap the fields in the form template: <code>&lt;div class=\"asari-calculator-asari-calc-1\"&gt; ... &lt;\/div&gt;<\/code>,<\/li>\n<li>or, outside Contact Form 7 markup, use <code>data-asari-calculator=\"asari-calc-1\"<\/code> on a parent element in the page content.<\/li>\n<\/ul>\n\n<p>Then bind fields or text elements to cells with classes (in Contact Form 7 tags use the <code>class:<\/code> option, e.g. <code>[number salary class:b3-edit]<\/code>):<\/p>\n\n<ul>\n<li><code>b3-edit<\/code> writes the field value into cell B3 before calculation.<\/li>\n<li><code>b27-read<\/code> displays the calculated value of cell B27. Read fields are made read-only, so their values are still sent with the form.<\/li>\n<li>A read list, radio or checkbox selects the option that matches the result, either the same text (<code>High<\/code>) or a label that reads as the same number (<code>Yes - ...<\/code> for 1, <code>1,67%<\/code> for 1.67). The other options are locked, and the selected one is sent with the form. A single checkbox is checked when the result is not 0.<\/li>\n<\/ul>\n\n<p>Results update live while visitors fill in the form, and the calculator also recalculates when the page loads, immediately before the form is submitted and after Contact Form 7 resets the form.<\/p>\n\n<h4>Formulas<\/h4>\n\n<p>A cell starting with <code>=<\/code> is a formula. Supported syntax:<\/p>\n\n<ul>\n<li>cell references and ranges: <code>B1<\/code>, <code>B1:B4<\/code> (case-insensitive),<\/li>\n<li>numbers and text in double quotes: <code>12.5<\/code>, <code>\"yes\"<\/code> (write <code>\"\"<\/code> for a quote inside text),<\/li>\n<li>arithmetic: <code>+ - * \/ % ^<\/code>,<\/li>\n<li>comparisons: <code>= &lt;&gt; &lt; &gt; &lt;= &gt;=<\/code> (also <code>==<\/code> and <code>!=<\/code>),<\/li>\n<li>logic: <code>&amp;&amp;<\/code>, <code>||<\/code>, <code>!<\/code>, <code>TRUE<\/code>, <code>FALSE<\/code>,<\/li>\n<li>functions: <code>SUM<\/code>, <code>AVERAGE<\/code> (<code>AVG<\/code>), <code>MIN<\/code>, <code>MAX<\/code>, <code>ROUND<\/code>, <code>ABS<\/code>, <code>CEIL<\/code>, <code>FLOOR<\/code>, <code>IF<\/code>,<\/li>\n<li>argument separator: <code>,<\/code> or <code>;<\/code>.<\/li>\n<\/ul>\n\n<p>Examples: <code>=B1*2<\/code>, <code>=SUM(B1:B4)<\/code>, <code>=ROUND(B1\/12,2)<\/code>, <code>=IF(B1&gt;0,B1,0)<\/code>, <code>=IF(B3&gt;5000,\"high\",\"low\")<\/code>.<\/p>\n\n<p>Formulas are evaluated by the plugin's own parser; they cannot run JavaScript. A formula that cannot be parsed shows an empty value.<\/p>\n\n<h4>Numbers in Polish and English<\/h4>\n\n<p>Field values are read in both Polish and English formats: <code>1 000,50<\/code>, <code>1.000,50<\/code> and <code>10,000.50<\/code> all work, a label such as <code>Basic - 250 z\u0142<\/code> becomes 250, <code>-5 z\u0142<\/code> becomes -5 and <code>1,67%<\/code> becomes 1.67. Labels starting with <code>Tak<\/code> \/ <code>Yes<\/code> \/ <code>True<\/code> become 1, and <code>Nie<\/code> \/ <code>Bez<\/code> \/ <code>No<\/code> \/ <code>False<\/code> become 0. A single separator followed by three digits (<code>1,234<\/code>) follows the site language: on a Polish site <code>1,234<\/code> is 1.234 and <code>1.234<\/code> is 1234, on an English site the other way round. Number inputs are always read exactly.<\/p>\n\n<p>Results in text fields and elements use the site decimal point, e.g. <code>7147,39<\/code> on a Polish site; number inputs always get <code>7147.39<\/code>. Use the <code>asari_calculators_number_format<\/code> filter to add a thousands separator, e.g. <code>array( 'decimal' =&gt; ',', 'thousands' =&gt; ' ' )<\/code> for <code>7 147,39<\/code>.<\/p>\n\n<p>The plugin includes a Polish translation (used on WordPress 6.8 and later); WordPress.org language packs take precedence when available.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate Contact Form 7.<\/li>\n<li>Upload the <code>asari-calculators<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install the plugin from the Plugins screen, then activate it.<\/li>\n<li>Go to <strong>ASARI Calculators<\/strong> and click <strong>Add example calculator<\/strong>, or build your own calculator and save it.<\/li>\n<li>Mark a Contact Form 7 form with the calculator ID and add <code>bN-edit<\/code> \/ <code>bN-read<\/code> classes to its fields.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20load%20scripts%20on%20every%20page%3F\"><h3>Does the plugin load scripts on every page?<\/h3><\/dt>\n<dd><p>No. The frontend script and style load only on requests that render a marked Contact Form 7 form or contain a calculator marker in the page content, and only the calculators used there are printed into the page.<\/p><\/dd>\n<dt id=\"can%20results%20be%20calculated%20only%20when%20the%20form%20is%20submitted%3F\"><h3>Can results be calculated only when the form is submitted?<\/h3><\/dt>\n<dd><p>Yes. Return <code>false<\/code> from the <code>asari_calculators_live_recalculation<\/code> filter; the calculator then recalculates only on page load and before submission.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20calculators%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens to my calculators when I delete the plugin?<\/h3><\/dt>\n<dd><p>Deleting the plugin from the Plugins screen removes all calculators (the <code>asari_calculators_data<\/code> option, on every site of a multisite network). Deactivating keeps them.<\/p><\/dd>\n<dt id=\"my%20calculator%20is%20inserted%20in%20a%20way%20the%20plugin%20does%20not%20detect.\"><h3>My calculator is inserted in a way the plugin does not detect.<\/h3><\/dt>\n<dd><p>Use the <code>asari_calculators_enqueue_all_frontend_calculators<\/code> filter (return <code>true<\/code>) to load all calculators, or <code>asari_calculators_frontend_calculators<\/code> to choose them for the current page.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Changed: The plugin description links to the ASARI website (asaricrm.com).<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Added: <strong>Add example calculator<\/strong> button that creates a loan instalment calculator with its Contact Form 7 form; calculators linked to a form show its shortcode with a Copy button and an Edit form link.<\/li>\n<li>Added: Contact Form 7 is a required plugin (<code>Requires Plugins<\/code> header); when it is missing or inactive, an admin notice links to install or activate it and calculators are not loaded on the frontend.<\/li>\n<li>Added: Calculators load automatically for Contact Form 7 forms inserted with the shortcode or block, marked with <code>html_class<\/code> or a wrapper element in the form template.<\/li>\n<li>Added: The browser warns before leaving the ASARI Calculators screen with unsaved changes (edits, added or deleted calculators); saving does not trigger the warning.<\/li>\n<li>Fixed: Deleting the last calculator and saving now leaves the list empty instead of bringing back the default calculator.<\/li>\n<li>Fixed: Read lists, radios and checkboxes select the matching option and are sent with the form (they were disabled and missing from Contact Form 7 emails, and radio and checkbox groups were replaced by plain text).<\/li>\n<li>Fixed: Saving a calculator that contained a double quote no longer replaces all calculators with the default one; unreadable submitted data now keeps the previous calculators and shows an error.<\/li>\n<li>Fixed: Formulas with <code>&lt;<\/code>, <code>&lt;&gt;<\/code> and <code>&lt;=<\/code> are saved unchanged instead of being stripped or HTML-encoded.<\/li>\n<li>Security: Formulas are evaluated by a dedicated parser instead of being compiled to JavaScript, so a formula can no longer execute code in visitors' browsers.<\/li>\n<li>Added: Live recalculation while visitors edit bound fields (can be turned off with the <code>asari_calculators_live_recalculation<\/code> filter); results are also restored after Contact Form 7 resets the form.<\/li>\n<li>Added: <code>uninstall.php<\/code> removes the calculators when the plugin is deleted.<\/li>\n<li>Added: Polish and English number formats in field values (<code>1 000,50<\/code>, <code>1.000,50<\/code>, <code>10,000.50<\/code>, <code>-5 z\u0142<\/code>, yes\/no words), results shown with the site decimal point, and the <code>asari_calculators_number_format<\/code> filter.<\/li>\n<li>Added: Translatable editor interface and a bundled Polish translation.<\/li>\n<li>Changed: One shared formula engine for the editor and the frontend; cell references are case-insensitive, <code>IF<\/code> evaluates only the selected branch, text in formulas may contain non-ASCII letters, comparisons return 1 \/ 0 (usable in other formulas) and a bare range outside a function is an error.<\/li>\n<\/ul>\n\n<h4>0.1.0 \u2013 0.1.3<\/h4>\n\n<ul>\n<li>Internal development releases, not published.<\/li>\n<\/ul>","raw_excerpt":"Build calculators like a spreadsheet, with Excel-style formulas in a grid, and connect them to your existing Contact Form 7 forms with CSS classes.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/380116","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=380116"}],"author":[{"embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/asaricrm"}],"wp:attachment":[{"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=380116"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=380116"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=380116"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=380116"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=380116"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/nl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=380116"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}