{"id":375065,"date":"2026-09-28T19:01:18","date_gmt":"2026-09-28T19:01:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/wdonline-smart-upsells-for-woocommerce\/"},"modified":"2026-09-29T17:08:04","modified_gmt":"2026-09-29T17:08:04","slug":"wdonline-smart-upsells-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/wdonline-smart-upsells-for-woocommerce\/","author":23557407,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.10","stable_tag":"0.3.10","tested":"7.1.2","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"WDOnline Smart Upsells for WooCommerce","header_author":"WD Online","header_description":"Display native WooCommerce upsells, cross-sells, and reusable promotional product boxes as prominent offers.","assets_banners_color":"edf5fd","last_updated":"2026-09-29 17:08:04","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/www.paypal.com\/ncp\/payment\/NKERMAVC4PXML","header_plugin_uri":"https:\/\/wdonline.dk\/wdonline-smart-upsells-for-woocommerce\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":102,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.10":{"tag":"0.3.10","author":"wdonlinedk","date":"2026-09-29 17:08:04","revision":3719497},"0.3.9":{"tag":"0.3.9","author":"wdonlinedk","date":"2026-09-28 19:00:42","revision":3717775}},"upgrade_notice":{"0.3.5":"<p>Adds promotional box filtering and expanded styling for offer boxes, product cards, and buttons.<\/p>","0.3.4":"<p>Shows promotional box assignments directly in the WooCommerce product list.<\/p>","0.3.3":"<p>Resolves the remaining Plugin Check internationalization error.<\/p>","0.3.2":"<p>Improves WordPress coding standards compliance for promotional box administration.<\/p>","0.3.1":"<p>Ensures the latest card alignment styles load immediately and keeps offer buttons aligned.<\/p>","0.3.0":"<p>Adds name-based CSV management, assignment counts, safe deletion, and WooCommerce bulk editing for Promotional boxes.<\/p>","0.2.2":"<p>Improves admin input validation and resolves the supplied Plugin Check warnings.<\/p>","0.2.1":"<p>Moves Promotional box selection into the standard WooCommerce Product data tabs for a more consistent editing workflow.<\/p>","0.2.0":"<p>Adds reusable four-product promotional boxes that can be centrally updated and assigned to individual WooCommerce products.<\/p>","0.1.6":"<p>Restores vertical layout and displays complete product images in consistently square image fields.<\/p>","0.1.5":"<p>Improves product card alignment and makes the image height setting work consistently on the storefront.<\/p>","0.1.4":"<p>Fixes product names and links and adds optional out-of-stock products and stock indicators.<\/p>","0.1.3":"<p>Keeps the live preview in its normal position without overlapping other settings panels.<\/p>","0.1.2":"<p>Adds image and text styling, layout direction controls, and a more convenient live preview.<\/p>","0.1.1":"<p>Adds more placements, shortcode support, and automatic checkout refresh after adding an offer.<\/p>","0.1.0":"<p>Initial development preview.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3717804,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3717804,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3717804,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3717804,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.10","0.3.9"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3717804,"resolution":"1","location":"assets","locale":"","width":1223,"height":1041},"screenshot-10.jpg":{"filename":"screenshot-10.jpg","revision":3717804,"resolution":"10","location":"assets","locale":"","width":1721,"height":463},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3717804,"resolution":"2","location":"assets","locale":"","width":1719,"height":463},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3717804,"resolution":"3","location":"assets","locale":"","width":1449,"height":851},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3717804,"resolution":"4","location":"assets","locale":"","width":959,"height":847},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3717804,"resolution":"5","location":"assets","locale":"","width":959,"height":819},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3717804,"resolution":"6","location":"assets","locale":"","width":1371,"height":849},"screenshot-7.jpg":{"filename":"screenshot-7.jpg","revision":3717804,"resolution":"7","location":"assets","locale":"","width":1201,"height":869},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3717804,"resolution":"8","location":"assets","locale":"","width":1729,"height":557},"screenshot-9.jpg":{"filename":"screenshot-9.jpg","revision":3717804,"resolution":"9","location":"assets","locale":"","width":1733,"height":847}},"screenshots":{"1":"Offer location and placement settings.","2":"Design controls with live preview.","3":"A prominent linked-product offer on the storefront.","4":"Reusable promotional box management and product assignment."}},"plugin_section":[],"plugin_tags":[3047,3148,13788,1311,286],"plugin_category":[45],"plugin_contributors":[279052],"plugin_business_model":[],"class_list":["post-375065","plugin","type-plugin","status-publish","hentry","plugin_tags-cart","plugin_tags-checkout","plugin_tags-cross-sell","plugin_tags-upsell","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-wdonlinedk","plugin_committers-wdonlinedk"],"banners":{"banner":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/banner-772x250.png?rev=3717804","banner_2x":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/banner-1544x500.png?rev=3717804","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/icon-128x128.png?rev=3717804","icon_2x":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/icon-256x256.png?rev=3717804","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-1.jpg?rev=3717804","caption":"Offer location and placement settings."},{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-2.jpg?rev=3717804","caption":"Design controls with live preview."},{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-3.jpg?rev=3717804","caption":"A prominent linked-product offer on the storefront."},{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-4.jpg?rev=3717804","caption":"Reusable promotional box management and product assignment."},{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-5.jpg?rev=3717804","caption":""},{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-6.jpg?rev=3717804","caption":""},{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-7.jpg?rev=3717804","caption":""},{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-8.jpg?rev=3717804","caption":""},{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-9.jpg?rev=3717804","caption":""},{"src":"https:\/\/ps.w.org\/wdonline-smart-upsells-for-woocommerce\/assets\/screenshot-10.jpg?rev=3717804","caption":""}],"raw_content":"<!--section=description-->\n<p>WDOnline Smart Upsells for WooCommerce makes the products already configured in WooCommerce Linked products easier for customers to notice.<\/p>\n\n<p>The plugin provides:<\/p>\n\n<ul>\n<li>A prominent upsell box on single-product pages.<\/li>\n<li>Reusable promotional boxes containing up to the configured maximum of eight hand-picked products.<\/li>\n<li>Multiple promotional boxes that can be assigned individually to WooCommerce products.<\/li>\n<li>Central product replacement: edit a box once and every assigned product updates automatically.<\/li>\n<li>Unique internal box names used in WooCommerce product CSV export and import.<\/li>\n<li>Promotional box assignment through the WooCommerce product bulk editor.<\/li>\n<li>Product-list filtering by a specific promotional box or products without one.<\/li>\n<li>Assignment counts and safe assignment cleanup when deleting a box.<\/li>\n<li>Cross-sell offers in the cart.<\/li>\n<li>A checkout order-bump location for classic WooCommerce checkout templates.<\/li>\n<li>Extensive placement choices for the product, cart, and checkout offer boxes.<\/li>\n<li>Manual placement with the <code>[wdonline_su_offers]<\/code> shortcode.<\/li>\n<li>Automatic checkout refresh after an AJAX add-to-cart action.<\/li>\n<li>Detailed styling for the offer container, product cards, spacing, and buttons.<\/li>\n<li>Custom headings, colors, square image size, text size, columns, and corner radius.<\/li>\n<li>Horizontal or vertical product layouts.<\/li>\n<li>Optional display of out-of-stock linked products.<\/li>\n<li>Optional green and red stock status indicators.<\/li>\n<li>A live design preview in the settings screen.<\/li>\n<li>Automatic exclusion of unavailable and already selected products.<\/li>\n<li>Standard WooCommerce product cards and add-to-cart behavior.<\/li>\n<li>Optional privacy-safe integration with WD Online Support Diagnostics.<\/li>\n<\/ul>\n\n<p>All display locations are disabled by default. Enable only the locations you want under WD Online &gt; Smart Upsells.<\/p>\n\n<p>Product-page offers use an assigned Promotional box when one is selected. Products without an assigned box use the Upsells selected in Product data &gt; Linked products. Cart and checkout offers use the selected Cross-sells.<\/p>\n\n<p>For manual placement, select Shortcode only for the relevant location and use:<\/p>\n\n<ul>\n<li><code>[wdonline_su_offers location=\"product\"]<\/code><\/li>\n<li><code>[wdonline_su_offers location=\"cart\"]<\/code><\/li>\n<li><code>[wdonline_su_offers location=\"checkout\"]<\/code><\/li>\n<\/ul>\n\n<p>Add an optional custom heading, for example: <code>[wdonline_su_offers location=\"checkout\" heading=\"Add something extra\"]<\/code>.<\/p>\n\n<p>Cart and checkout display currently targets classic WooCommerce templates. WooCommerce Cart and Checkout block integration is planned for a later version.<\/p>\n\n<p>The plugin does not send telemetry or diagnostic data to external servers.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin ZIP through Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Make sure WooCommerce is active.<\/li>\n<li>Open WD Online &gt; Smart Upsells.<\/li>\n<li>Enable the desired locations and save the settings.<\/li>\n<li>Create reusable boxes under the Promotional boxes tab when you want centrally managed product offers.<\/li>\n<li>Assign a box in the Promotional box panel when editing a WooCommerce product, or continue using Upsells and Cross-sells in Linked products.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20show%20the%20same%20promotional%20products%20on%20many%20product%20pages%3F\"><h3>Can I show the same promotional products on many product pages?<\/h3><\/dt>\n<dd><p>Yes. Create a reusable Promotional box, select up to the configured maximum of eight products, and assign the box to as many WooCommerce products as needed. Changing the box later updates every assigned product page.<\/p><\/dd>\n<dt id=\"can%20i%20still%20use%20native%20woocommerce%20upsells%20and%20cross-sells%3F\"><h3>Can I still use native WooCommerce Upsells and Cross-sells?<\/h3><\/dt>\n<dd><p>Yes. A product without an assigned Promotional box uses its native Upsells. Cart and checkout offers continue to use native Cross-sells.<\/p><\/dd>\n<dt id=\"can%20promotional%20box%20assignments%20be%20updated%20with%20a%20product%20csv%20file%3F\"><h3>Can promotional box assignments be updated with a product CSV file?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce product exports include a Promotional box column containing only the unique internal box name. Import the same internal name to assign that box. An empty mapped cell removes the assignment, while an unknown name leaves the existing assignment unchanged.<\/p><\/dd>\n<dt id=\"are%20the%20modules%20enabled%20automatically%3F\"><h3>Are the modules enabled automatically?<\/h3><\/dt>\n<dd><p>No. Product, cart, and checkout modules are disabled by default.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20variable%20products%3F\"><h3>Does it work with variable products?<\/h3><\/dt>\n<dd><p>Yes. Variable products are displayed with WooCommerce's standard Select options button, while purchasable simple products can be added directly.<\/p><\/dd>\n<dt id=\"does%20it%20support%20the%20cart%20and%20checkout%20blocks%3F\"><h3>Does it support the Cart and Checkout blocks?<\/h3><\/dt>\n<dd><p>Not yet. The cart and checkout placements in this version use classic WooCommerce template hooks.<\/p><\/dd>\n<dt id=\"does%20it%20collect%20customer%20data%3F\"><h3>Does it collect customer data?<\/h3><\/dt>\n<dd><p>No. This version does not collect customer data, send telemetry, or create tracking records.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.10<\/h4>\n\n<ul>\n<li>Fixed assigning and removing promotional boxes from WooCommerce bulk editing.<\/li>\n<\/ul>\n\n<h4>0.3.9<\/h4>\n\n<ul>\n<li>Added the WD Online product page to the plugin metadata and readme.<\/li>\n<\/ul>\n\n<h4>0.3.8<\/h4>\n\n<ul>\n<li>Removed temporarily inaccessible site URLs from the optional plugin header fields for directory review.<\/li>\n<\/ul>\n\n<h4>0.3.7<\/h4>\n\n<ul>\n<li>Promotional box selection, saving, and storefront display now follow the Maximum products setting (1\u20138).<\/li>\n<li>Updated promotional box instructions to reflect the configurable limit.<\/li>\n<\/ul>\n\n<h4>0.3.6<\/h4>\n\n<ul>\n<li>Added the official WD Online product page as the plugin URI.<\/li>\n<\/ul>\n\n<h4>0.3.5<\/h4>\n\n<ul>\n<li>Added product-list filtering by promotional box.<\/li>\n<li>Added a filter for products without a promotional box assignment.<\/li>\n<li>Added offer padding and product spacing controls.<\/li>\n<li>Added product card background, border, corner radius, and padding controls.<\/li>\n<li>Added separate button background, text color, and corner radius controls.<\/li>\n<li>Updated the live preview to reflect every new design setting immediately.<\/li>\n<\/ul>\n\n<h4>0.3.4<\/h4>\n\n<ul>\n<li>Added a Promotional box column to the WooCommerce product list.<\/li>\n<li>Displayed each product's assigned promotional box by its internal name.<\/li>\n<li>Displayed a dash for products without a valid promotional box assignment.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Placed the promotional box deletion plural translator comment directly above the related translation call for WordPress Coding Standards compliance.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Moved the promotional box deletion confirmation from inline HTML into the enqueued admin JavaScript file.<\/li>\n<li>Ensured promotional box administration behavior initializes on pages without the live design preview.<\/li>\n<li>Cleaned up the promotional box deletion markup and URL construction.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Fixed stale browser and optimization-plugin caches by versioning CSS and JavaScript from each asset's modification time.<\/li>\n<li>Reserved three consistent title lines in offer cards and kept every add-to-cart button aligned at the bottom, including with Astra product wrappers.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Added a readable Promotional box column to the standard WooCommerce product CSV exporter.<\/li>\n<li>Exported only the unique internal promotional box name; internal IDs remain hidden.<\/li>\n<li>Added automatic WooCommerce CSV import mapping for the Promotional box column.<\/li>\n<li>Added assignment imports by unique internal box name.<\/li>\n<li>Added support for removing an assignment with an empty mapped CSV cell.<\/li>\n<li>Hid the raw internal promotional box meta key from WooCommerce meta exports to avoid duplicate columns.<\/li>\n<li>Enforced unique internal names for promotional boxes.<\/li>\n<li>Added an assignment count to every promotional box.<\/li>\n<li>Added assignment-aware deletion warnings and automatic cleanup when a box is deleted.<\/li>\n<li>Added Promotional box selection to the standard WooCommerce product bulk editor.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Changed read-only admin URL parameters to explicit filtered input handling.<\/li>\n<li>Strengthened validation of promotional box product ID arrays.<\/li>\n<li>Resolved all warnings reported by the supplied Plugin Check scan.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Moved the per-product Promotional box selector into its own WooCommerce Product data tab beside General, Inventory, and the other native product tabs.<\/li>\n<li>Added a clear product-editor description confirming that promotional box content, styling, and placement are managed centrally under Smart Upsells.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added a separate Promotional boxes tab.<\/li>\n<li>Added reusable offer boxes with an internal name, frontend heading, and up to four searchable product selections.<\/li>\n<li>Added support for creating and maintaining multiple promotional boxes.<\/li>\n<li>Added a Promotional box selector to the WooCommerce product editing screen.<\/li>\n<li>Made assigned promotional boxes replace native upsells on the selected product while unassigned products continue using normal upsells.<\/li>\n<li>Reused the existing placement, design, layout, out-of-stock, and stock indicator settings for promotional boxes.<\/li>\n<li>Added automatic cleanup of promotional boxes and product assignments when data deletion is enabled for uninstall.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Restored vertical product layout with a stronger theme-compatible layout rule.<\/li>\n<li>Changed product images to square image fields at every configured size.<\/li>\n<li>Changed image fitting to contain so complete product images remain visible without cropping.<\/li>\n<li>Changed the setting label back to Image size because it controls both square dimensions.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>Aligned product card content and buttons across products with different title lengths.<\/li>\n<li>Changed the image size control to image height so the setting has a clear and visible storefront effect.<\/li>\n<li>Added consistent image cropping to keep all offer cards aligned.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Fixed offer product names and links so they point to the correct linked products.<\/li>\n<li>Added an option to include out-of-stock products in offers.<\/li>\n<li>Added an optional green or red stock status indicator.<\/li>\n<li>Updated the live preview with stock status examples.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Removed sticky positioning from the live preview so it no longer overlaps the information and support panels.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Moved the design controls to the top of the settings form.<\/li>\n<li>Made the live preview remain visible while scrolling on desktop screens.<\/li>\n<li>Added image size, product text size, and product text color controls.<\/li>\n<li>Added horizontal and vertical product layout choices.<\/li>\n<li>Updated the live preview to reflect the new design controls immediately.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Added more automatic placement options for product, cart, and checkout offers.<\/li>\n<li>Added product, cart, and checkout placement using the <code>[wdonline_su_offers]<\/code> shortcode.<\/li>\n<li>Added automatic checkout recalculation after an offer is added through AJAX.<\/li>\n<li>Removed an added product from the visible checkout offer immediately.<\/li>\n<li>Updated the WordPress Tested up to value to 7.1.<\/li>\n<li>Avoided direct assignment to WooCommerce's product global to satisfy Plugin Check.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial development preview.<\/li>\n<li>Added product-page upsell display.<\/li>\n<li>Added cart cross-sell display.<\/li>\n<li>Added classic-checkout order-bump display.<\/li>\n<li>Added placement, text, layout, and design settings.<\/li>\n<li>Added privacy-safe diagnostics provider hook.<\/li>\n<\/ul>","raw_excerpt":"Display native WooCommerce upsells, cross-sells, and reusable promotional product boxes as prominent offers.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/375065","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=375065"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/wdonlinedk"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=375065"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=375065"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=375065"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=375065"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=375065"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=375065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}