<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kushang Tailor</title>
    <description>The latest articles on DEV Community by Kushang Tailor (@kushang_tailor).</description>
    <link>https://dev.to/kushang_tailor</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3900414%2F0d2c9537-2b52-4907-b8ab-96018be8376a.png</url>
      <title>DEV Community: Kushang Tailor</title>
      <link>https://dev.to/kushang_tailor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kushang_tailor"/>
    <language>en</language>
    <item>
      <title>How I Built a WooCommerce Plugin That Works With Every Page Builder</title>
      <dc:creator>Kushang Tailor</dc:creator>
      <pubDate>Mon, 27 Apr 2026 13:14:47 +0000</pubDate>
      <link>https://dev.to/kushang_tailor/how-i-built-a-woocommerce-plugin-that-works-with-every-page-builder-4c2a</link>
      <guid>https://dev.to/kushang_tailor/how-i-built-a-woocommerce-plugin-that-works-with-every-page-builder-4c2a</guid>
      <description>&lt;h2&gt;
  
  
  The Problem I Noticed
&lt;/h2&gt;

&lt;p&gt;When I was working on WooCommerce stores for my clients, I kept &lt;br&gt;
running into the same frustrating issue — there was no good way &lt;br&gt;
to create a fully customizable WooCommerce product category page &lt;br&gt;
that worked across all editors.&lt;/p&gt;

&lt;p&gt;Every solution I found was locked to a specific page builder. &lt;br&gt;
Elementor users had one option. Gutenberg users had another. &lt;br&gt;
SiteOrigin users were mostly out of luck. And if your client &lt;br&gt;
used no editor at all — just plain shortcodes — forget it.&lt;/p&gt;

&lt;p&gt;I thought: &lt;em&gt;why should the editor choice limit what you can &lt;br&gt;
build?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So I built the &lt;strong&gt;Product Category&lt;/strong&gt; plugin — and published it &lt;br&gt;
on WordPress.org.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the Plugin Does
&lt;/h2&gt;

&lt;p&gt;In simple terms, it lets you create a fully customizable &lt;br&gt;
WooCommerce product category listing page — and it doesn't &lt;br&gt;
matter which editor you or your client prefers.&lt;/p&gt;

&lt;p&gt;It works with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Elementor&lt;/strong&gt; — via a dedicated Widget with live preview&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Gutenberg / Block Editor&lt;/strong&gt; — via its own custom React Block&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;SiteOrigin&lt;/strong&gt; — via a Widget&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;WP Bakery / JS Composer&lt;/strong&gt; — via Shortcode&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;No editor / Classic editor&lt;/strong&gt; — via Shortcode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One plugin. Every editor. No compromises.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;Here's what you can control right inside the plugin settings:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set a custom title for your category listing&lt;/li&gt;
&lt;li&gt;Show or hide specific product categories via dropdown&lt;/li&gt;
&lt;li&gt;Choose from multiple category display styles&lt;/li&gt;
&lt;li&gt;Set rows and columns for the layout grid&lt;/li&gt;
&lt;li&gt;Sort categories by Name or Slug (ASC / DESC order)&lt;/li&gt;
&lt;li&gt;Show or hide category descriptions&lt;/li&gt;
&lt;li&gt;Show or hide pagination&lt;/li&gt;
&lt;li&gt;Show or hide category thumbnail images&lt;/li&gt;
&lt;li&gt;Add proper Alt tags to category images (for SEO &amp;amp; 
accessibility)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the best part — with Elementor and Gutenberg, all of this &lt;br&gt;
is &lt;strong&gt;live preview&lt;/strong&gt;. You see changes in real time as you design.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Challenge: Supporting Multiple Editors
&lt;/h2&gt;

&lt;p&gt;The hardest part wasn't building the features — it was &lt;br&gt;
architecting the plugin so that the same core logic could power &lt;br&gt;
four completely different integration points.&lt;/p&gt;

&lt;p&gt;Each editor has its own way of registering and rendering &lt;br&gt;
components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Elementor&lt;/strong&gt; uses a Widget class that extends 
&lt;code&gt;\Elementor\Widget_Base&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gutenberg&lt;/strong&gt; uses &lt;code&gt;register_block_type()&lt;/code&gt; with a 
&lt;code&gt;block.json&lt;/code&gt; definition&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SiteOrigin&lt;/strong&gt; uses &lt;code&gt;SiteOrigin_Widget&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shortcode&lt;/strong&gt; uses WordPress's &lt;code&gt;add_shortcode()&lt;/code&gt; function&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key decision I made was to keep the &lt;strong&gt;rendering logic &lt;br&gt;
centralized&lt;/strong&gt; in one function, and have each editor integration &lt;br&gt;
simply call that function with its own set of parameters. This &lt;br&gt;
way, a bug fix or a new feature only needs to be written once — &lt;br&gt;
and all four editor integrations benefit immediately.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Building this plugin taught me a lot about how different &lt;br&gt;
WordPress ecosystems actually work under the hood. Each page &lt;br&gt;
builder has its own lifecycle, its own way of passing data, and &lt;br&gt;
its own rendering context.&lt;/p&gt;

&lt;p&gt;It also taught me the importance of &lt;strong&gt;backward compatibility&lt;/strong&gt;. &lt;br&gt;
The plugin has been live since 2019 and I've maintained it &lt;br&gt;
through multiple WordPress versions — all the way up to WP 6.9. &lt;br&gt;
Every update had to ensure existing users weren't broken.&lt;/p&gt;

&lt;p&gt;And perhaps most importantly — it taught me to &lt;strong&gt;listen to &lt;br&gt;
users&lt;/strong&gt;. Features like pagination, Alt tag support, and the &lt;br&gt;
Gutenberg block were all added based on real feedback from people &lt;br&gt;
using the plugin in production.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;p&gt;The plugin currently has &lt;strong&gt;200+ active installations&lt;/strong&gt; on &lt;br&gt;
WordPress.org, a &lt;strong&gt;5-star rating&lt;/strong&gt;, and has been stable through &lt;br&gt;
7 years of WordPress updates.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://wordpress.org/plugins/product-category/" rel="noopener noreferrer"&gt;Check it out on WordPress.org&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If you're a WooCommerce developer who's ever struggled with &lt;br&gt;
editor compatibility, I hope this gives you some ideas. And if &lt;br&gt;
you use the plugin, I'd love to hear your feedback!&lt;/p&gt;

&lt;p&gt;Feel free to connect — I'm always happy to talk WordPress, &lt;br&gt;
WooCommerce, or plugin architecture. 🙌&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>woocommerce</category>
      <category>php</category>
      <category>wpdev</category>
    </item>
  </channel>
</rss>
