{"id":327404,"date":"2026-06-18T06:16:20","date_gmt":"2026-06-18T06:16:20","guid":{"rendered":"https:\/\/cn.wordpress.org\/plugins\/b2b-products-cpt\/"},"modified":"2026-07-16T07:36:48","modified_gmt":"2026-07-16T07:36:48","slug":"b2b-products","status":"publish","type":"plugin","link":"https:\/\/lmo.wordpress.org\/plugins\/b2b-products\/","author":23119578,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"DMZ B2B Product Management","header_author":"zhangduanman","header_description":"Adds a Products custom post type with product fields, taxonomies, Elementor dynamic tags, and Elementor widgets.","assets_banners_color":"c2e6e6","last_updated":"2026-07-16 07:36:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":280,"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":"zhangduanman","date":"2026-06-18 06:15:51"},"1.0.1":{"tag":"1.0.1","author":"zhangduanman","date":"2026-06-25 02:43:49"},"1.0.2":{"tag":"1.0.2","author":"zhangduanman","date":"2026-06-30 07:15:15"},"1.0.3":{"tag":"1.0.3","author":"zhangduanman","date":"2026-07-01 09:22:47"},"1.0.4":{"tag":"1.0.4","author":"zhangduanman","date":"2026-07-03 06:37:50"},"1.1.0":{"tag":"1.1.0","author":"zhangduanman","date":"2026-07-16 07:36:48"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3576640,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3576640,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3576640,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3576640,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[10553,1794,76538,210,702],"plugin_category":[45,50],"plugin_contributors":[267651],"plugin_business_model":[],"class_list":["post-327404","plugin","type-plugin","status-publish","hentry","plugin_tags-b2b","plugin_tags-custom-post-type","plugin_tags-elementor","plugin_tags-gallery","plugin_tags-products","plugin_category-ecommerce","plugin_category-media","plugin_contributors-zhangduanman","plugin_committers-zhangduanman"],"banners":{"banner":"https:\/\/ps.w.org\/b2b-products\/assets\/banner-772x250.png?rev=3576640","banner_2x":"https:\/\/ps.w.org\/b2b-products\/assets\/banner-1544x500.png?rev=3576640","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/b2b-products\/assets\/icon-128x128.png?rev=3576640","icon_2x":"https:\/\/ps.w.org\/b2b-products\/assets\/icon-256x256.png?rev=3576640","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin adds a <code>Products<\/code> custom post type designed for B2B product pages, with intentionally independent <code>dmzp_<\/code> namespacing to avoid conflicts with WooCommerce or other e-commerce plugins.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Products custom post type.<\/li>\n<li>Product Categories and Product Tags taxonomies.<\/li>\n<li>Global product attributes with reusable label, color, and image values.<\/li>\n<li>Per-product attribute assignment with sortable display order.<\/li>\n<li>Settings page for archive page selection and custom archive\/category\/tag slugs.<\/li>\n<li>Features settings tab with independent switches for Product Content, Gallery, YouTube Video, Summary, Parameters, Product Attributes, and Filter Groups. Disabled modules retain their saved data; disabled Attributes and Filter Groups are removed from the admin menu and Elementor registration.<\/li>\n<li>Classic editor support, with Gutenberg disabled for products.<\/li>\n<li>Elementor support for editing product content.<\/li>\n<li>Product summary rich text field.<\/li>\n<li>Sortable parameter repeater (name\/value pairs) with add, delete, move up, and move down controls.<\/li>\n<li>Native WordPress featured image support.<\/li>\n<li>Gallery image field with WordPress media library integration.<\/li>\n<li>YouTube product video field with a centered play button on the first gallery image and a responsive video lightbox.<\/li>\n<li>Featured image thumbnails in the Products admin list.<\/li>\n<li>Elementor dynamic tags for product summary and featured image.<\/li>\n<li>Elementor widgets: DMZ Product Gallery, Product Parameters, Product Summary, Product Attributes.<\/li>\n<li>Reusable filter groups containing product categories, tags, and global attributes.<\/li>\n<li>Elementor Product Filter widget with checkbox, radio, label, and dropdown field types plus vertical, horizontal-flat, and horizontal-all-dropdown layouts, selected filters, result totals, and mobile panels.<\/li>\n<li>AJAX filtering for Elementor Loop Grid widgets through Query ID and CSS ID binding, with archive Current Query support and page-reload fallback.<\/li>\n<li>Configurable uninstall cleanup; product data is retained by default unless deletion is explicitly enabled.<\/li>\n<li>Manual legacy product migration screen with scan, select, migrate, and permanent delete actions.<\/li>\n<\/ul>\n\n<h4>Usage<\/h4>\n\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>Navigate to <strong>Products<\/strong> in the WordPress admin.<\/li>\n<li>Create reusable label, color, or image values under <strong>Products &gt; Attributes<\/strong>.<\/li>\n<li>Add new products with featured image, gallery, optional YouTube video link, summary, parameters, and product attributes.<\/li>\n<li>Use <strong>Products &gt; Settings &gt; Features<\/strong> to enable or disable individual product modules, and use the General tab to configure archive\/category\/tag slugs.<\/li>\n<li>Use the <strong>Migration Data<\/strong> settings tab to scan and migrate legacy products when needed.<\/li>\n<li>Enable Elementor support via Elementor &gt; Settings &gt; Post Types.<\/li>\n<li>Use Elementor widgets and dynamic tags to build product pages.<\/li>\n<li>Create reusable filters under <strong>Products &gt; Filter Groups<\/strong> and choose a checkbox, radio, label, or dropdown type for each field.<\/li>\n<li>Add the <strong>Product Filter<\/strong> widget to an Elementor page or archive template, select a filter group, and enter the target Loop Grid CSS ID.<\/li>\n<li>For an explicit Products query, copy the filter group's Query ID into the target Loop Grid Query ID field. For an archive Loop Grid using Current Query, the current product\/category\/tag archive condition is retained automatically.<\/li>\n<li>Use one filter group per target grid. Exact facet counts assume the Loop Grid does not add separate include, exclude, or meta restrictions beyond the product archive\/query source.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>b2b-products<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu.<\/li>\n<li>Optionally enable Elementor support under Elementor &gt; Settings &gt; Post Types.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20conflict%20with%20woocommerce%3F\"><h3>Does this plugin conflict with WooCommerce?<\/h3><\/dt>\n<dd><p>No. Internal keys use the <code>dmzp_<\/code> prefix (post type, taxonomies, meta fields, CSS classes, and script\/style handles) to avoid conflicts with WooCommerce or other e-commerce plugins.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20custom%20archive%20page%3F\"><h3>Can I use a custom archive page?<\/h3><\/dt>\n<dd><p>Yes. Go to Products &gt; Settings and select any published page as the archive page.<\/p><\/dd>\n<dt id=\"which%20elementor%20listing%20widgets%20can%20be%20filtered%3F\"><h3>Which Elementor listing widgets can be filtered?<\/h3><\/dt>\n<dd><p>This release supports the legacy Elementor Loop Grid. Loop Carousel and Infinite Scroll are not included. Numbered pagination is AJAX-aware, and Load More uses a best-effort page fallback when Elementor exposes a next-page URL.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added: Global product attribute management with reusable text, color, and image values.<\/li>\n<li>Added: Drag-and-drop attribute ordering, multiple value assignment per product, and the Product Attributes Elementor widget.<\/li>\n<li>Added: Reusable product filter groups for product categories, tags, and global product attributes.<\/li>\n<li>Added: Checkbox, radio button, label, and dropdown filter field types.<\/li>\n<li>Added: Vertical, horizontal-flat, and horizontal-all-dropdown Elementor filter layouts.<\/li>\n<li>Added: Elementor Loop Grid AJAX filtering with Query ID, CSS ID, archive Current Query, URL history, and pagination fallback support.<\/li>\n<li>Added: Product YouTube video links, a gallery-first play button, and a responsive video lightbox.<\/li>\n<li>Added: A Features settings tab for independently controlling product content, gallery, video, summary, parameters, product attributes, and filter groups.<\/li>\n<li>Fixed: Parent\/child ordering and indentation for hierarchical taxonomies in product filters.<\/li>\n<li>Fixed: Display inconsistencies when upgrading filter groups created with the previous horizontal layout; legacy settings now map to the horizontal-flat layout.<\/li>\n<li>Fixed: Theme hover styles overriding color and image swatch borders.<\/li>\n<li>Improved: Responsive filter wrapping, mobile accordion panels, selected filters, result counts, reset controls, and accessible dropdown states.<\/li>\n<li>Improved: Single-select attributes can be deselected by clicking again, with normal, hover, and selected border controls.<\/li>\n<li>Improved: The attribute management screen now uses a WordPress-style two-column layout with better ordering for attributes, values, and product attribute groups.<\/li>\n<li>Improved: Disabled modules retain saved data while their menus, hooks, queries, AJAX endpoints, assets, and Elementor widgets remain inactive.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fixed: Removed the unwanted default white background from the Gallery widget.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed: Preserved line breaks and frontend formatting in Product Summary output.<\/li>\n<li>Improved: Refined the Gallery widget interaction experience.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed: Corrected Gallery widget display issues on mobile devices.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed: Corrected an issue where a selected featured image could fail to display.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Added: Initial official WordPress.org release.<\/li>\n<\/ul>","raw_excerpt":"Adds a Products custom post type with product fields, taxonomies, Elementor dynamic tags, and Elementor widgets for B2B product pages.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/327404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=327404"}],"author":[{"embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/zhangduanman"}],"wp:attachment":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=327404"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=327404"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=327404"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=327404"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=327404"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=327404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}