{"id":375627,"date":"2026-09-28T17:11:50","date_gmt":"2026-09-28T17:11:50","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/aldono-product-options-for-woocommerce\/"},"modified":"2026-09-29T10:30:46","modified_gmt":"2026-09-29T10:30:46","slug":"aldono","status":"publish","type":"plugin","link":"https:\/\/it.wordpress.org\/plugins\/aldono\/","author":108511,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1.2","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Aldono - Product Options for WooCommerce","header_author":"WPPoland.com","header_description":"Let customers add paid or free options (text, checkbox, select) to products before adding to cart.","assets_banners_color":"e1e4e3","last_updated":"2026-09-29 10:30:46","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/plogins.com\/plogins-addons\/","header_author_uri":"https:\/\/wppoland.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":92,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.3":{"tag":"1.1.3","author":"motylanogha","date":"2026-09-28 16:53:55","revision":3717625},"1.2.0":{"tag":"1.2.0","author":"motylanogha","date":"2026-09-29 10:30:46","revision":3718747}},"upgrade_notice":{"1.1.3":"<p>Security release. Default installations are exposed only to forged add-to-cart requests carrying add-on values. Update, nothing else to do.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3717624,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3717624,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3717624,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3717624,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3718983,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"Plogins Add-Ons - Product Options for WooCommerce, Live Preview\",\"author\":\"WPPoland\"},\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=addons-settings\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php require '\\\/wordpress\\\/wp-load.php';\\ndelete_transient('_wc_activation_redirect');\\nupdate_option('woocommerce_onboarding_profile', array('skipped'=>true, 'completed'=>true));\\nif (function_exists('wc_get_product_id_by_sku') && class_exists('WC_Product_Simple')) {\\n  $demo = array('Trailwind Running Shoes'=>89, 'Harbor Leather Wallet'=>39, 'Amber Soy Candle'=>18, 'Coastal Pullover Hoodie'=>49, 'Field Canvas Backpack'=>59, 'Matte Ceramic Mug'=>14);\\n  foreach ($demo as $name=>$price) {\\n    $sku = 'demo-'.sanitize_title($name);\\n    if (wc_get_product_id_by_sku($sku)) { continue; }\\n    $p = new WC_Product_Simple();\\n    $p->set_name($name); $p->set_sku($sku); $p->set_regular_price((string)$price);\\n    $p->set_status('publish'); $p->set_catalog_visibility('visible');\\n    $p->save();\\n  }\\n}\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"aldono\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":[],"tagged_versions":["1.1.3","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3717624,"resolution":"1","location":"assets","locale":"","width":1600,"height":1200},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3717624,"resolution":"2","location":"assets","locale":"","width":1600,"height":1200},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3717624,"resolution":"3","location":"assets","locale":"","width":1600,"height":1200}},"screenshots":{"1":"On the storefront.","2":"Settings in the WordPress admin.","3":"On a mobile device."}},"plugin_section":[],"plugin_tags":[64264,17536,149840,155785,286],"plugin_category":[45],"plugin_contributors":[264912],"plugin_business_model":[],"class_list":["post-375627","plugin","type-plugin","status-publish","hentry","plugin_tags-custom-product-fields","plugin_tags-extra-fields","plugin_tags-product-addons","plugin_tags-product-options","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-motylanogha","plugin_committers-motylanogha"],"banners":{"banner":"https:\/\/ps.w.org\/aldono\/assets\/banner-772x250.png?rev=3717624","banner_2x":"https:\/\/ps.w.org\/aldono\/assets\/banner-1544x500.png?rev=3717624","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/aldono\/assets\/icon-128x128.png?rev=3717624","icon_2x":"https:\/\/ps.w.org\/aldono\/assets\/icon-256x256.png?rev=3717624","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/aldono\/assets\/screenshot-1.png?rev=3717624","caption":"On the storefront."},{"src":"https:\/\/ps.w.org\/aldono\/assets\/screenshot-2.png?rev=3717624","caption":"Settings in the WordPress admin."},{"src":"https:\/\/ps.w.org\/aldono\/assets\/screenshot-3.png?rev=3717624","caption":"On a mobile device."}],"raw_content":"<!--section=description-->\n<p>Aldono lets store owners offer WooCommerce product options, product add-ons and custom product fields that customers pick before adding a product to the cart: gift wrapping, an engraving message, an extended warranty or a colour choice.<\/p>\n\n<p>For each product you define a list of add-ons in the WooCommerce product editor. Every add-on has a label, a field type, an optional required flag, and an optional price.<\/p>\n\n<ul>\n<li><strong>Field types<\/strong>, a text line, a multi-line textarea, a number, a date picker, a checkbox, a select drop-down, or a group of radio buttons.<\/li>\n<li><strong>Text limits<\/strong>, set minimum and maximum character lengths for text and textarea product options.<\/li>\n<li><strong>Checked input<\/strong>, a number must be numeric, a date must be a real calendar date, and a select or radio must post one of its own choices.<\/li>\n<li><strong>Price deltas<\/strong>, give an add-on (or each select or radio choice) a price; the amount is added to the cart line total automatically.<\/li>\n<li><strong>Free or paid<\/strong>, leave the price at zero for free options such as a personalised message.<\/li>\n<li><strong>Cart &amp; order display<\/strong>, the customer's choices appear in the cart, at checkout, and on the order.<\/li>\n<li><strong>Display settings<\/strong>, choose the group heading, show or hide option prices, toggle the required-field asterisk, and wrap the options in a bordered card, all from the Add-Ons settings page.<\/li>\n<\/ul>\n\n<p>Add-on definitions are stored as standard product meta, no custom database tables, so the plugin itself stays small and fast.<\/p>\n\n<p>Settings live under <strong>WooCommerce &gt; Add-Ons<\/strong>. Removing the plugin cleans up its own options; your per-product definitions are kept as product meta so re-installing restores them.<\/p>\n\n<p>The code is developed in the open at <a href=\"https:\/\/github.com\/wppoland\/plogins-addons\">github.com\/wppoland\/plogins-addons<\/a>, that's the place to report a bug or suggest a field type you'd like to see.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>Aldono does not connect to any external services. It sends no data off your site and loads no remote scripts, fonts or trackers, its admin and storefront CSS\/JS are served from the plugin folder on your own server. Your add-on definitions are stored as product meta (<code>_addons_definitions<\/code>) and the display settings in a single option (<code>addons_settings<\/code>), all kept in your WordPress database.<\/p>\n\n<h3>Translations<\/h3>\n\n<p>Aldono is fully translatable and ships the <code>aldono.pot<\/code> template. Translations are delivered by WordPress.org language packs from translate.wordpress.org, which is where Polish, German and Spanish are being contributed; the package itself carries no compiled translation files.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/aldono<\/code>, or install via Plugins &gt; Add New.<\/li>\n<li>Activate it. WooCommerce must be active.<\/li>\n<li>Edit a product, open the <strong>Add-Ons<\/strong> tab in the Product data panel, and add your options.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"documentation%20and%20links\"><h3>Documentation and links<\/h3><\/dt>\n<dd><ul>\n<li><strong>Documentation<\/strong>: <a href=\"https:\/\/plogins.com\/plogins-addons\/docs\/\">plogins.com\/plogins-addons\/docs\/<\/a><\/li>\n<li><strong>Plugin page<\/strong>: <a href=\"https:\/\/plogins.com\/plogins-addons\/\">plogins.com\/plogins-addons\/<\/a><\/li>\n<li><strong>Source code<\/strong>: <a href=\"https:\/\/github.com\/wppoland\/plogins-addons\">github.com\/wppoland\/plogins-addons<\/a><\/li>\n<li><strong>Bug reports and feature requests<\/strong>: <a href=\"https:\/\/github.com\/wppoland\/plogins-addons\/issues\">github.com\/wppoland\/plogins-addons\/issues<\/a><\/li>\n<\/ul><\/dd>\n<dt id=\"does%20it%20require%20woocommerce%3F\"><h3>Does it require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce must be installed and active.<\/p><\/dd>\n<dt id=\"where%20do%20customers%20see%20the%20options%3F\"><h3>Where do customers see the options?<\/h3><\/dt>\n<dd><p>On the single product page, just above the Add to cart button. Their selections then show in the cart, at checkout, and on the order.<\/p><\/dd>\n<dt id=\"what%20field%20types%20are%20included%3F\"><h3>What field types are included?<\/h3><\/dt>\n<dd><p>The free version includes text, textarea, number and date fields, checkboxes, select drop-downs and radio buttons. Each field can be free or add a price to the cart line; a select or radio can price each choice separately.<\/p><\/dd>\n<dt id=\"can%20a%20product%20option%20change%20the%20price%3F\"><h3>Can a product option change the price?<\/h3><\/dt>\n<dd><p>Yes. Add a price to the row itself or to individual select or radio choices, and Aldono adds that amount to the WooCommerce cart line.<\/p><\/dd>\n<dt id=\"can%20i%20make%20a%20product%20option%20required%3F\"><h3>Can I make a product option required?<\/h3><\/dt>\n<dd><p>Yes. Tick the Required checkbox for an option, and the product cannot be added to the cart until the shopper completes it.<\/p><\/dd>\n<dt id=\"can%20i%20limit%20text%20option%20length%3F\"><h3>Can I limit text option length?<\/h3><\/dt>\n<dd><p>Yes. Text and textarea add-ons can have minimum and maximum character limits. The storefront shows a live counter and the server validates the same limits before add to cart.<\/p><\/dd>\n<dt id=\"does%20it%20create%20custom%20database%20tables%3F\"><h3>Does it create custom database tables?<\/h3><\/dt>\n<dd><p>No. Add-on definitions are stored as product meta.<\/p><\/dd>\n<dt id=\"does%20it%20support%20file%20uploads%20or%20conditional%20logic%3F\"><h3>Does it support file uploads or conditional logic?<\/h3><\/dt>\n<dd><p>Those are PRO features. Aldono FREE focuses on fast text, textarea, number, date, checkbox, select and radio product options.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20on%20wordpress%20multisite%3F\"><h3>Does this plugin work on WordPress Multisite?<\/h3><\/dt>\n<dd><p>Yes. This plugin is compatible with WordPress Multisite. Network activate it or activate it on individual sites; each site keeps its own settings and data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>The upgrade notice no longer lists per-character text pricing, which Aldono Pro does not ship.<\/li>\n<li>New field types: Radio (a choice list with a price per choice, like Select), Textarea (multi-line text that keeps its line breaks, with the same minimum and maximum length as Text), Number (must be numeric, adds the row price when filled) and Date (the browser's date picker, must be a real date).<\/li>\n<li>A number or date that does not parse is refused at add to cart with its own message, and a radio choice that is not one of its options is refused like a select.<\/li>\n<li>The choices box in the product editor shows only for Select and Radio, and the character limits only for Text and Textarea.<\/li>\n<li>Character limits are checked only on Text and Textarea fields, so a limit left over from a type change no longer blocks a select or checkbox.<\/li>\n<\/ul>\n\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>The upgrade notice's \"Coming soon\" and \"Get notified\" labels are English source strings for every language; Polish sites used to get their own Polish source text, which translators in other languages then saw untranslated.<\/li>\n<\/ul>\n\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Security (low): the add-on fields on the product page now carry a nonce, and no add-on choice is read from the request unless it verifies. A page cached past the nonce lifetime asks the shopper to reload.<\/li>\n<li>A select choice must be one of the options defined for it and a checkbox must post its own value; anything else is refused at add to cart.<\/li>\n<li>The option definitions posted from the product editor are sanitised as soon as they are read, before any field is validated.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Code comment correction only: the add-on value reader said WooCommerce checks a nonce on add-to-cart. It does not, the form is public, so the comment now says why no nonce is verified. No behaviour change.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>The sidebar upgrade promo now follows the same dismissal as the banner. Dismissing the banner used to leave a full-height advert on the settings screen for good, which is not what the WordPress.org guideline on upgrade prompts means by used with moderation.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Renamed to Aldono. The WordPress.org review team asks a plugin name to lead with a distinctive, coined identifier rather than a generic descriptive word. Aldono is Esperanto for an addition. The text domain follows the name; the stored add-on definitions, the settings and every hook are unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.11<\/h4>\n\n<ul>\n<li>Fixed: the PRO upgrade promo kept selling to people who had already bought the paid edition. Only the banner could be dismissed, so the sidebar promo and the locked feature cards followed a paying customer around for good. The promo now checks whether the paid edition is active and steps aside when it is.<\/li>\n<li>Fixed: arrow glyphs in the admin menu paths, and in the strings handed to translators. An arrow inside a translatable string makes the glyph every translator's problem and changes the layout in any locale that drops it.<\/li>\n<\/ul>\n\n<h4>1.0.10<\/h4>\n\n<ul>\n<li>Fixed: deleting the plugin left the per-user \"dismiss\" flag from the PRO notice in the database. Uninstall now removes it for every user, not just the one who dismissed it.<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Fixed the heading above the product options always printing in English. \"Product options\" was a packaged default rather than a translatable string, so it never reached the translation file and a shop running in Polish, German or Spanish still showed English above the fields. It is now translated with the rest of the plugin, so it follows the site language as soon as a translation for it exists. Translations are delivered by WordPress.org language packs, not bundled in this download, so on a site with no pack for this plugin the heading stays English until one is published.<\/li>\n<li>Your own heading is untouched. Only a heading still set to the exact English default is reset so the translation can take over.<\/li>\n<li>Added a \"Show the heading above the options\" switch. Hiding the heading used to mean clearing the field, which now means \"use the default\"; if you had cleared it, the switch is set to off for you on update, so nothing changes on your product pages.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Renamed to Plogins Add-Ons - Product Options for WooCommerce so the name leads with the brand rather than a generic word, which is what the WordPress.org plugin review team asks for. The plugin slug is unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Tested against WordPress 7.1. Verified by activating this build on a clean 7.1 install with WooCommerce 11.1, not by editing the header.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Fixed the PRO promo on the settings screen quoting a price in PLN. PRO is priced and charged in EUR, so an admin on a Polish site was shown a zloty amount and then billed in euro, and the zloty figure was a fixed conversion that drifted from the real charge as the rate moved. The promo now shows the euro price that is actually taken.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Translations: completed Polish, German and Spanish for the PRO upgrade panel.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Accessibility improvements to the admin and storefront markup.<\/li>\n<li>Fixed low-contrast admin headings under an OS dark-mode preference.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added bundled Polish, German and Spanish translations for the plugin interface.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>First stable release.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Renamed to Plogins Add-Ons for WooCommerce for a more distinctive plugin name.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Add minimum and maximum character limits for text add-ons, with storefront counters and server-side validation.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Add a customisable group heading shown above the add-on fields on the product page.<\/li>\n<li>Add display settings: show\/hide option prices, toggle the required-field asterisk, and an optional bordered card style.<\/li>\n<li>Add an uninstall routine that removes the plugin's own options (product definitions are preserved as product meta).<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Add WooCommerce product options, product add-ons and custom product fields before add to cart.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/375627","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=375627"}],"author":[{"embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/motylanogha"}],"wp:attachment":[{"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=375627"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=375627"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=375627"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=375627"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=375627"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/it.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=375627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}