{"id":370714,"date":"2026-09-22T23:46:47","date_gmt":"2026-09-22T23:46:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/clevers-product-carousel\/"},"modified":"2026-09-22T23:46:24","modified_gmt":"2026-09-22T23:46:24","slug":"clevers-product-carousel","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/clevers-product-carousel\/","author":23404082,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.0","stable_tag":"1.4.0","tested":"7.1.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Clevers Product Carousel","header_author":"Clevers Devs","header_description":"Create customizable WooCommerce product carousels with server-side rendering and theme-overridable templates.","assets_banners_color":"","last_updated":"2026-09-22 23:46:24","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/clevers.dev","header_plugin_uri":"https:\/\/github.com\/agenciaingenium\/Clevers-Woocommerce-Product-Carousel\/","header_author_uri":"https:\/\/clevers.dev","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.0":{"tag":"1.4.0","author":"cleversdev","date":"2026-09-22 23:46:24","revision":3708259}},"upgrade_notice":{"1.4.0":"<p>Breaking: the shortcode is now <code>[cleverspr_carousel]<\/code> and the block <code>cleverspr\/carousel<\/code>. Update existing content. Also: safer WP-CLI file output and unique <code>clevprca<\/code> \/ <code>cleverspr<\/code> prefixes.<\/p>","1.3.1":"<p>WordPress.org plugin directory review fixes: enqueued admin assets, escaped render callbacks, fixed <code>Tested up to<\/code> and contributors list.<\/p>","1.2.3":"<p>Brizy integration, JSON import, frontend fallback, Gutenberg, REST API, and admin tool enhancements.<\/p>","1.2.1":"<p>Feature, admin UX, caching and accessibility improvements.<\/p>","1.1.2":"<p>Compatibility and packaging update for WordPress.org submission.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":{"cleverspr\/carousel":{"name":"cleverspr\/carousel","title":"Clevers Product Carousel"}},"tagged_versions":["1.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Admin panel with carousel configuration fields.","2":"Example WooCommerce product carousel on the frontend.","3":"Per-carousel color settings.","4":"Different card presets."}},"plugin_section":[],"plugin_tags":[786,282,702,286],"plugin_category":[45,50],"plugin_contributors":[280673],"plugin_business_model":[],"class_list":["post-370714","plugin","type-plugin","status-publish","hentry","plugin_tags-carousel","plugin_tags-ecommerce","plugin_tags-products","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-media","plugin_contributors-cleversdev","plugin_committers-cleversdev"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/clevers-product-carousel.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Clevers Product Carousel<\/strong> lets you create and display fully customizable WooCommerce product carousels from the WordPress admin area.<\/p>\n\n<ul>\n<li>Ready-to-use carousel and card presets.<\/li>\n<li>Per-carousel color settings for buttons, background, and text.<\/li>\n<li>Product filters: featured, on-sale, in-stock, and categories.<\/li>\n<li>Carousel controls: slides, autoplay, dots, and arrows.<\/li>\n<li>Gutenberg block to insert saved carousels from the editor.<\/li>\n<li>Cached rendering and dynamic CSS variables for performance.<\/li>\n<li>Theme-overridable templates (WooCommerce-style structure).<\/li>\n<\/ul>\n\n<h4>Main Features<\/h4>\n\n<ul>\n<li><strong>Customizable presets:<\/strong> 4 base designs that can be extended.<\/li>\n<li><strong>Dynamic colors:<\/strong> define colors per carousel (primary, secondary, buttons, badges, etc.).<\/li>\n<li><strong>WooCommerce compatible:<\/strong> uses WooCommerce product data and pricing.<\/li>\n<li><strong>Visual options:<\/strong> autoplay, speed, slides to show, arrows, and dots.<\/li>\n<li><strong>Theme overrides:<\/strong> copy <code>templates\/carousels\/carousel-1.php<\/code> or <code>templates\/cards\/card-1.php<\/code> to <code>\/clevers-product-carousel\/<\/code> inside your theme to customize markup.<\/li>\n<li><strong>Caching system:<\/strong> reduces repeated queries and improves rendering speed.<\/li>\n<\/ul>\n\n<h3>Third-party Libraries<\/h3>\n\n<p>This plugin bundles <strong>Slick.js v1.8.1<\/strong> by Ken Wheeler, licensed under the MIT License.\nSource: https:\/\/github.com\/kenwheeler\/slick<\/p>\n\n<h3>License<\/h3>\n\n<p>This plugin is free software, licensed under GPLv2 or later.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the WordPress plugin directory.<\/li>\n<li>Activate the plugin from the \"Plugins\" menu in WordPress.<\/li>\n<li>Create a new <strong>Product Carousel<\/strong> from the \u201cProduct Carousels\u201d menu in the admin area.<\/li>\n<li>Configure layout, colors, and filters.<\/li>\n<li><p>Insert the carousel into any page or template using the shortcode:<\/p>\n\n<p><code>[cleverspr_carousel id=\"123\"]<\/code><\/p><\/li>\n<\/ol>\n\n<p>Replace <code>123<\/code> with your carousel post ID.<\/p>\n\n<p>You can also insert it using the <strong>Clevers Product Carousel<\/strong> block in Gutenberg.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20use%20it%20without%20woocommerce%3F\"><h3>Can I use it without WooCommerce?<\/h3><\/dt>\n<dd><p>No. The plugin requires WooCommerce to load products.<\/p><\/dd>\n<dt id=\"how%20do%20i%20change%20the%20card%20layout%3F\"><h3>How do I change the card layout?<\/h3><\/dt>\n<dd><p>Copy the file from:\n    <code>wp-content\/plugins\/clevers-product-carousel\/templates\/cards\/card-1.php<\/code>\nto:\n    <code>wp-content\/themes\/tu-tema\/clevers-product-carousel\/cards\/card-1.php<\/code>\nand edit it in your theme.<\/p><\/dd>\n<dt id=\"how%20do%20i%20customize%20colors%3F\"><h3>How do I customize colors?<\/h3><\/dt>\n<dd><p>Each carousel includes color fields in the editor. You can also override CSS variables:<\/p>\n\n<pre><code>`css\n<\/code><\/pre><\/dd>\n<dt id=\"clevers-product-carousel-123%20%7B\"><h3>clevers-product-carousel-123 {<\/h3><\/dt>\n<dd><p>--clevers-primary: #e63946;\n  --clevers-secondary: #1d3557;\n}\n    `<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20provide%20hooks%2Ffilters%20for%20developers%3F\"><h3>Does the plugin provide hooks\/filters for developers?<\/h3><\/dt>\n<dd><p>Yes. The plugin offers several filters and actions for developers to extend its functionality:<\/p>\n\n<p><strong>Filters:<\/strong><\/p>\n\n<ul>\n<li><code>cleverspr_carousel_query_args<\/code> (filter): Modify product query args before product lookup. Receives <code>$args<\/code>, <code>$carousel_id<\/code>, and <code>$meta<\/code>.<\/li>\n<li><code>cleverspr_carousel_template_path<\/code> (filter): Override template relative path inside <code>templates\/<\/code>.<\/li>\n<li><code>cleverspr_carousel_css_vars<\/code> (filter): Adjust per-carousel CSS variables before inline output. Receives <code>$vars<\/code>, <code>$carousel_id<\/code>, <code>$settings<\/code>, and <code>$vars_map<\/code>.<\/li>\n<li><code>cleverspr_carousel\/cache_ttl<\/code> (filter): Control the TTL of the transient cache for rendered carousel HTML.<\/li>\n<li><code>cleverspr_carousel\/settings<\/code> (filter): Modify carousel settings before rendering.<\/li>\n<li><code>cleverspr_carousel\/card_template_relpath<\/code> (filter): Override card template path.<\/li>\n<li><code>cleverspr_carousel\/slider_data_attributes<\/code> (filter): Modify slider data attributes.<\/li>\n<\/ul>\n\n<p><strong>Actions:<\/strong><\/p>\n\n<ul>\n<li><code>cleverspr_carousel_before_render<\/code> (action): Fires right before carousel template rendering. Receives <code>$carousel_id<\/code>, <code>$settings<\/code>, and <code>$products<\/code>.<\/li>\n<li><code>cleverspr_carousel_after_render<\/code> (action): Fires right after carousel template rendering. Receives <code>$carousel_id<\/code>, <code>$settings<\/code>, and <code>$products<\/code>.<\/li>\n<\/ul>\n\n<p><strong>Examples:<\/strong><\/p>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>\/\/ Modify query to limit price range\nadd_filter( 'cleverspr_carousel_query_args', function( $args, $carousel_id, $meta ) {\n    $args['price_range'] = [ 20, 200 ];\n    return $args;\n}, 10, 3 );<\/p>\n\n<p>\/\/ Add custom CSS variables\nadd_filter( 'cleverspr_carousel_css_vars', function( $vars, $carousel_id, $settings, $vars_map ) {\n    $vars[] = '--clevers-margen-cards: 24px;';\n    return $vars;\n}, 10, 4 );<\/p>\n\n<p>\/\/ Track carousel renders\nadd_action( 'cleverspr_carousel_before_render', function( $carousel_id, $settings, $products ) {\n    do_action( 'mi_tracking\/carousel_render_start', $carousel_id, count( $products ) );\n}, 10, 3 );\n    `<\/p>\n\n<p>Namespace variants such as <code>cleverspr_carousel\/query_args<\/code>, <code>cleverspr_carousel\/before<\/code>, and <code>cleverspr_carousel\/after<\/code> are also available.<\/p><\/dd>\n<dt id=\"wp-cli%20commands\"><h3>WP-CLI commands<\/h3><\/dt>\n<dd><p>When WP-CLI is available, the plugin registers a <code>clevprca-carousel<\/code> command namespace:<\/p>\n\n<ul>\n<li><code>wp clevprca-carousel list [--preset=&lt;n&gt;]<\/code> \u2014 print every carousel (id, title, status, preset, shortcode) as a table. Filter by preset with <code>--preset<\/code>.<\/li>\n<li><code>wp clevprca-carousel flush-cache<\/code> \u2014 delete all <code>cleverspr_carousel_*<\/code> cache transients and bump the global cache version so in-process renders rebuild. Use after imports or when prices\/stock have changed but the cache has not expired yet.<\/li>\n<li><code>wp clevprca-carousel render &lt;id&gt; [--file=&lt;name&gt;]<\/code> \u2014 print the rendered HTML for a given carousel id to stdout, or write it into the plugin uploads directory. Handy for headless smoke tests and template debugging.<\/li>\n<\/ul>\n\n<p>Examples:<\/p>\n\n<pre><code>`\n<\/code><\/pre>\n\n<p>wp clevprca-carousel list\nwp clevprca-carousel list --preset=2\nwp clevprca-carousel flush-cache\nwp clevprca-carousel render 42 --file=carousel-42.html\n    `<\/p>\n\n<p>These commands are loaded only when <code>WP_CLI<\/code> is defined, so there is no overhead in normal HTTP requests.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li><strong>Breaking change:<\/strong> the shortcode tag changed from <code>[clevers_carousel]<\/code> to <code>[cleverspr_carousel]<\/code>, and the Gutenberg block namespace from <code>clevers-product-carousel\/carousel<\/code> to <code>cleverspr\/carousel<\/code>. Existing content referencing the old names must be updated. The CPT slug (<code>clevers_carousel<\/code>) and the post meta keys are unchanged, so existing carousel posts keep their settings.<\/li>\n<li>WP-CLI <code>render --file<\/code> no longer writes to an arbitrary path. <code>--file<\/code> now takes a plain filename written inside <code>wp-content\/uploads\/clevers-product-carousel\/<\/code>, resolved at runtime with <code>wp_upload_dir()<\/code>; path separators, <code>..<\/code> and stream wrappers are rejected.<\/li>\n<li>Renamed every plugin-owned global identifier from the shared <code>clv<\/code> \/ <code>clevers<\/code> prefixes to the unique <code>clevprca<\/code> prefix (functions, classes, constants, options, transients, post meta, script\/style handles, nonces, AJAX actions, WP-CLI namespace).<\/li>\n<li>Removed the <code>function_exists()<\/code> guards around the plugin's own helper functions, which could cause a fatal error if another plugin loaded a same-named function first.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Removed <code>Tested up to<\/code> from the main plugin header (declared only in readme.txt per WordPress.org guidelines) and bumped it to 7.1.<\/li>\n<li>Moved all admin inline <code>&lt;style&gt;<\/code>\/<code>&lt;script&gt;<\/code> blocks to properly enqueued <code>assets\/admin.css<\/code> and <code>assets\/admin.js<\/code> files.<\/li>\n<li>Moved the Brizy preview <code>&lt;style&gt;<\/code> injection in the renderer to <code>wp_add_inline_style()<\/code> so it ships through the standard stylesheet pipeline.<\/li>\n<li>Wrapped shortcode and Gutenberg block render callbacks in <code>wp_kses_post()<\/code> to defend against untrusted content that may pass through the <code>clevers_product_carousel\/rendered_html<\/code> filter.<\/li>\n<li>Renamed internal <code>CLV_*<\/code> constants to <code>CLEVPRCA_*<\/code> to satisfy the prefix length requirement (4+ characters, distinct from common words).<\/li>\n<li>Updated the <code>Contributors<\/code> field in readme.txt to the plugin owner (<code>cleversdev<\/code>).<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added WP-CLI commands: <code>wp clevprca-carousel list<\/code>, <code>wp clevprca-carousel flush-cache<\/code>, <code>wp clevprca-carousel render &lt;id&gt;<\/code>. Useful for staging environments, CI pipelines, and headless smoke tests.<\/li>\n<li>Documented developer hooks (filters\/actions) more clearly in the FAQ.<\/li>\n<li>No new runtime dependencies; WP-CLI integration adds zero overhead when WP-CLI is not in use.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Enhanced Brizy editor integration.<\/li>\n<li>Refined JSON import flow.<\/li>\n<li>Improved frontend fallback behavior.<\/li>\n<li>Added Gutenberg block support improvements.<\/li>\n<li>Added queue-metrics observability fields (pending\/processed\/failed, avg time, last error) for the rendering pipeline.<\/li>\n<li>Enhanced admin tools and management UX.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Added Gutenberg block for selecting saved carousels.<\/li>\n<li>Improved admin UI (sorting, categories selector, shortcode box, preset preview).<\/li>\n<li>Fixed filter combination logic for on-sale + featured products.<\/li>\n<li>Expanded cache invalidation hooks for WooCommerce updates.<\/li>\n<li>Accessibility and UX improvements for Slick carousel navigation.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Updated compatibility headers for the latest WordPress version.<\/li>\n<li>Improved release packaging for WordPress.org-ready ZIP files.<\/li>\n<li>Code quality fixes for Plugin Check \/ WordPress Coding Standards.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added per-carousel color system (dynamic CSS variables).<\/li>\n<li>Improved rendering with cache support.<\/li>\n<li>Added theme template override support.<\/li>\n<li>General code refactor.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release with WooCommerce product carousel support.<\/li>\n<\/ul>","raw_excerpt":"Create professional WooCommerce product carousels with customizable presets, per-carousel colors, and a responsive Slick.js-based layout.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/370714","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=370714"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/cleversdev"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=370714"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=370714"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=370714"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=370714"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=370714"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=370714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}