Display Multiple Images In Beautiful Slider & Reduce Page Scroll
A Gutenberg block by WPDeveloper that lets you showcase multiple images in a fully customizable, responsive slider — without touching a line of code.
| Stable tag | 1.4.0 |
| Requires at least | WordPress 6.0 |
| Tested up to | WordPress 7.0.4 |
| Requires PHP | 7.4 |
| License | GPLv3 or later |
- Completely customizable — content, speed, colors, and layout to match your design
- Responsive controls — per-device typography, spacing, and visibility
- Multiple layouts — image only, image with content, vertical slider, content slider
- Super light-weight — no extra resources, optimized for fast loading and instant live editing
- FSE & reusable block ready — PHP-based style handler works with Full Site Editing
- Dedicated support — an active support team behind the plugin
- Open the WordPress Block/Gutenberg Editor
- Search for "Slider Block"
- Install in one click
- Upload
slider-blockto/wp-content/plugins/ - Activate the plugin through the Plugins menu in WordPress
- Follow the documentation
This repository depends on two git submodules. Neither is optional — the build fails or produces a stale bundle without them:
| Submodule | Path | Repo |
|---|---|---|
| Shared controls | controls/ | EssentialBlocks/controls |
| Style handler | lib/style-handler/ | EssentialBlocks/style-handler |
git clone --recurse-submodules git@github.com:EssentialBlocks/slider-block.git
cd slider-block
npm installIf you already cloned without --recurse-submodules, npm install repairs it via the postinstall hook. To do it by hand:
npm run submodules # git submodule update --init --recursive
npm run install:controls| Command | Description |
|---|---|
npm start | Build controls, then start the plugin build in watch mode |
npm run build | Full production build — controls stage, then plugin stage |
npm run build:controls | Controls stage only → dist/modules.js, dist/modules.css |
npm run submodules | Init/update git submodules |
npm run install:controls | Install controls/ dependencies |
npm run packages-update | Update @wordpress/* packages |
The build has two stages, because controls/ is a separate package with its own webpack.config.js and its own dependency tree.
- Controls stage — runs inside
controls/. Bundlesconfig/entries.js, which re-exports the shared controls and helpers fromcontrols/src/. Output goes to../dist:dist/modules.js— exposed on thewindow.EBSliderControlsglobal (name comes fromconfig/controlname.json)dist/modules.css,dist/style-modules.css,dist/frontend.js
- Plugin stage — runs at the repo root against
webpack.config.js. Buildsdist/index.js(editor),dist/frontend/index.js(frontend),dist/style.css.
src/index.js consumes stage 1 at runtime:
const{ ebConditionalRegisterBlockType }=window.EBSliderControls;includes/helpers.php enqueues dist/modules.js as the slider-block-controls-util handle, reading its dependency list from dist/modules.asset.php. So an empty controls/ submodule means stage 1 never runs and dist/modules.js goes stale — the editor still boots off the committed bundle, which hides the problem until the controls source changes.
controls/ needs npm install --force, which npm run install:controls already passes. Two things make a plain install fail:
react-sortable-hoc@2peers on React 16/17 while its@wordpress/*siblings pull React 18 — a plainnpm installaborts withERESOLVE.--legacy-peer-depsis not the right escape hatch here. It makes npm ignore all peer dependencies, includingajv-keywords@5's peer onajv@^8.8.2. npm then leaves the hoistedajv@6in place and the controls build dies withCannot find module 'ajv/dist/compile/codegen'.--forceoverrides the React conflict while still resolving peers, soajv@8gets nested where it's needed.
dist/modules.css is built from this plugin's own controls submodule pin, so it differs between the Essential Blocks single-block plugins and must be enqueued under a plugin-specific handle (slider-block-editor-css). It previously used the shared name essential-blocks-editor-css, which meant whichever plugin loaded first won the handle outright — WP_Dependencies::add() returns false for an already-registered handle — silently dropping every later plugin's stylesheet and its dependencies. That broke the arrow icon pickers whenever Button Group Block was active.
Genuinely shared vendor assets (essential-blocks-icon-picker-css, essential-blocks-fontawesome, essential-blocks-animation) keep their shared handles on purpose, so only one copy loads however many EB single-block plugins are active.
| Branch | Purpose |
|---|---|
master | Stable, released code |
latest | Latest packaged release |
dev | Active development |
| Contributor | WordPress.org |
|---|---|
| WPDeveloper Team | wpdevteam |
| Re Enter Rupok | re_enter_rupok |
| Asif Rahman | Asif2BD |
| Rahat Hossain | rahat89 |
| Rahat Sheikh (Leon) | RahatSheikhLeon — @RahatSheikhLeon |
Contributions are welcome. Open an issue or a pull request against the dev branch.
See readme.txt for the full changelog.
GPL-3.0-or-later. See LICENSE.
Note: the
Gruntfile.jsreadmetask (wp_readme_to_markdown) regeneratesREADME.mdfromreadme.txtand will overwrite this file. Don't run it unless you intend that.