SmartUpWorld Post Slider

A lightweight, accessible post slider for WordPress. Show your latest posts anywhere with one shortcode, then choose what the cards show, the button colours and the timing from the dashboard.

Version 1.1.0 Free No jQuery

Download from WordPress.org

What Is SmartUpWorld Post Slider?

SmartUpWorld Post Slider shows your posts as a responsive carousel of full-image cards, each with a category badge, author, date and a Read More button. Paste one shortcode into any post, page, widget or template. Everything else is optional.

Key features:

  • One shortcode — [suwps_post_slider] — for posts, pages, widgets and PHP templates
  • Full-image cards with category badge, author, date and a Read More button
  • Every part can be switched on or off: category, author, date, Read More button, arrows, dots, autoplay and pause button
  • Settings page for the defaults: what the cards show, time per slide, Read More label and button colours
  • Shortcode attributes override the settings for a single slider
  • Responsive — 1, 2 or 3 cards, depending on the space the slider has rather than the screen size
  • Filter by category, show specific posts by ID, or skip the post being viewed
  • Uses the primary category from Rank Math or Yoast SEO when one is set
  • Works with any theme, with right-to-left languages, and with WebP plugins such as Imagify that wrap images in <picture> tags
  • Built to WCAG 2.2 level AA, with about 10 KB of JavaScript and no jQuery

Installation

  1. Go to Plugins → Add New in your WordPress dashboard, search for SmartUpWorld Post Slider, and click Install Now. Or download from WordPress.org and upload the zip.
  2. Click Activate.
  3. Paste [suwps_post_slider] into any post, page, or widget.
  4. Optional: open Post Slider → Settings in your admin sidebar to choose what the cards show, the time per slide and the button colours. The Shortcode Guide tab lists every attribute with copy-ready examples.

Basic Shortcode

Drop this anywhere to display your 8 latest published posts in a responsive carousel:

[suwps_post_slider]

In a PHP template file:

<?php echo do_shortcode( '[suwps_post_slider]' ); ?>

Dashboard Settings

Under Post Slider → Settings you set the defaults for every slider on your site. A shortcode attribute overrides the setting for that one slider, so you can still make an individual slider look different.

Show on the slider

Switch each part on or off. Everything is on by default.

  • Category badge — the post's category above the title
  • Author — the author's display name
  • Date — in the date format from Settings → General, in your site language
  • Read More button
  • Arrows — the slim tabs on the left and right edges
  • Dots — one per screenful of cards
  • Autoplay — slides move on their own while the slider is on screen
  • Pause button — required for accessibility (WCAG 2.2.2) whenever autoplay is on

Time per slide

How long each slide stays before the next one moves in, from 2 to 15 seconds. The default is 4 seconds; lower is faster.

Read More label

Your own button text, for example Lees meer on a Dutch site. Left empty, the button says “Read More”, translated automatically when a translation for your language is available.

Button colours

SettingDefaultUsed for
Accent colour#9b6b3aCategory badge, active dot, pause button and arrow hover.
Read More button backgroundWhite at 18% opacityThe frosted Read More button.
Read More button text#ffffffThe button label.
Read More button hover backgroundAccent colourThe button when a visitor hovers over the card. Leave empty to follow the accent colour.
Arrow backgroundWhite at 55% opacityThe slim arrow tabs.
Arrow icon#333333The arrow chevron. On hover, arrows use the accent colour with a white icon.

All Shortcode Attributes

“Settings” in the Default column means the value set under Post Slider → Settings.

AttributeDefaultDescription
eyebrow—Small pill label above the section title. Omit to hide.
title—Section heading rendered as an H2. Omit to hide the header.
subtitle—Text below the title. Omit to hide.
underlinetrueGradient line under the title. Set to false to remove it.
count8Number of posts, from 1 to 50.
category—Filter by category slug or numeric ID. Example: category="tech" or category="14".
ids—Comma-separated post IDs, shown in that order. Overrides count and category.
skip—Set to current to leave out the post being viewed. Ideal for single post templates.
layoutfullwidthfullwidth fills the area the shortcode is placed in; contained centres the slider at 1200px.
catSettingsCategory badge: true or false.
authorSettingsAuthor: true or false.
dateSettingsDate: true or false.
readmoreSettingsRead More button: true or false.
readmore_textSettingsRead More button label, for example readmore_text="Lees meer".
navSettingsArrows: true or false.
dotsSettingsDots: true or false.
autoplaySettingsMove slides automatically: true or false.
pauseSettingsPause button, shown only with autoplay: true or false.
delaySettingsSeconds each slide stays before autoplay moves on, from 2 to 15. Example: delay="6".
looptrueStart again from the first post after the last: true or false.
accentSettingsAccent colour for this slider only. Example: accent="#2c6e49".
priorityfalseSet to true when the slider is at the top of the page, so its first image loads first.

Usage Examples

Slider only — no header
[suwps_post_slider]
With title only
[suwps_post_slider title="Latest Insights"]
Full header — eyebrow, title, subtitle
[suwps_post_slider eyebrow="From The Blog" title="Latest Insights" subtitle="Practical guides on website care, speed and security."]
Related posts on single post pages — skip current
[suwps_post_slider title="Related Articles" underline="false" count="6" skip="current" nav="false"]
Filter by category
[suwps_post_slider title="Tech Articles" category="tech" count="6"]
Specific post IDs
[suwps_post_slider title="Featured Posts" ids="12,45,67,89"]
Minimal — no arrows, no dots
[suwps_post_slider nav="false" dots="false"]
Clean cards — title and button only
[suwps_post_slider cat="false" author="false" date="false"]
Own button text and colour
[suwps_post_slider readmore_text="Lees meer" accent="#2c6e49"]
Slower autoplay — 6 seconds per slide
[suwps_post_slider delay="6"]
Slider at the top of a page — load the first image first
[suwps_post_slider priority="true"]

