{"id":391990,"date":"2026-11-12T21:39:52","date_gmt":"2026-11-12T21:39:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/smart-add-ons\/"},"modified":"2026-11-12T21:39:33","modified_gmt":"2026-11-12T21:39:33","slug":"dhyan-product-options","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/dhyan-product-options\/","author":23562645,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.4","requires":"6.9","requires_php":"8.1","requires_plugins":null,"header_name":"Dhyan Product Options for WooCommerce","header_author":"Dhyan Software","header_description":"Add custom product options to WooCommerce products: text, dropdowns, checkboxes, image swatches, dates and file uploads, with conditional logic, fixed or percentage prices and a live price preview on the product page.","last_updated":"2026-11-12 21:39:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/dhyansoftware.com\/smart-addons\/","header_author_uri":"https:\/\/profiles.wordpress.org\/dhyansoftware\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":64,"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":"dhyansoftware","date":"2026-11-12 21:39:33","revision":3799306}},"upgrade_notice":{"1.0.0":"<p>First release on WordPress.org.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3799306,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3799306,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3799306,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3799306,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3799354,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"Dhyan Product Options preview\",\"description\":\"WooCommerce + Dhyan Product Options with one sample product and one add-on group.\",\"author\":\"dhyansoftware\"},\"landingPage\":\"\\\/?post_type=product\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"login\":true,\"plugins\":[\"woocommerce\",\"dhyan-product-options\"],\"steps\":[{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\nuse SmartAddOns\\\\Core\\\\Addons\\\\AddonRepository;\\nuse SmartAddOns\\\\Core\\\\Addons\\\\AddonValidator;\\nuse SmartAddOns\\\\Core\\\\Core\\\\Plugin;\\n$product = new WC_Product_Simple();\\n$product->set_name('Personalised Mug');\\n$product->set_regular_price('18.00');\\n$product->set_short_description('Add engraving text, pick a colour and add gift wrap. The total updates as you choose.');\\n$product->set_status('publish');\\n$product_id = $product->save();\\n$c = Plugin::getInstance()->getContainer();\\n$repo = $c->make(AddonRepository::class);\\n$validator = $c->make(AddonValidator::class);\\n$defs = [\\n  ['name'=>'engraving_line','label'=>'Engraving text','type'=>'text','placeholder'=>'e.g. Good morning, Alex','required'=>false,'settings'=>['validation'=>['max_length'=>30]]],\\n  ['name'=>'mug_color','label'=>'Colour','type'=>'radio','required'=>true,'options'=>[['value'=>'white','label'=>'White'],['value'=>'black','label'=>'Black'],['value'=>'teal','label'=>'Teal']],'pricing'=>[['option_value'=>'white','pricing_type'=>'fixed','price'=>0],['option_value'=>'black','pricing_type'=>'fixed','price'=>0],['option_value'=>'teal','pricing_type'=>'fixed','price'=>2]]],\\n  ['name'=>'gift_wrap','label'=>'Add gift wrap','type'=>'checkbox','required'=>false,'pricing'=>[['pricing_type'=>'fixed','price'=>4]]],\\n  ['name'=>'rush','label'=>'Rush production','type'=>'checkbox','required'=>false,'pricing'=>[['pricing_type'=>'percentage','price'=>15,'quantity_mode'=>'flat']]],\\n];\\n$fields = [];\\nforeach ($defs as $i => $f) {\\n  $clean = $validator->sanitizeFieldPayload($f);\\n  $type = (string) ($clean['type'] ?? 'checkbox');\\n  $options = is_array($f['options'] ?? null) ? $f['options'] : [];\\n  $settings = $validator->sanitizeFieldSettings(is_array($f['settings'] ?? null) ? $f['settings'] : [], $type);\\n  $fields[] = array_merge($clean, ['sort_order'=>$i,'settings_json'=>wp_json_encode($settings) ?: '{}','pricing'=>$validator->sanitizePricingPayload(is_array($f['pricing'] ?? null) ? $f['pricing'] : [], $type, $options),'conditions'=>null]);\\n}\\n$repo->createGroup(['name'=>'Personalise Your Mug','description'=>'Engraving, colour, gift wrap and rush production.','priority'=>10,'status'=>'active','scope'=>'product'], $fields, [['target_type'=>'product','target_id'=>$product_id]]);\\nupdate_option('woocommerce_coming_soon', 'no');\\nupdate_option('woocommerce_store_pages_only', 'no');\\nupdate_option('blogname', 'Dhyan Product Options Preview');\\n\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"dhyan-product-options\"},\"options\":{\"activate\":true}}]}"}},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3799306,"resolution":"1","location":"assets","locale":"","width":2560,"height":2580},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3799306,"resolution":"2","location":"assets","locale":"","width":2560,"height":1800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3799306,"resolution":"3","location":"assets","locale":"","width":2560,"height":2500},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3799306,"resolution":"4","location":"assets","locale":"","width":2560,"height":2400},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3799306,"resolution":"5","location":"assets","locale":"","width":2560,"height":2400},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3799306,"resolution":"6","location":"assets","locale":"","width":2560,"height":1280},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3799306,"resolution":"7","location":"assets","locale":"","width":2560,"height":1800},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3799306,"resolution":"8","location":"assets","locale":"","width":2560,"height":1800}},"screenshots":{"1":"Add-on fields on a product page, with the live price total.","2":"All your add-on groups in one place.","3":"Ten field types, from text to file upload.","4":"Fixed or percentage prices, per item or once per order line.","5":"Show or hide fields with AND\/OR conditions.","6":"Add-on choices and prices in the cart and checkout.","7":"Uploaded files on the order, ready to download.","8":"Match the fields to your theme."}},"plugin_section":[],"plugin_tags":[163084,5887,65790,155785,286],"plugin_category":[45],"plugin_contributors":[292398],"plugin_business_model":[],"class_list":["post-391990","plugin","type-plugin","status-publish","hentry","plugin_tags-extra-product-options","plugin_tags-file-upload","plugin_tags-product-add-ons","plugin_tags-product-options","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-dhyansoftware","plugin_committers-dhyansoftware"],"banners":{"banner":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/banner-772x250.png?rev=3799306","banner_2x":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/banner-1544x500.png?rev=3799306","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/icon-128x128.png?rev=3799306","icon_2x":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/icon-256x256.png?rev=3799306","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/screenshot-1.png?rev=3799306","caption":"Add-on fields on a product page, with the live price total."},{"src":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/screenshot-2.png?rev=3799306","caption":"All your add-on groups in one place."},{"src":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/screenshot-3.png?rev=3799306","caption":"Ten field types, from text to file upload."},{"src":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/screenshot-4.png?rev=3799306","caption":"Fixed or percentage prices, per item or once per order line."},{"src":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/screenshot-5.png?rev=3799306","caption":"Show or hide fields with AND\/OR conditions."},{"src":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/screenshot-6.png?rev=3799306","caption":"Add-on choices and prices in the cart and checkout."},{"src":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/screenshot-7.png?rev=3799306","caption":"Uploaded files on the order, ready to download."},{"src":"https:\/\/ps.w.org\/dhyan-product-options\/assets\/screenshot-8.png?rev=3799306","caption":"Match the fields to your theme."}],"raw_content":"<!--section=description-->\n<p>Dhyan Product Options lets you add custom options to WooCommerce products: an engraving text, a gift-wrap checkbox, a size dropdown, a colour swatch, a delivery date or a customer's own artwork file. Each option can change the price, and the product page shows the new total before the shopper adds the product to the cart.<\/p>\n\n<h4>Field types<\/h4>\n\n<p>Ten field types:<\/p>\n\n<ul>\n<li>Text and textarea<\/li>\n<li>Dropdown, radio buttons, checkbox and checkbox group<\/li>\n<li>Image select (swatches with your own images)<\/li>\n<li>Date, with a fixed earliest and latest date<\/li>\n<li>File upload, one file per field<\/li>\n<li>Custom price (the shopper enters an amount, for example a donation or a gift card value)<\/li>\n<\/ul>\n\n<h4>Prices<\/h4>\n\n<ul>\n<li>Fixed amount or percentage of the product price.<\/li>\n<li>Charged per quantity or once per order line (flat fee).<\/li>\n<li>The live price preview on the product page updates as the shopper chooses.<\/li>\n<li>The add-on price is added to the cart item price, so cart totals and taxes include it.<\/li>\n<\/ul>\n\n<h4>Rules and validation<\/h4>\n\n<ul>\n<li>Required fields.<\/li>\n<li>Minimum and maximum length, a format (email, whole number or decimal number) and your own regular expression for text fields.<\/li>\n<li>Conditional logic: show or hide a field depending on other answers, with AND\/OR rules.<\/li>\n<\/ul>\n\n<h4>Where options appear<\/h4>\n\n<ul>\n<li>Option groups for one product, for every product in a category, or for the whole store.<\/li>\n<li>Several groups on the same product, in the order you choose.<\/li>\n<li>An Appearance page to match the options to your theme (colours, font sizes, spacing and density) without CSS.<\/li>\n<\/ul>\n\n<h4>Orders<\/h4>\n\n<ul>\n<li>Every choice is saved on the order line and shown in the cart, checkout, order emails, My Account and the order screen.<\/li>\n<li>Uploaded files are stored privately and linked to the order; shop managers download them from the order screen.<\/li>\n<li>Works with the classic cart and checkout and with the cart and checkout blocks.<\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS).<\/li>\n<\/ul>\n\n<h4>Managing groups<\/h4>\n\n<ul>\n<li>Duplicate a group, save it as a template, and create new groups from templates.<\/li>\n<li>Export a group to a file and import it on another store.<\/li>\n<li>Group, field and option texts can be translated with WPML or Polylang string translation.<\/li>\n<\/ul>\n\n<h4>Privacy and external services<\/h4>\n\n<p>Dhyan Product Options does not connect to any external service. It sends no store, order or shopper data anywhere, loads nothing from a CDN, and bundles its own scripts, styles and font (Inter, SIL Open Font License 1.1).<\/p>\n\n<p>The admin Help page links to the documentation on dhyansoftware.com and to the support email address. These are ordinary links; nothing is sent unless you open them.<\/p>\n\n<p>What the plugin stores on your site:<\/p>\n\n<ul>\n<li>Your option groups, in its own database tables.<\/li>\n<li>The shopper's choices, on the cart item and then on the order line, like other WooCommerce order data.<\/li>\n<li>Uploaded files, in <code>wp-content\/uploads\/saue-private\/<\/code> under random file names. The original file name is kept only as order information. A file that is uploaded but not used in an order is deleted after 48 hours.<\/li>\n<\/ul>\n\n<p>The plugin suggests text for your privacy policy (Settings &gt; Privacy). WordPress's personal-data export lists the files a shopper uploaded with their orders. The personal-data eraser deletes those files when WooCommerce is set to remove personal data from orders on request (WooCommerce &gt; Settings &gt; Accounts &amp; Privacy).<\/p>\n\n<p>\"Dhyan Product Options\", \"Dhyan\" and the Dhyan Software logos are trademarks of Dhyan Software Private Limited and are not licensed under the GPL.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Make sure WooCommerce 10.9 or later is installed and active.<\/li>\n<li>In WordPress, go to Plugins &gt; Add New Plugin, search for \"Dhyan Product Options\" and click Install Now, then Activate.<\/li>\n<li>Open Dhyan Product Options in the admin menu and click to create your first option group.<\/li>\n<li>Add fields, set their prices, choose where the group applies (a product, a category or the whole store) and save.<\/li>\n<li>Open the product page in your shop to check the options and the live price.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20need%20woocommerce%3F\"><h3>Does it need WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. Dhyan Product Options extends WooCommerce products and does nothing without WooCommerce 10.9 or later.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20cart%20and%20checkout%20blocks%3F\"><h3>Does it work with the cart and checkout blocks?<\/h3><\/dt>\n<dd><p>Yes. The shopper's choices and the add-on prices appear in both the classic and the block cart and checkout.<\/p><\/dd>\n<dt id=\"can%20one%20group%20apply%20to%20many%20products%3F\"><h3>Can one group apply to many products?<\/h3><\/dt>\n<dd><p>Yes. A group can be assigned to a single product, to all products in a category, or to the whole store. A product can show several groups.<\/p><\/dd>\n<dt id=\"which%20files%20can%20shoppers%20upload%3F\"><h3>Which files can shoppers upload?<\/h3><\/dt>\n<dd><p>You choose per field: images (JPG, PNG, GIF, WebP), documents (PDF, Word, Excel, CSV, TXT, RTF, ZIP) or both. The default size limit is 5 MB per file and can be raised to 50 MB, up to your server's upload limit. Each file is checked against its extension and its real contents before it is saved.<\/p><\/dd>\n<dt id=\"are%20uploaded%20files%20private%3F\"><h3>Are uploaded files private?<\/h3><\/dt>\n<dd><p>They are saved under random names in <code>wp-content\/uploads\/saue-private\/<\/code>, which the plugin protects with an <code>.htaccess<\/code> file on Apache and LiteSpeed. Nginx does not read <code>.htaccess<\/code>; on Nginx, add a rule such as <code>location ^~ \/wp-content\/uploads\/saue-private\/ { deny all; }<\/code> to your server configuration. Shop managers download the files from the order screen.<\/p><\/dd>\n<dt id=\"can%20i%20translate%20the%20options%3F\"><h3>Can I translate the options?<\/h3><\/dt>\n<dd><p>Yes. Group names and descriptions, field labels, descriptions and placeholders, and option labels can be translated with WPML or Polylang string translation. The plugin's own interface is translatable on translate.wordpress.org.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20uninstall%20the%20plugin%3F\"><h3>What happens to my data if I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Your option groups stay in the database, so reinstalling brings them back. Choices saved on past orders stay on those orders, and uploaded files stay in <code>wp-content\/uploads\/saue-private\/<\/code>.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20help%3F\"><h3>Where can I get help?<\/h3><\/dt>\n<dd><p>Use the support forum on WordPress.org, or see the documentation at https:\/\/dhyansoftware.com\/docs\/smart-addons\/.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release on WordPress.org.<\/li>\n<\/ul>","raw_excerpt":"Custom product options for WooCommerce: text, dropdowns, checkboxes, image swatches, dates and file uploads, with conditional logic and live prices.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/391990","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=391990"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dhyansoftware"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=391990"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=391990"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=391990"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=391990"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=391990"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=391990"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}