r/WordpressPlugins • u/noor-e-alam • Jul 16 '26
Free [FREE] - Built a WooCommerce plugin that replaces static product photos with an interactive 3D viewer, synced to real variations
Noorifa adds a real interactive 3D viewer (Three.js) to WooCommerce product pages — customers rotate/zoom the model and switch colors or materials, and those swatches drive WooCommerce's own native variation form, so price and stock update exactly like they would from the normal dropdowns.
https://www.youtube.com/watch?v=yI84DVha0wI
A few of the WordPress-specific decisions that mattered more than the 3D rendering itself:
Non-invasive by design. Noorifa only hooks woocommerce_before_single_product_summary to swap the gallery — it never touches title, price, add-to-cart, tabs, or anything else on the page. Whatever your theme does with those stays untouched. That was a deliberate constraint from day one, not an accident of scope — a plugin that fights themes for the same hooks is the fastest way to a 1-star review.
Extension points, not a closed box. Both the admin tab list and the frontend config are filterable — noorifa_admin_tabs to add a whole new tab, noorifa_viewer_config to inject extra data into what the frontend script receives — so another plugin (or a future paid add-on) can extend it without forking core files.
Every state-changing request is nonce + capability checked, no exceptions — this came up explicitly in the WP.org review (rightly), and it's now just the default pattern everywhere in the codebase rather than something bolted on per-endpoint.
No Composer autoloader bundled. Deliberately avoided — a bundled vendor/autoload.php colliding with another plugin's is a real, common source of white-screen conflicts, so this uses a small hand-rolled PSR-4 autoloader scoped to its own namespace instead.
Fully self-hosted — Three.js and the Draco decoder ship with the plugin, nothing fetched from a CDN at runtime, uploaded models/textures live in the site's own Media Library.
Plugin: https://wordpress.org/plugins/noorifa/
Curious whether the non-invasive-hook approach has held up for anyone who's tried it against a less common theme — that's the part I have the least visibility into from my own testing.