Accessibility

The slider is built to meet WCAG 2.2 level AA:

  • A pause/play button whenever slides move on their own (WCAG 2.2.2)
  • Slides stop while the mouse is over them, as soon as a keyboard user enters the slider, and for good once a visitor uses the arrows, dots or swipes
  • For visitors who have asked their device to reduce motion, slides switch instantly instead of gliding
  • Every card can be reached with the Tab key; the focused card always slides into view, with a clear focus outline
  • Labelled buttons, slide positions announced to screen readers, and click targets of at least 24px
  • Default colours meet the AA contrast ratios, including text over photos

If you change the colours, keep text at a contrast ratio of at least 4.5:1 against its background, and keep the pause button on while autoplay is on.

Performance

  • No jQuery. The carousel runs on Embla Carousel (MIT License): about 10 KB of JavaScript, gzipped, in total
  • CSS and JavaScript load only on pages that use the shortcode, and the scripts are deferred
  • No layout shift while the page loads — the cards are laid out with CSS before the script runs
  • Images use responsive sizes and lazy loading, and the next cards preload just before they slide in
  • Autoplay only runs while the slider is visible on screen
  • Add priority="true" when the slider is at the top of a page, so its first image loads first

Upgrading from 1.0

Existing shortcodes keep working. A few things look or behave differently:

  • New default design. Full-image cards in a bronze colour scheme replace the blue design. Pick your own colours under Post Slider → Settings → Button colours.
  • Width. Sliders now fill the area they are placed in. Use layout="contained" for the previous centred 1200px width.
  • CSS classes. The slider's classes now start with suwps- instead of suw-. Custom CSS written for the old classes needs updating; theme rules for the old classes no longer affect the slider.
  • Owl Carousel. The plugin no longer loads Owl Carousel. If your theme used the plugin's copy for its own sliders, load Owl Carousel from the theme instead.

Frequently Asked Questions

Does it require any configuration?

No. Install, activate, and paste the shortcode. It works out of the box with your existing posts. The Settings page is only needed if you want to change the defaults.

Will it conflict with my theme's slider?

No. The plugin does not load Owl Carousel or jQuery, and its styles use its own suwps- class names, so sliders from your theme or other plugins are not affected.

Does it affect page speed?

Very little. Assets only load on pages where the shortcode is used, the scripts are deferred, nothing shifts while the page loads, and images lazy-load at the right size.

How do I show related posts on a single post page?

Use skip="current" to exclude the post the visitor is reading: [suwps_post_slider title="Related Articles" skip="current"]

Can I show posts from a specific category?

Yes — use the category attribute with a slug or numeric ID: [suwps_post_slider category="news"]

How do I hide the date, author or category?

Untick them under Post Slider → Settings to hide them on every slider, or use date="false", author="false" or cat="false" on a single slider.

How do I change the “Read More” text?

Type your own label under Post Slider → Settings, or use readmore_text="Lees meer" on a single slider.

Can I make the slides change faster or slower?

Yes. Set Time per slide under Post Slider → Settings, from 2 to 15 seconds. For one slider only, use delay="6".

Why is there a pause button?

Content that moves on its own needs a way to stop it (WCAG 2.2.2). You can hide the button under Post Slider → Settings, but the slider then no longer meets that requirement while autoplay is on.

Does it work with Imagify and other WebP plugins?

Yes. The photo fills the whole card even when an image plugin such as Imagify, EWWW or ShortPixel wraps it in a <picture> tag.

Changelog

1.1.0
  • New default design: full-image cards with category badge, author, date and a frosted Read More button.
  • New Settings tab: show or hide the category, author, date, Read More button, arrows, dots, autoplay and pause button; set the time per slide; pick the button colours; set the Read More label.
  • New shortcode attributes: cat, author, date, readmore, readmore_text, autoplay, pause, delay, loop, accent and priority.
  • Replaced Owl Carousel, which is no longer maintained and needs jQuery, with Embla Carousel 8.6. No jQuery, less JavaScript.
  • Accessibility: pause/play button, slides stop on interaction and keyboard focus, focused cards slide into view, visible focus outlines, 24px click targets, contrast-safe default colours, no sliding animation with reduced motion.
  • Performance: no layout shift while loading, deferred scripts, responsive image sizes, preloading of the next cards, autoplay only while visible, and a priority option for sliders at the top of a page.
  • Works with WebP and lazy-load plugins that wrap images in <picture> tags.
  • The card category uses the Rank Math or Yoast SEO primary category when set, and skips “Uncategorized”.
  • Changed: layout now defaults to fullwidth. Use layout="contained" for the previous centred 1200px width.
  • Changed: CSS classes now use the suwps- prefix.
1.0.1
  • Renamed the shortcode tag to [suwps_post_slider] for a unique, conflict-free prefix.
  • Moved admin page CSS and JavaScript into properly enqueued files.
  • Renamed the exclude attribute to skip.
1.0.0
  • Initial release.
  • Bundled Owl Carousel 2.3.4 — no CDN dependency.
  • Shortcode attributes: eyebrow, title, subtitle, underline, count, category, ids, exclude, layout, nav, dots.
  • ARIA accessibility — labelled nav buttons and dots.
  • LCP-safe eager loading on first slide image.
  • Admin documentation page with copy-ready examples.