{"id":382773,"date":"2026-10-08T22:52:19","date_gmt":"2026-10-08T22:52:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/effortless-columns-to-carousel\/"},"modified":"2026-10-08T22:51:50","modified_gmt":"2026-10-08T22:51:50","slug":"effortless-columns-to-carousel","status":"publish","type":"plugin","link":"https:\/\/lmo.wordpress.org\/plugins\/effortless-columns-to-carousel\/","author":23148025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.7","stable_tag":"1.0.7","tested":"7.1.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"EffortLess Columns to Carousel","header_author":"domclic","header_description":"Adds a \"Display as carousel\" option to the core Columns block. Each column becomes one slide.","assets_banners_color":"","last_updated":"2026-10-08 22:51:50","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/id7.dev\/donate\/","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":67,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.7":{"tag":"1.0.7","author":"domclic","date":"2026-10-08 22:51:50","revision":3735660}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.7"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1220,786,854,148076,611],"plugin_category":[50],"plugin_contributors":[241557],"plugin_business_model":[],"class_list":["post-382773","plugin","type-plugin","status-publish","hentry","plugin_tags-block","plugin_tags-carousel","plugin_tags-columns","plugin_tags-gutenberg","plugin_tags-slider","plugin_category-media","plugin_contributors-domclic","plugin_committers-domclic"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/effortless-columns-to-carousel.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>The plugin adds a Carousel panel to the block sidebar of the core Columns block. When \"Display as carousel\" is switched on, the front-end output of that block changes from a grid to a horizontally scrolling row using CSS scroll-snap. A small JavaScript file adds arrows, dots, keyboard navigation and optional autoplay. The plugin does not add a new block, so existing content is not changed and switching the option off restores the normal columns.<\/p>\n\n<p>The CSS and JavaScript files are loaded only on pages that contain a Columns block with the carousel switched on.<\/p>\n\n<h4>Settings (Carousel panel in the block sidebar)<\/h4>\n\n<ul>\n<li><strong>Display as carousel<\/strong> - Off by default. Turns the block into a carousel.<\/li>\n<li><strong>Slides per view (desktop)<\/strong> - 1 to 6, default 3. Applies above 781px wide.<\/li>\n<li><strong>Slides per view (tablet)<\/strong> - 1 to 6, default 2. Applies from 601px to 781px.<\/li>\n<li><strong>Slides per view (mobile)<\/strong> - 1 to 6, default 1. Applies at 600px and below.<\/li>\n<li><strong>Autoplay<\/strong> - Off by default. Advances one slide at a time. Pauses while the pointer or keyboard focus is inside the carousel. Not used when the visitor's system requests reduced motion.<\/li>\n<li><strong>Delay (ms)<\/strong> - Shown when autoplay is on. 1000 to 30000, default 4000. Autoplay stops for good once the visitor uses the arrows, dots or keyboard, or touches or drags the slides.<\/li>\n<li><strong>Show arrows<\/strong> - On by default. Previous and next buttons.<\/li>\n<li><strong>Show dots<\/strong> - On by default. One button per scroll position.<\/li>\n<li><strong>Loop<\/strong> - Off by default. When on, the next button on the last position returns to the first, and previous on the first goes to the last. Autoplay always returns to the first slide after the last.<\/li>\n<\/ul>\n\n<h3>Notes and limitations<\/h3>\n\n<ul>\n<li>Each direct Column of the block is one slide. Slides per view sets how many are visible at once.<\/li>\n<li>If the number of slides is not larger than slides per view, the carousel has nothing to scroll.<\/li>\n<li>Without JavaScript the row still scrolls horizontally with its scrollbar, touch or trackpad, but arrows and dots are not shown.<\/li>\n<li>When every column fits in view, the arrows and dots are hidden and autoplay does nothing.<\/li>\n<li>If both arrows and dots are switched off, the scrollbar stays visible so the row can still be scrolled with a mouse.<\/li>\n<li>The gap between slides is the same gap the Columns block uses without the carousel.<\/li>\n<li>The \"Stack on mobile\" setting of the Columns block does not apply while the carousel is on.<\/li>\n<li>On multisite the option is stored in the post content of each site; there is no network setting.<\/li>\n<li>Not covered: vertical carousels, thumbnails, and other block types.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin does not connect to any external service.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>\/wp-content\/plugins\/<\/code> or install the zip under Plugins &gt; Add New.<\/li>\n<li>Activate the plugin under Plugins.<\/li>\n<li>Edit a page and add a Columns block with several columns.<\/li>\n<li>Select the Columns block, open the block sidebar and expand the Carousel panel.<\/li>\n<li>Switch on \"Display as carousel\", choose the options, then update the page.<\/li>\n<\/ol>\n\n<p>A short help page is available under Settings &gt; Columns Carousel. The plugin has no global settings.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"i%20switched%20it%20on%20but%20nothing%20happens\"><h3>I switched it on but nothing happens<\/h3><\/dt>\n<dd><p>Check the following:<\/p>\n\n<ul>\n<li>The option is on the Columns block itself, not on a single Column inside it.<\/li>\n<li>The page was updated after the change. The editor preview does not scroll; the carousel is visible on the front end only.<\/li>\n<li>The block has at least two columns. With one column no controls are added.<\/li>\n<li>A caching plugin is not serving an older version of the page.<\/li>\n<li>The theme does not remove the standard <code>wp-block-columns<\/code> class.<\/li>\n<\/ul><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20row%20or%20group%20block%3F\"><h3>Does it work with the Row or Group block?<\/h3><\/dt>\n<dd><p>No. Only the core Columns block is supported.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Fix: the gap between slides now matches the gap the theme applies to the Columns block.<\/li>\n<li>Fix: with both arrows and dots switched off, the scrollbar stays visible so mouse users can still scroll.<\/li>\n<li>Fix: keyboard focus stays on an arrow button when it reaches the first or last slide.<\/li>\n<li>Fix: on classic themes, the carousel stylesheet loads in the page head for the current post, so the columns no longer flash as a grid first.<\/li>\n<li>Fix: Columns blocks with a background colour keep their inner padding when slides snap into place.<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Fix: the \"Carousel\" label in the editor no longer takes up a column slot in the block's row, and it is now translatable.<\/li>\n<li>Fix: touching or dragging the slides ends autoplay, so it no longer moves the row under a swiping visitor.<\/li>\n<li>Fix: arrows and dots are hidden when every column already fits in view.<\/li>\n<li>Fix: arrow and dot styles hold up against theme button styles (sizes, shadows, hover colours).<\/li>\n<li>Fix: arrows are centred on the slides rather than on the slides plus the dots.<\/li>\n<li>Fix: the scrollbar stays visible when JavaScript is not running, so mouse users can still scroll.<\/li>\n<li>Fix: a carousel is never set up twice on the same block.<\/li>\n<li>Fix: a negative column gap is ignored; a gap of 0 and preset spacing values are accepted.<\/li>\n<li>Change: arrows and dots show a visible focus outline for keyboard users.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fix: right-to-left layouts: arrows, arrow glyphs and keyboard direction are mirrored.<\/li>\n<li>Fix: autoplay pauses while the carousel is offscreen or the browser tab is hidden.<\/li>\n<li>Fix: fast repeated clicks on the arrows keep advancing during a smooth scroll.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fix: slide text colour is no longer forced to dark grey, which made text unreadable on dark themes.<\/li>\n<li>Fix: alignment classes (wide, full, left, right, center) on the Columns block are kept when the carousel wraps it.<\/li>\n<li>Fix: the gap between slides now follows the block's own gap setting and the theme default.<\/li>\n<li>Fix: autoplay no longer stays paused on touch screens after a tap.<\/li>\n<li>Fix: the first slide position ignores the block's padding.<\/li>\n<li>Change: autoplay stops once the visitor uses the arrows, dots or keyboard.<\/li>\n<li>Change: arrow and dot labels are translatable.<\/li>\n<li>Change: the \"Carousel\" label in the editor is now shown inside the editor canvas.<\/li>\n<li>Change: the help page uses the screen ID returned by WordPress.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Change: plugin author name updated.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Update: Tested up to WordPress 7.1.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: carousel settings were not saved with the post, so the carousel, arrows and dots did not appear on the front end.<\/li>\n<li>Fix: carousel layout now overrides the core Columns mobile stacking styles.<\/li>\n<li>Fix: slides-per-view detection when columns have a large gap.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Adds a \"Display as carousel\" option to the core Columns block. Each column becomes one slide.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/382773","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=382773"}],"author":[{"embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/domclic"}],"wp:attachment":[{"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=382773"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=382773"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=382773"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=382773"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=382773"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lmo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=382773"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}