{"id":292987,"date":"2026-06-04T11:21:20","date_gmt":"2026-06-04T11:21:20","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/carousel-kit\/"},"modified":"2026-06-08T12:07:47","modified_gmt":"2026-06-08T12:07:47","slug":"rt-carousel","status":"publish","type":"plugin","link":"https:\/\/zh-hk.wordpress.org\/plugins\/rt-carousel\/","author":4286506,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.2","stable_tag":"2.0.2","tested":"7.0","requires":"6.6","requires_php":"8.2","requires_plugins":null,"header_name":"rtCarousel","header_author":"rtCamp","header_description":"Carousel block using Embla and WordPress Interactivity API.","assets_banners_color":"c8cdea","last_updated":"2026-06-08 12:07:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/rtCamp\/rt-carousel","header_author_uri":"https:\/\/rtcamp.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":79,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.1":{"tag":"2.0.1","author":"rtcamp","date":"2026-06-04 11:21:04"},"2.0.2":{"tag":"2.0.2","author":"rtcamp","date":"2026-06-08 12:07:47"}},"upgrade_notice":{"2.0.0":"<p>Plugin renamed from &quot;Carousel Kit&quot; to &quot;rtCarousel&quot;. Existing carousel blocks are automatically migrated on activation. You will see an admin notice prompting you to deactivate the old Carousel Kit plugin, which can then be safely deleted.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3560803,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3560803,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3560803,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3560803,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"rt-carousel\/carousel-dots":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"version":"1.0.0","name":"rt-carousel\/carousel-dots","title":"Carousel Dots","category":"rt-carousel","icon":"ellipsis","ancestor":["rt-carousel\/carousel"],"description":"Navigation dots for the carousel.","textdomain":"rt-carousel","attributes":{},"supports":{"interactivity":true},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css"},"rt-carousel\/carousel":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"version":"1.0.0","name":"rt-carousel\/carousel","title":"Carousel","category":"rt-carousel","icon":"columns","description":"Carousel container using Embla and Interactivity API.","textdomain":"rt-carousel","providesContext":{"rt-carousel\/carousel\/allowedSlideBlocks":"allowedSlideBlocks"},"supports":{"interactivity":true,"align":["wide","full"],"html":false,"color":{"text":false,"background":true}},"attributes":{"allowedSlideBlocks":{"type":"array","default":[]},"loop":{"type":"boolean","default":false},"dragFree":{"type":"boolean","default":false},"carouselAlign":{"type":"string","default":"start"},"containScroll":{"type":"string","default":"trimSnaps"},"direction":{"type":"string","default":"ltr","enum":["ltr","rtl"]},"axis":{"type":"string","default":"x","enum":["x","y"]},"height":{"type":"string","default":"300px"},"autoplay":{"type":"boolean","default":false},"autoplayDelay":{"type":"number","default":4000},"autoplayStopOnInteraction":{"type":"boolean","default":true},"autoplayStopOnMouseEnter":{"type":"boolean","default":false},"ariaLabel":{"type":"string","default":"Carousel"},"slideGap":{"type":"number","default":0},"slidesToScroll":{"type":"string","default":"1"}},"editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","style":"file:.\/style-index.css","viewScriptModule":"file:.\/view.js"},"rt-carousel\/carousel-counter":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"version":"1.0.0","name":"rt-carousel\/carousel-counter","title":"Carousel Counter","category":"rt-carousel","icon":"editor-ol","ancestor":["rt-carousel\/carousel"],"description":"Current slide counter for the carousel.","textdomain":"rt-carousel","attributes":{},"supports":{"interactivity":true},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css"},"rt-carousel\/carousel-progress":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"version":"1.0.0","name":"rt-carousel\/carousel-progress","title":"Carousel Progress","category":"rt-carousel","icon":"minus","ancestor":["rt-carousel\/carousel"],"description":"Progress bar for the carousel.","textdomain":"rt-carousel","attributes":{},"supports":{"interactivity":true},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css"},"rt-carousel\/carousel-controls":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"version":"1.0.0","name":"rt-carousel\/carousel-controls","title":"Carousel Controls","category":"rt-carousel","icon":"button","ancestor":["rt-carousel\/carousel"],"description":"Navigation buttons for the carousel.","textdomain":"rt-carousel","attributes":{},"supports":{"interactivity":true},"editorScript":"file:.\/index.js","style":"file:.\/style-index.css"},"rt-carousel\/carousel-slide":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"version":"1.0.0","name":"rt-carousel\/carousel-slide","title":"Carousel Slide","category":"rt-carousel","icon":"slides","parent":["rt-carousel\/carousel-viewport"],"description":"A single slide within the carousel.","textdomain":"rt-carousel","attributes":{"verticalAlignment":{"type":"string"}},"usesContext":["rt-carousel\/carousel\/allowedSlideBlocks"],"editorScript":"file:.\/index.js"},"rt-carousel\/carousel-viewport":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"version":"1.0.0","name":"rt-carousel\/carousel-viewport","title":"Carousel Viewport","category":"rt-carousel","icon":"cover-image","parent":["rt-carousel\/carousel"],"description":"Viewport container for carousel slides.","textdomain":"rt-carousel","attributes":{},"supports":{"interactivity":true},"editorScript":"file:.\/index.js"}},"tagged_versions":["2.0.1","2.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3560803,"resolution":"1","location":"assets","locale":"","width":3022,"height":1608},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3560803,"resolution":"2","location":"assets","locale":"","width":3008,"height":1610},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3560803,"resolution":"3","location":"assets","locale":"","width":3010,"height":1712},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3560803,"resolution":"4","location":"assets","locale":"","width":3004,"height":1706}},"screenshots":{"1":"Carousel block in the editor with multiple slides"}},"plugin_section":[],"plugin_tags":[1220,786,265805,228979,611],"plugin_category":[50],"plugin_contributors":[265811,265808,78551,266187,265807,265810,177818,78533,230034,265809],"plugin_business_model":[],"class_list":["post-292987","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-carousel","plugin_tags-embla","plugin_tags-interactivity-api","plugin_tags-slider","plugin_category-media","plugin_contributors-aishwarryapande","plugin_contributors-aviral89","plugin_contributors-gagan0123","plugin_contributors-iamdanih17","plugin_contributors-immasud","plugin_contributors-imrraaj","plugin_contributors-mi5t4n","plugin_contributors-rtcamp","plugin_contributors-up1512001","plugin_contributors-vishal4669","plugin_committers-rtcamp"],"banners":{"banner":"https:\/\/ps.w.org\/rt-carousel\/assets\/banner-772x250.png?rev=3560803","banner_2x":"https:\/\/ps.w.org\/rt-carousel\/assets\/banner-1544x500.png?rev=3560803","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/rt-carousel\/assets\/icon-128x128.png?rev=3560803","icon_2x":"https:\/\/ps.w.org\/rt-carousel\/assets\/icon-256x256.png?rev=3560803","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/rt-carousel\/assets\/screenshot-1.png?rev=3560803","caption":"Carousel block in the editor with multiple slides"},{"src":"https:\/\/ps.w.org\/rt-carousel\/assets\/screenshot-2.png?rev=3560803","caption":""},{"src":"https:\/\/ps.w.org\/rt-carousel\/assets\/screenshot-3.png?rev=3560803","caption":""},{"src":"https:\/\/ps.w.org\/rt-carousel\/assets\/screenshot-4.png?rev=3560803","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>rtCarousel<\/strong> is a flexible, accessible carousel block for the WordPress block editor. Build dynamic carousels for posts, testimonials, images, and more\u2014without writing code.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Compound Block Architecture<\/strong> \u2013 Mix and match any blocks inside the carousel<\/li>\n<li><strong>High Performance<\/strong> \u2013 Powered by Embla Carousel v8<\/li>\n<li><strong>Interactivity API<\/strong> \u2013 Reactive state management with zero hydration overhead<\/li>\n<li><strong>Query Loop Support<\/strong> \u2013 Each post in a Query Loop becomes a slide automatically<\/li>\n<li><strong>Accessibility<\/strong> \u2013 W3C-compliant roles, labels, and keyboard navigation<\/li>\n<li><strong>RTL Support<\/strong> \u2013 Built-in support for Right-to-Left languages<\/li>\n<\/ul>\n\n<h4>Block Components<\/h4>\n\n<ol>\n<li><strong>Carousel<\/strong> \u2013 The main wrapper and controller<\/li>\n<li><strong>Carousel Viewport<\/strong> \u2013 The visible scrolling area<\/li>\n<li><strong>Carousel Slide<\/strong> \u2013 Container for individual slides<\/li>\n<li><strong>Carousel Controls<\/strong> \u2013 Previous\/Next navigation buttons<\/li>\n<li><strong>Carousel Dots<\/strong> \u2013 Pagination indicators<\/li>\n<\/ol>\n\n<h4>Use Cases<\/h4>\n\n<ul>\n<li>Image galleries and sliders<\/li>\n<li>Testimonial carousels<\/li>\n<li>Post\/product showcases<\/li>\n<li>Logo showcases<\/li>\n<li>Hero banners with multiple slides<\/li>\n<\/ul>\n\n<h4>Source Code<\/h4>\n\n<p>This plugin release includes transpiled production assets for performance. The complete, human-readable source code is publicly available at:<\/p>\n\n<ul>\n<li>https:\/\/github.com\/rtCamp\/rt-carousel<\/li>\n<\/ul>\n\n<p>Build scripts, development files, and original TypeScript\/JavaScript\/PHP sources are maintained in that repository.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>rt-carousel<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>In the block editor, search for \"Carousel\" and insert the block<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20with%20full%20site%20editing%3F\"><h3>Does it work with Full Site Editing?<\/h3><\/dt>\n<dd><p>Yes! rtCarousel is fully compatible with FSE. Use it in templates, template parts, and anywhere blocks are supported.<\/p><\/dd>\n<dt id=\"can%20i%20nest%20other%20blocks%20inside%20slides%3F\"><h3>Can I nest other blocks inside slides?<\/h3><\/dt>\n<dd><p>Absolutely. Each slide accepts any WordPress block\u2014images, paragraphs, groups, columns, and third-party blocks.<\/p><\/dd>\n<dt id=\"does%20it%20support%20the%20query%20loop%20block%3F\"><h3>Does it support the Query Loop block?<\/h3><\/dt>\n<dd><p>Yes. Add a Query Loop inside the Carousel Viewport, and each post becomes a slide automatically.<\/p><\/dd>\n<dt id=\"is%20it%20accessible%3F\"><h3>Is it accessible?<\/h3><\/dt>\n<dd><p>Yes. The carousel follows W3C accessibility guidelines with proper ARIA roles, labels, and full keyboard navigation.<\/p><\/dd>\n<dt id=\"can%20i%20have%20multiple%20carousels%20on%20the%20same%20page%3F\"><h3>Can I have multiple carousels on the same page?<\/h3><\/dt>\n<dd><p>Yes. Each carousel instance maintains its own independent state.<\/p><\/dd>\n<dt id=\"i%20am%20using%20%22carousel%20kit%22.%20how%20do%20i%20upgrade%20to%20rtcarousel%3F\"><h3>I am using \"Carousel Kit\". How do I upgrade to rtCarousel?<\/h3><\/dt>\n<dd><p>rtCarousel is the successor to Carousel Kit. Simply install and activate rtCarousel \u2014 it will automatically migrate all existing carousel blocks in your content. You will see an admin notice prompting you to deactivate the old Carousel Kit plugin. After deactivating it, you can safely delete it.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>New: Carousel Counter block with an accessible current\/total slide indicator<\/li>\n<li>New: Slide template picker and starter templates for new carousel blocks<\/li>\n<li>New: Terms Query support and Terms Query carousel pattern<\/li>\n<li>Tweak: Confirm compatibility with WordPress 7.0<\/li>\n<li>Tweak: Update JavaScript dependencies for upstream security and maintenance fixes<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>New: Add a11y announcements for carousel slide changes<\/li>\n<li>Fix: Carousel dot focus loss with VoiceOver activation<\/li>\n<li>Refactor: Replace automatic plugin deactivation with an admin notice<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>New: Carousel progress bar block<\/li>\n<li>New: Vertical alignment support for carousel slides<\/li>\n<li>New: wp-env configuration for local development<\/li>\n<li>Fix: Navigation buttons and drag not working in vertical Query Loop carousels<\/li>\n<li>Fix: Block toolbar remaining visible when selected slide scrolls out of view<\/li>\n<li>Fix: Carousel initialization state not properly tracked<\/li>\n<li>Fix: Remove development files from distribution package<\/li>\n<li>Refactor: Rename plugin from \"Carousel Kit\" to \"rtCarousel\" with automatic content migration<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>New: Update minimum requirements to PHP 8.2 and WordPress 6.6<\/li>\n<li>New: Implement PHP class autoloader for better performance and security<\/li>\n<li>New: Add localization support and updated .pot files<\/li>\n<li>New: Add uninstall.php for clean data removal upon plugin deletion<\/li>\n<li>New: Add placeholder logos and updated hero carousel patterns<\/li>\n<li>New: Add new screenshot images for WordPress.org plugin preview<\/li>\n<li>New: Add direct access protection for core PHP files and Autoloader<\/li>\n<li>Fix: Resolve CSS linting issues and remove unnecessary grid properties<\/li>\n<li>Fix: Improve transition effects and clean up unused style properties<\/li>\n<li>Fix: Update package dependencies (minimatch, serialize-javascript, svgo, and immutable)<\/li>\n<li>Fix: Update @wordpress\/scripts to allow minor updates and maintain compatibility<\/li>\n<li>Fix: Refine .distignore and distribution targets to minimize package size<\/li>\n<li>Fix: Standardize script paths in composer.json to use local binaries<\/li>\n<li>Fix: Correct release links in documentation and update contributor lists<\/li>\n<li>Fix: Update PHPCS and PHPStan configurations for better development workflow<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fix: (Editor): Prevent ghost slides and state corruption when clicking between slides<\/li>\n<li>Fix: Swap misplaced editor images and remove hardcoded aspect ratio<\/li>\n<li>Fix: Outdated plugin version in plugin header<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fix: Demo pattern now shows 4 slides per view<\/li>\n<li>Fix: Replace PNG images with optimized WEBP format<\/li>\n<li>New: Setup wizard styles<\/li>\n<li>New: Slide appender and setup wizard<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/github.com\/rtCamp\/rt-carousel\/blob\/main\/CHANGELOG.md\">CHECK THE FULL CHANGELOG<\/a><\/p>","raw_excerpt":"A modular, high-performance carousel block for WordPress, powered by the Interactivity API and Embla Carousel.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/292987","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=292987"}],"author":[{"embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rtcamp"}],"wp:attachment":[{"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=292987"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=292987"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=292987"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=292987"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=292987"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/zh-hk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=292987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}