{"id":345442,"date":"2026-08-01T20:52:18","date_gmt":"2026-08-01T20:52:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seeonwall-for-woocommerce\/"},"modified":"2026-09-11T21:43:21","modified_gmt":"2026-09-11T21:43:21","slug":"seeonwall-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/pan.wordpress.org\/plugins\/seeonwall-for-woocommerce\/","author":23537617,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.22.2","stable_tag":"1.22.2","tested":"7.1","requires":"6.6","requires_php":"7.4","requires_plugins":null,"header_name":"SeeOnWall \u2013 Wall Art Preview for WooCommerce","header_author":"Mateusz Dziurdziak","header_description":"Let shoppers preview posters on their own wall, at true physical scale, directly on your product pages.","assets_banners_color":"f2ede4","last_updated":"2026-09-11 21:43:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/seeonwall.com\/wordpress-setup-guide","header_author_uri":"https:\/\/profiles.wordpress.org\/mateuszdziurdziak\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":924,"num_ratings":0,"support_threads":1,"support_threads_resolved":1,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"mateuszdziurdziak","date":"2026-08-01 20:51:58","revision":3631310},"1.0.1":{"tag":"1.0.1","author":"mateuszdziurdziak","date":"2026-08-05 00:00:34","revision":3634741},"1.0.2":{"tag":"1.0.2","author":"mateuszdziurdziak","date":"2026-08-05 21:28:50","revision":3635856},"1.1.0":{"tag":"1.1.0","author":"mateuszdziurdziak","date":"2026-08-11 13:33:31","revision":3642054},"1.10.0":{"tag":"1.10.0","author":"mateuszdziurdziak","date":"2026-08-31 21:29:55","revision":3674973},"1.11.0":{"tag":"1.11.0","author":"mateuszdziurdziak","date":"2026-08-31 23:09:18","revision":3675040},"1.12.0":{"tag":"1.12.0","author":"mateuszdziurdziak","date":"2026-09-02 20:52:06","revision":3678652},"1.13.0":{"tag":"1.13.0","author":"mateuszdziurdziak","date":"2026-09-04 07:07:55","revision":3680778},"1.14.0":{"tag":"1.14.0","author":"mateuszdziurdziak","date":"2026-09-04 22:38:48","revision":3681877},"1.15.0":{"tag":"1.15.0","author":"mateuszdziurdziak","date":"2026-09-04 23:08:56","revision":3681896},"1.16.0":{"tag":"1.16.0","author":"mateuszdziurdziak","date":"2026-09-06 00:22:11","revision":3682888},"1.17.0":{"tag":"1.17.0","author":"mateuszdziurdziak","date":"2026-09-06 15:01:02","revision":3683576},"1.18.0":{"tag":"1.18.0","author":"mateuszdziurdziak","date":"2026-09-07 08:05:39","revision":3684431},"1.19.0":{"tag":"1.19.0","author":"mateuszdziurdziak","date":"2026-09-07 13:41:55","revision":3685023},"1.2.0":{"tag":"1.2.0","author":"mateuszdziurdziak","date":"2026-08-12 16:57:32","revision":3643793},"1.20.0":{"tag":"1.20.0","author":"mateuszdziurdziak","date":"2026-09-09 14:09:48","revision":3688442},"1.21.0":{"tag":"1.21.0","author":"mateuszdziurdziak","date":"2026-09-09 21:44:12","revision":3689035},"1.22.0":{"tag":"1.22.0","author":"mateuszdziurdziak","date":"2026-09-11 13:18:24","revision":3691437},"1.22.1":{"tag":"1.22.1","author":"mateuszdziurdziak","date":"2026-09-11 15:39:52","revision":3691684},"1.22.2":{"tag":"1.22.2","author":"mateuszdziurdziak","date":"2026-09-11 21:43:21","revision":3692121},"1.3.0":{"tag":"1.3.0","author":"mateuszdziurdziak","date":"2026-08-13 08:30:01","revision":3644639},"1.3.1":{"tag":"1.3.1","author":"mateuszdziurdziak","date":"2026-08-13 08:45:23","revision":3644674},"1.4.0":{"tag":"1.4.0","author":"mateuszdziurdziak","date":"2026-08-14 21:09:35","revision":3647963},"1.5.0":{"tag":"1.5.0","author":"mateuszdziurdziak","date":"2026-08-15 20:02:03","revision":3649005},"1.6.0":{"tag":"1.6.0","author":"mateuszdziurdziak","date":"2026-08-19 06:43:03","revision":3653969},"1.7.0":{"tag":"1.7.0","author":"mateuszdziurdziak","date":"2026-08-19 12:02:00","revision":3654551},"1.7.1":{"tag":"1.7.1","author":"mateuszdziurdziak","date":"2026-08-20 19:28:53","revision":3657681},"1.8.0":{"tag":"1.8.0","author":"mateuszdziurdziak","date":"2026-08-25 22:44:16","revision":3666062},"1.8.1":{"tag":"1.8.1","author":"mateuszdziurdziak","date":"2026-08-25 23:27:44","revision":3666089},"1.8.2":{"tag":"1.8.2","author":"mateuszdziurdziak","date":"2026-08-27 21:27:13","revision":3669533},"1.8.3":{"tag":"1.8.3","author":"mateuszdziurdziak","date":"2026-08-31 10:05:06","revision":3673846},"1.9.0":{"tag":"1.9.0","author":"mateuszdziurdziak","date":"2026-08-31 13:48:11","revision":3674369}},"upgrade_notice":{"1.22.2":"<p>Poster size set to &quot;The size field on the product page, only&quot; now ignores variation dimensions\nas well as Shipping \u2192 Dimensions. If a variable product on that setting really is measured by\nits variations, list its sizes under Product data \u2192 SeeOnWall or use one of the other two\nPoster size choices. On either page setting, fast wall preview icons now appear only on\nproducts whose size does not come from the product page.<\/p>","1.22.1":"<p>A variable product whose variations have no Dimensions of their own no longer previews every\nsize at the parent product&#039;s measurements. With Poster size set to read a field on the product\npage, that field is read for these products again.<\/p>","1.22.0":"<p>Print sizes are now written one per row, and a size may name its own unit or a paper format:\na4, 12x16in, 430x510mm. Existing lists are unchanged \u2014 a plain 30x40 still means your store&#039;s\ndimension unit.<\/p>\n\n<p>The list under Product data \u2192 SeeOnWall now takes priority over a product&#039;s variation\ndimensions, where the variations used to win. If any variable product still carries an old list\nthere, clear it to go back to using its variations&#039; sizes.<\/p>","1.21.0":"<p>Stores reading sizes from a field on the product page now read it on every product, not only on\nproducts without their own dimensions. If your Dimensions measure the postal tube, switch Poster\nsize to the new \u201conly\u201d option so the button never falls back to them.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3631310,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3631310,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3631310,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3631310,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"seeonwall\/button":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"seeonwall\/button","version":"1.22.1","title":"SeeOnWall button","category":"woocommerce","icon":"format-image","description":"The \u201cSee on your wall\u201d button for the product of the page \u2014 for block product templates in the Site Editor, and for any page that names a product.","keywords":["seeonwall","wall","preview","poster","button"],"textdomain":"seeonwall-for-woocommerce","usesContext":["postId","postType"],"attributes":{"productId":{"type":"integer","default":0}},"supports":{"html":false,"align":["left","center","right"],"spacing":{"margin":true}},"editorScript":"seeonwall-block-editor"}},"tagged_versions":["1.0.0","1.0.1","1.0.2","1.1.0","1.10.0","1.11.0","1.12.0","1.13.0","1.14.0","1.15.0","1.16.0","1.17.0","1.18.0","1.19.0","1.2.0","1.20.0","1.21.0","1.22.0","1.22.1","1.22.2","1.3.0","1.3.1","1.4.0","1.5.0","1.6.0","1.7.0","1.7.1","1.8.0","1.8.1","1.8.2","1.8.3","1.9.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3681892,"resolution":"1","location":"assets","locale":"","width":2540,"height":1524},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3681892,"resolution":"2","location":"assets","locale":"","width":2540,"height":1524},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3681892,"resolution":"3","location":"assets","locale":"","width":2540,"height":1524},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3681892,"resolution":"4","location":"assets","locale":"","width":1600,"height":900}},"screenshots":{"1":"A true-to-scale wall preview with bookmarks and recently viewed posters.","2":"The room-scene picker and QR flow.","3":"The analytics dashboard.","4":"The mobile wall preview."}},"plugin_section":[],"plugin_tags":[276418,9615,247834,258763,252866],"plugin_category":[45],"plugin_contributors":[274191],"plugin_business_model":[],"class_list":["post-345442","plugin","type-plugin","status-publish","hentry","plugin_tags-art-prints","plugin_tags-poster","plugin_tags-product-visualization","plugin_tags-room-visualizer","plugin_tags-wall-art","plugin_category-ecommerce","plugin_contributors-mateuszdziurdziak","plugin_committers-mateuszdziurdziak"],"banners":{"banner":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/banner-772x250.png?rev=3631310","banner_2x":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/banner-1544x500.png?rev=3631310","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/icon-128x128.png?rev=3631310","icon_2x":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/icon-256x256.png?rev=3631310","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/screenshot-1.jpg?rev=3681892","caption":"A true-to-scale wall preview with bookmarks and recently viewed posters."},{"src":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/screenshot-2.jpg?rev=3681892","caption":"The room-scene picker and QR flow."},{"src":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/screenshot-3.jpg?rev=3681892","caption":"The analytics dashboard."},{"src":"https:\/\/ps.w.org\/seeonwall-for-woocommerce\/assets\/screenshot-4.jpg?rev=3681892","caption":"The mobile wall preview."}],"raw_content":"<!--section=description-->\n<p><strong>\"How big is it, really?\"<\/strong> is the question that stops a poster sale. SeeOnWall answers it on the\nproduct page: shoppers photograph their own wall with the phone already in their hand and see your\nprint on it at true physical size \u2014 30\u00d740 looks like 30\u00d740, next to their actual sofa, in their\nactual light. No app, no shopper account, no AR-capable phone. Add the button once and it appears\non every poster you sell, now and in the future.<\/p>\n\n<h4>What shoppers get<\/h4>\n\n<ul>\n<li><strong>True scale, not a mockup.<\/strong> The wall is measured once, then the poster is drawn at its real\nsize with perspective correction \u2014 comparing 50\u00d770 against 70\u00d7100 is a click, not a guess.<\/li>\n<li><strong>Their wall, or a room scene.<\/strong> Take a photo, upload one, or skip the photo and pick a stock\nroom. Whichever is faster for them.<\/li>\n<li><strong>Every device, every browser.<\/strong> Desktop, older phones, and in-app browsers like Instagram and\nFacebook. Start on desktop, scan a QR code, finish on the phone \u2014 the preview follows.<\/li>\n<li><strong>Their own language \u2014 eleven of them.<\/strong> English, German, Polish, Spanish, French, Italian,\nPortuguese, Dutch, Swedish, Norwegian Bokm\u00e5l and Danish. The preview follows the language your\nstore page is already in, with nothing to configure.<\/li>\n<li><strong>Frames, mats and sizes.<\/strong> Frame widths and colours, a passe-partout, and every size you sell.<\/li>\n<li><strong>One wall, the whole catalogue.<\/strong> Once a shopper has set up their wall, a small icon on every\nother product card \u2014 in related products, on category pages, in search results \u2014 opens that\nprint on the same wall in one tap. No second photo, no second setup. (Paid plans.)<\/li>\n<li><strong>A preview worth sharing.<\/strong> Shoppers download the image or send a link to the person whose\nopinion decides the purchase \u2014 and that link leads back to your product page.<\/li>\n<\/ul>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li><strong>Zero per-product setup.<\/strong> The button reads each product's Dimensions field, and new products\nare picked up automatically. No theme surgery, no shortcode per item.<\/li>\n<li><strong>Placement and styling you control.<\/strong> Nine positions on the product template, or the\n  [seeonwall_button] shortcode. Label, colour and shape are settings, with a label field for\neach of the eleven shopper languages.<\/li>\n<li><strong>Analytics on every plan, Free included.<\/strong> Sessions, views, shares and downloads, plus a\nper-poster breakdown: how many shoppers opened each artwork, and how many got it onto a wall.<\/li>\n<li><strong>A storefront that stays fast.<\/strong> One small deferred script that never blocks your page, no\ntracking cookies, EU-hosted, and wall photos delete themselves after seven days.<\/li>\n<\/ul>\n\n<p><strong>Requires WooCommerce<\/strong> (8.0+) installed and active. Connecting takes one click \u2014 no signup, no\nAPI key: the plugin proves it controls your domain and a free account is provisioned.<\/p>\n\n<h4>External service: SeeOnWall<\/h4>\n\n<p>This plugin is the client for <strong>SeeOnWall<\/strong>, a hosted service (https:\/\/seeonwall.com) that renders\nthe wall previews. The plugin does not visualize anything itself and is not usable without that\nservice, which is operated by the plugin author.<\/p>\n\n<p>What the plugin sends: <strong>on connect<\/strong>, once, when you click <strong>Connect<\/strong> \u2014 your store's URL and the\nconnecting admin's email address, in exchange for a store token; the email is used only for\naccount notices and billing, never shown to shoppers or used for marketing. <strong>On product pages<\/strong>\nof connected stores \u2014 the viewer script is loaded from <code>https:\/\/seeonwall.com\/seeonwall.js<\/code>\n(loaded, not bundled, because the preview is a live service kept current server-side) and passed\nthe product's image URL and physical dimensions. The plugin sends <strong>no shopper data<\/strong>.<\/p>\n\n<p>What the service does with shopper data, once a shopper opens the preview: a <strong>room-scene\ntemplate<\/strong> uploads nothing at all. A <strong>photo of the shopper's own wall<\/strong> is stored in an EU\nCloudflare R2 bucket and analysed by Google Vertex AI (EU Data Boundary endpoint, europe-west1)\nto detect the wall corners; it stays in the EU for its whole lifetime, is never used to train\nmodels, and is deleted when the session expires after 7 days. Shoppers never create an account,\nCloudflare Turnstile guards uploads against bots, and a notice stating all of this is shown in\nthe viewer before the shopper uploads. Your WordPress admin also carries this text, ready to copy\ninto your own policy, under Settings \u2192 Privacy.<\/p>\n\n<p>Terms of Use: https:\/\/seeonwall.com\/terms \u00b7 Privacy Policy: https:\/\/seeonwall.com\/privacy \u00b7\nSub-processors: https:\/\/seeonwall.com\/subprocessors<\/p>\n\n<h4>Reporting illegal content<\/h4>\n\n<p>Content hosted by SeeOnWall that is unlawful \u2014 a poster image used without the rights holder's\npermission, say \u2014 can be reported to abuse@seeonwall.com. The Article 16 EU Digital Services Act\nnotice-and-action procedure is at https:\/\/seeonwall.com\/report<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>The admin settings page is a small React + TypeScript app. The plugin ships its compiled, minified\noutput (<code>assets\/js\/settings.js<\/code>, <code>assets\/css\/settings.css<\/code>); the human-readable source is under\n    src\/, with build instructions in <code>src\/README.md<\/code>. Node.js + Vite (<code>npm install &amp;&amp; npm run\nbuild<\/code>). React and ReactDOM resolve at runtime to the copies WordPress ships.<\/p>\n\n<h3>Translations<\/h3>\n\n<p><strong>Shoppers get eleven languages.<\/strong> The wall preview and the \"See on wall\" button speak English,\nGerman, Polish, Spanish, French, Italian, Portuguese, Dutch, Swedish, Norwegian Bokm\u00e5l and\nDanish, following the language your store page is in \u2014 no setting to change, and no per-language\nsetup on a multilingual store.<\/p>\n\n<p><strong>The settings screen ships six translations<\/strong> beyond English \u2014 German, Polish, Spanish, French,\nItalian and Portuguese \u2014 for the PHP strings and the React settings screen, following your\nWordPress admin language including variants such as de_AT, es_MX, fr_CA, pt_BR and pt_AO.\nPortuguese is European Portuguese, with Brazilian and Angolan locales resolving to it rather than\nto English. translate.wordpress.org translations take precedence.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install through the WordPress plugins screen, or upload the files to\n   \/wp-content\/plugins\/seeonwall-for-woocommerce.<\/li>\n<li>Activate it through the \"Plugins\" screen.<\/li>\n<li>Go to WooCommerce \u2192 SeeOnWall and click <strong>Connect to SeeOnWall<\/strong>.<\/li>\n<\/ol>\n\n<p>Step by step, with screenshots: https:\/\/seeonwall.com\/wordpress-setup-guide<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20cost%20anything%2C%20and%20what%20are%20the%20limits%3F\"><h3>Does this cost anything, and what are the limits?<\/h3><\/dt>\n<dd><p>The plugin is free, and so is the plan it connects you to: a free account is provisioned on\nconnect, with no card and no expiry. Paid plans buy higher limits, remove the seeonwall.com\nattribution from Basic up, add shopper session sharing from Premium up, and drop the monthly view\nceiling on Ultra. Each starts with a 14-day free trial, billed by SeeOnWall directly. Analytics\nare on every plan, Free included.<\/p>\n\n<p>WooCommerce \u2192 SeeOnWall shows a live meter for each limit under <strong>Current usage<\/strong>. Per hour, as\nFree \/ Basic \/ Premium \/ Ultra: preview sessions 150 \/ 500 \/ 2,500 \/ 10,000 \u00b7 photo uploads\n20 \/ 200 \/ 1,000 \/ 2,000 \u00b7 downloads and shares 50 \/ 250 \/ 1,000 \/ 2,000 \u00b7 poster views\n100 \/ 2,500 \/ 10,000 \/ 50,000, plus a monthly view budget of 500 \/ 5,000 \/ 25,000 \/ none. Hitting\na limit never breaks your store \u2014 the button still appears and opens, but shoppers who reach the\npreview are asked to try again later. Details: https:\/\/seeonwall.com\/docs<\/p><\/dd>\n<dt id=\"which%20product%20field%20sets%20the%20poster%27s%20physical%20size%3F\"><h3>Which product field sets the poster's physical size?<\/h3><\/dt>\n<dd><p>WooCommerce's own Dimensions (Product data \u2192 Shipping \u2192 Width\/Height), in your store's dimension\nunit. On a variable product each variation's own Dimensions are used, and shoppers get a size\nselector inside the preview listing every size you sell. A variation left without Dimensions\nstates no size \u2014 WooCommerce shows it the parent's \u2014 so a product whose variations are all like\nthat is sized by whatever Poster size names next. A simple product sold in several sizes\ncan list them under Product data \u2192 SeeOnWall \u2192 Print sizes instead. Nothing to type twice.<\/p>\n\n<p>Setting Poster size to \"The size field on the product page, only\" is the one exception: that\nchoice says your stored measurements are the packaging rather than the print, so neither\nShipping \u2192 Dimensions nor a variation's dimensions are read, and Print sizes is the only size a\nproduct can state.<\/p><\/dd>\n<dt id=\"which%20products%20show%20the%20button%2C%20and%20where%20does%20it%20appear%3F\"><h3>Which products show the button, and where does it appear?<\/h3><\/dt>\n<dd><p>By default, every product SeeOnWall can find a size for: the list under Product data \u2192 SeeOnWall,\nthe dimensions of a variation, a size field on the product page, or Shipping \u2192 Dimensions \u2014 whichever\nthe Poster size setting reaches first. Product visibility can make this opt-in per product instead, and any single\nproduct can be switched on or off under Product data \u2192 SeeOnWall (or in quick edit and bulk edit). The button\nsits right after Add to cart by default; Storefront button offers nine positions on the standard\nproduct template, or set the position to \"Place it myself with a shortcode\" and write\n    [seeonwall_button] exactly where your theme needs it.<\/p><\/dd>\n<dt id=\"can%20shoppers%20compare%20several%20posters%20on%20the%20same%20wall%3F\"><h3>Can shoppers compare several posters on the same wall?<\/h3><\/dt>\n<dd><p>Yes \u2014 that is the <strong>fast wall preview<\/strong>. Once a shopper has photographed and calibrated their wall\non one product page, every other eligible product card can carry a small icon that opens that\nprint on the same wall in one tap, at its own size, without a second photo. Turn it on under\nWooCommerce \u2192 SeeOnWall \u2192 Button \u2192 Fast wall preview: choose the listings that get the icon\n(related and upsell products on product pages, the shop page and category, tag and attribute\narchives, search results, product grids on other pages) and the corner of the card it sits in.\nIt needs a paid plan; on the Free plan the icon does not appear. Every poster opened this way is\none poster view from the same allowance as the full preview, and the icon only appears to\nshoppers who already have a wall set up. The plugin marks each eligible card in PHP, so it works\nwith classic product loops, the Product Collection block, the <code>[products]<\/code> shortcode and AJAX\nfilters alike \u2014 no theme selector to configure.<\/p><\/dd>\n<dt id=\"which%20image%20does%20the%20button%20preview%2C%20and%20what%20if%20my%20photos%20are%20mockups%3F\"><h3>Which image does the button preview, and what if my photos are mockups?<\/h3><\/dt>\n<dd><p>By default the product's image. Product data \u2192 SeeOnWall lets you pick a different one from the media\nlibrary or paste an image URL. If the photo shows the print framed or on a coloured background, mark\nthe <strong>artwork area<\/strong> on the same tab \u2014 drag a box around the print, with a one-click starting point \u2014\nso the preview shows the print at its true size rather than treating the whole mockup as the poster.\nThe tab also says whether the product shows the button and, if not, exactly why, and WooCommerce \u2192\nSeeOnWall \u2192 Products lists the whole catalogue by status. For whole catalogues,\nthe SeeOnWall preview \/ image \/ artwork area columns travel through WooCommerce's product CSV\nexport and import.<\/p><\/dd>\n<dt id=\"do%20previews%20show%20the%20poster%20in%20a%20frame%3F\"><h3>Do previews show the poster in a frame?<\/h3><\/dt>\n<dd><p>Only if you say so \u2014 by default the print is bare and the shopper can add, widen, recolour or\nremove a frame. Framing sets a shop-wide default, or list the frames you actually sell in the\nSeeOnWall dashboard and shoppers pick from those.<\/p><\/dd>\n<dt id=\"what%20language%20do%20shoppers%20see%20the%20preview%20in%3F\"><h3>What language do shoppers see the preview in?<\/h3><\/dt>\n<dd><p>Whatever language your store page is in, out of eleven: English, German, Polish, Spanish, French,\nItalian, Portuguese, Dutch, Swedish, Norwegian Bokm\u00e5l and Danish. The button reads the page's\n    lang attribute and follows it \u2014 including a language switcher that changes it after load \u2014 so\na multilingual store built with WPML, Polylang or TranslatePress needs no per-language setup.\nA shopper on any other language gets English. Button text under WooCommerce \u2192 SeeOnWall has a\nfield per language if our wording is not yours.<\/p><\/dd>\n<dt id=\"which%20editors%2C%20themes%20and%20page%20builders%20does%20it%20work%20with%3F\"><h3>Which editors, themes and page builders does it work with?<\/h3><\/dt>\n<dd><p><strong>Product editor.<\/strong> The SeeOnWall tab lives in the product editor's Product data box, next to\nGeneral, Inventory and Shipping. The same per-product settings \u2014 button on\/off, poster image,\nartwork area, print sizes \u2014 are also reachable from WooCommerce \u2192 SeeOnWall \u2192 Products, from\nquick edit and bulk edit on the products list, and through the CSV columns.<\/p>\n\n<p><strong>Themes and templates.<\/strong> The button attaches to WooCommerce's standard product-template hooks,\nso it appears on classic themes (Storefront and the like) and on block themes whose Single\nProduct template keeps the classic template block or the Add to Cart form block \u2014 which is how\nTwenty Twenty-Five and other block themes ship. A Single Product template rebuilt from product\nblocks in the Site Editor has no hooks for \"after the price\"; put the <strong>SeeOnWall button<\/strong> block\nwhere you want it instead.<\/p>\n\n<p><strong>Page builders.<\/strong> Elementor gets a native <strong>SeeOnWall button<\/strong> widget (in the WooCommerce\ncategory when Elementor Pro is present, otherwise under General). Divi, WPBakery, Bricks, Beaver\nBuilder, Oxygen and every other builder with a shortcode or code element take\n    [seeonwall_button] \u2014 set Position to \"Place it myself with a shortcode\" so no second button\nappears. See https:\/\/seeonwall.com\/docs#woocommerce-hooks<\/p>\n\n<p><strong>Versions.<\/strong> Tested in CI on every change against the two most recent WordPress releases and\nthe two most recent WooCommerce releases \u2014 the PHP suite and the browser suite both boot a\nreal WordPress + WooCommerce for each. The plugin needs WordPress 6.6+ and WooCommerce 8.0+,\nand declares HPOS compatibility.<\/p><\/dd>\n<dt id=\"can%20a%20developer%20change%20the%20button%27s%20placement%20or%20markup%3F\"><h3>Can a developer change the button's placement or markup?<\/h3><\/dt>\n<dd><p>Yes. <code>seeonwall_button_hook<\/code>, <code>seeonwall_button_priority<\/code> and <code>seeonwall_button_html<\/code> filter the\nplacement and the markup, <code>seeonwall_poster_width_cm<\/code> \/ <code>seeonwall_poster_height_cm<\/code> override the\nsize per product, and <code>SeeOnWall_Storefront::mount_html( $product )<\/code> returns the markup for any\nproduct. Reference: https:\/\/seeonwall.com\/docs#woocommerce-hooks<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.22.2<\/h4>\n\n<ul>\n<li><strong>Changed: \"The size field on the product page, only\" no longer reads variation dimensions.<\/strong>\nThat choice says your stored measurements are the tube or the mailer rather than the print, and\nWooCommerce keeps the same field on a variation, so the dimensions of a variation are now left\nout for the same reason as Shipping \u2192 Dimensions. Products sized this way read the product page\nas the setting promises. A list under Product data \u2192 SeeOnWall still outranks everything, on a\nvariable product as much as a simple one \u2014 Products \u2192 Bulk actions can write one for a whole\ncatalogue. The other two Poster size choices are unchanged and still use variation dimensions.<\/li>\n<li><strong>Fix: a Print sizes list is no longer overwritten when the shopper picks a variation.<\/strong> On a\nvariable product with a list under Product data \u2192 SeeOnWall, choosing a variation replaced the\nlisted size with that variation's Shipping dimensions \u2014 the measurement the list was written to\nreplace. The preview now keeps the listed size whatever the shopper picks.<\/li>\n<li>The help text under each setting now says what a shopper ends up seeing, where to click, and\nwhat happens when a product cannot be sized \u2014 in that order, and without the developer notes\nthat used to end several of them. Those are in the FAQ below and at seeonwall.com\/docs.<\/li>\n<li><strong>Changed: the fast wall preview icon follows the same rule.<\/strong> A product card has no size field\non it, so a card now opens only products whose size the store states outright. With Poster size\nset to read a field on the product page, that means the products sized by a SeeOnWall list or by\ntheir variations; a product whose Dimensions merely stand behind that field no longer opens from\na card at a size its own page would have overridden. Stores on \"The product's dimensions\" are\nunaffected.<\/li>\n<\/ul>\n\n<h4>1.22.1<\/h4>\n\n<ul>\n<li><strong>Fix: a variation with no Dimensions of its own is no longer read as a size.<\/strong> WooCommerce\nhands such a variation the parent product's Dimensions, and the plugin read those as a size\nstated by the variation. On a variable product that sells its sizes as an attribute and carries\nDimensions only on the parent, that drew every size at the parent's measurements and overrode\nPoster size set to read a field on the product page. These products follow the Poster size\nsetting again, and a product where only some variations are measured lists only those sizes.<\/li>\n<\/ul>\n\n<h4>1.22.0<\/h4>\n\n<ul>\n<li><strong>New: sizes can name themselves.<\/strong> A print size may state its own unit or name a paper\nformat \u2014 <code>a4<\/code>, <code>12x16in<\/code>, <code>430x510mm<\/code> \u2014 beside the plain <code>30x40<\/code> pairs, which still mean the\nstore's dimension unit. Shoppers picking between sizes see the format name on the pill rather\nthan the centimetres it works out to. Product data \u2192 SeeOnWall and the bulk dimension presets\nboth take one size per row and show what each one measures.<\/li>\n<li><strong>New: bulk actions.<\/strong> Products \u2192 Bulk actions works on up to 100 products at a time. Print\ndimensions adds, replaces or removes the saved SeeOnWall list; Wall preview turns the button on\nor off, or hands the products back to the store setting. Filter by status or by a saved size \u2014\nthe size box takes <code>a4<\/code> as readily as <code>21x29.7<\/code> \u2014 manage reusable presets, and review the\nbefore and after of every product before anything is written. WooCommerce shipping dimensions\nare never changed.<\/li>\n<li><strong>Changed: the SeeOnWall list now outranks variation dimensions.<\/strong> A list under Product data \u2192\nSeeOnWall is what the preview draws, on a variable product as much as a simple one. Clear it to\ngo back to the variations' own sizes.<\/li>\n<li><strong>Changed: the settings say where a size comes from.<\/strong> Poster size lists the sources in the\norder they are tried, so you can tell what a given product will use. Product visibility's first\noption is now \"All products where a size can be found\" \u2014 it was \"All products with dimensions\nset\", which named only the last of those sources.<\/li>\n<\/ul>\n\n<h4>1.21.0<\/h4>\n\n<ul>\n<li><strong>Fix: the size field on the product page is now read first.<\/strong> With Poster size set to read a\nfield on the product page, the button reads that field for any product that does not state a\nsize of its own, not only for products that carry no width and height. Product data \u2192 Shipping\n\u2192 Dimensions are what it falls back to when no field can be read \u2014 the behaviour this setting\nhas always described.<\/li>\n<li><strong>New: \u201cThe size field on the product page, only\u201d.<\/strong> A third choice for Poster size, for shops\nwhose Dimensions measure the tube or the mailer the print is posted in. It never falls back:\na product whose field cannot be read shows no button rather than one at the wrong size.<\/li>\n<li>Variation sizes, and the size list under Product data \u2192 SeeOnWall, are read before either\nsetting, so a single product can still be sized by hand on a store that reads the page.<\/li>\n<li>Product cards carry no fast wall preview icon for a product sized from the product page, since\na card has no such field on it. Every other product on the store keeps its icon.<\/li>\n<li>The Products table and a product's SeeOnWall tab now say which size the button uses and which\nit only falls back to, so a product that looks Live but sized wrong can be diagnosed from the\nadmin.<\/li>\n<\/ul>\n\n<p>Older releases are listed in changelog.txt, shipped alongside this file, and at\nhttps:\/\/seeonwall.com\/changelog<\/p>","raw_excerpt":"Shoppers see your posters at true size on a photo of their own wall, or in a room scene, before they buy. No app, no shopper account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=345442"}],"author":[{"embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mateuszdziurdziak"}],"wp:attachment":[{"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345442"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345442"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345442"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345442"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345442"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pan.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}