Title: Qaiyo Content Slider
Author: qaiyo
Published: <strong>September 17, 2026</strong>
Last modified: October 1, 2026

---

Search plugins

![](https://s.w.org/plugins/geopattern-icon/qaiyo-content-slider.svg)

# Qaiyo Content Slider

 By [qaiyo](https://profiles.wordpress.org/qaiyo/)

[Download](https://downloads.wordpress.org/plugin/qaiyo-content-slider.1.3.3.zip)

 * [Details](https://vec.wordpress.org/plugins/qaiyo-content-slider/#description)
 * [Reviews](https://vec.wordpress.org/plugins/qaiyo-content-slider/#reviews)
 *  [Installation](https://vec.wordpress.org/plugins/qaiyo-content-slider/#installation)
 * [Development](https://vec.wordpress.org/plugins/qaiyo-content-slider/#developers)

 [Support](https://wordpress.org/support/plugin/qaiyo-content-slider/)

## Description

Qaiyo Content Slider builds hero-banner style slides: a background image (or video)
plus a text box (heading, text, call-to-action button), with progress indicators,
prev/next arrows and a pause/play control.

#### Five layouts

Pick a layout per slider with a visual wireframe picker:

 * **Overlay** — a floating text box over a full-bleed image.
 * **Side by side** — image and text in two columns (landscape).
 * **Stacked** — image on top, text below (portrait).
 * **Carousel** — a centered card with the neighbours peeking in at the sides.
 * **Logo wall** — the classic “Our partners” strip: logos gliding past in one or
   two rows.

#### Logo wall

A partner or client strip that keeps moving without feeling busy:

 * One or two rows, running to the left or to the right — and, with two rows, optionally
   in opposite directions.
 * Speed in pixels per second, so the pace stays the same however many logos you
   add.
 * Faded edges, a shared logo height that evens out mismatched logos, and an adjustable
   gap.
 * Every logo can link to the partner’s site (or an anchor on the same page), optionally
   in a new tab.
 * A slide without an image shows its name as a word-mark.
 * Optionally blend the strip into the background (multiply), so the white box that
   JPEG logos — and WebP logos saved without transparency — usually carry disappears
   and only the logos show; best on a light background. A transparent WebP or PNG
   is left as it is.
 * Add a whole folder of logos in one go: “Add several images” turns every selected
   image into its own slide.
 * Each logo is in the page exactly once, as a real list of `<img>` and `<a>` elements,
   with an optional Schema.org list of Organizations — the moving copies are generated
   in the browser and hidden from screen readers and the keyboard.
 * A row stops while it is pointed at or has keyboard focus; visitors who prefer
   reduced motion get a still, centred row instead.

#### Built for SEO and AI search

Unlike most slider plugins, every slide image is a real `<img>` tag (never a CSS
background), and every heading/text/button is plain DOM text — never baked into 
the image. That means:

 * Slide images stay indexable by Google Image Search.
 * The first slide loads eagerly with `fetchpriority="high"`; the rest load lazily.
 * Content is fully visible to screen readers, search engine crawlers and AI agents
   that don’t execute JavaScript.
 * Slide headings use a configurable H1, H2 or H3 tag, or styled text — never a 
   forced H1. Choose H1 and only the first slide’s heading becomes the H1 (the rest
   are H2), so a page never ends up with several.
 * Optional Schema.org `ItemList` JSON-LD output.

#### Dynamic content sources (Free)

Each slide can be:

 * **Static** — manually written heading, text, image and button.
 * **A specific post or page** — title, excerpt, featured image and link are pulled
   live, so editing the source content keeps the slide in sync.
 * **Latest posts from any post type** — pick a post type (and optionally a taxonomy
   term), and a slide is generated automatically for each of the latest N matching
   posts.
 * **A HappyFiles folder (live)** — with the HappyFiles media-folder plugin active,
   point a slide at a folder and every image in it becomes a slide, live: drop a
   new partner logo into the folder and it appears on the logo wall, no slider editing
   needed. Each image fills its slide from its own Media Library fields — alt text(
   or title) as the name, caption as the heading, description as the text — and 
   a new “Slider link” field on every image gives it a link. The “Add HappyFiles
   folder” button under Slides adds such a slide in one step: pick the folder and
   the order its images should follow (newest or oldest first, by name, Media Library
   order, random, or the order dragged into place in HappyFiles Pro), done.

#### Design controls

Box background color, font family, font size, font color and separate heading and
description colours are configurable both globally (Settings page) and per slide.
The corner radius and the duration of the fade / slide transition can be set per
slider. Box position, autoplay speed, transition (fade/slide), a separate mobile
height, an extra CSS class on the wrapper, and which controls (arrows, indicators,
pause button) are shown can all be set per slider and overridden per shortcode/block
instance.

#### Motion & media

 * **Ken Burns effect** — a subtle, continuous zoom/pan on the active slide’s image.
 * **Video backgrounds** — add a muted, looping MP4/WebM per slide; the image is
   used as the poster and as the reduced-motion fallback.
 * **Autoplay progress indicator** — the active bar fills in sync with the autoplay
   timer.
 * All motion honours the visitor’s `prefers-reduced-motion` setting.

#### Authoring

 * Visual wireframe layout picker in the editor.
 * Duplicate any slide, or duplicate a whole slider from the list.
 * An Overview screen with quick actions and a layout gallery.

#### Shortcode

    ```
    [qaiyo_content_slider id="123"]
    ```

#### Gutenberg block

A “Qaiyo Content Slider” block lets you pick a saved slider from a dropdown, with
a live preview in the editor.

#### Multilingual

Fully translation-ready (text domain `qaiyo-content-slider`), with locale variant
fallback. Translations are provided through translate.wordpress.org. Compatible 
with Polylang, WPML, TranslatePress and Loco Translate.

### External services

This plugin can optionally load a font from Google Fonts if you choose one of the“(
Google Fonts)” entries in the font family dropdown (Settings, or a slider’s/slide’s
font override). When you do, the browser of any visitor viewing that slider loads
a stylesheet from `https://fonts.googleapis.com/css2` (Google Fonts), which means
Google receives the visitor’s IP address and user agent. No font is requested if
you only use the web-safe font options (Theme default, System UI, Georgia, Courier
New). See Google’s Privacy Policy: https://policies.google.com/privacy and Terms
of Service: https://policies.google.com/terms.

## Blocks

This plugin provides 1 block.

 *   Qaiyo Content Slider Insert a saved Qaiyo Content Slider.

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/`.
 2. Activate the plugin through the Plugins menu.
 3. Create a slider under Content Sliders in the admin menu.
 4. Place the shortcode `[qaiyo_content_slider id="123"]` on any page, or insert the
    Gutenberg block.

## FAQ

### Can I use my own CPT as a slide source?

Yes — the “Latest posts from a post type” source works with any public post type,
including custom post types.

### Does it require ACF or Meta Box?

No. Free dynamic sources use core WordPress fields (title, excerpt, featured image,
permalink) only.

### Does it work with HappyFiles?

Yes — tested with HappyFiles Pro 1.9.1. With HappyFiles active, “HappyFiles folder(
live)” appears as a slide source, and an “Add HappyFiles folder” button sits next
to “Add several images” — pick a folder and its slide is ready. The folders are 
listed in the order you arranged them in HappyFiles, and you choose what order the
folder’s images run in when you add it. The folder’s images (its sub-folders included)
are read when the page is rendered, so the slider always matches the folder. With
HappyFiles Pro’s custom order switched on, the images can follow the order you dragged
them into inside the folder. Set each image’s link in the Media Library with the“
Slider link” field. If HappyFiles is deactivated, the folder slide simply shows 
nothing until it is back — its settings are kept.

### Which layout should I use?

Overlay is the classic hero banner. Use Side by side or Stacked when the image and
text should sit in separate panels. Carousel shows a centered card with the neighbouring
slides peeking in at the sides.

### Can slides use a video background?

Yes. On a static slide, pick a video (MP4/WebM) in the media library; it plays muted
on loop over the image. Keep files small — the image is still used as the poster
and as the fallback for visitors who prefer reduced motion.

### Is it accessible?

Yes. The slider is a labelled carousel region with keyboard navigation, focus management,`
aria-controls` on the controls and a polite live region that announces the current
slide on manual navigation. All animation is disabled under `prefers-reduced-motion`.

### Will it slow down my site?

No jQuery and no page-builder runtime are loaded on the front end — just one small
vanilla-JS file and one stylesheet. The first slide image is eager-loaded with `
fetchpriority="high"`; the rest are lazy-loaded.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Qaiyo Content Slider” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ qaiyo ](https://profiles.wordpress.org/qaiyo/)

“Qaiyo Content Slider” has been translated into 2 locales. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/qaiyo-content-slider/contributors)
for their contributions.

[Translate “Qaiyo Content Slider” into your language.](https://translate.wordpress.org/projects/wp-plugins/qaiyo-content-slider)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/qaiyo-content-slider/),
check out the [SVN repository](https://plugins.svn.wordpress.org/qaiyo-content-slider/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/qaiyo-content-slider/)
by [RSS](https://plugins.trac.wordpress.org/log/qaiyo-content-slider/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.3.3

New:

 * **Logo wall: the multiply blend now works for WebP logos too.** “Blend JPEG and
   WebP logos into the background” removes the white box of a WebP logo exactly 
   as it does for a JPEG — which matters once an image optimiser has converted your
   JPEG logos to WebP and the blend quietly stopped applying. A WebP can also be
   transparent, like a PNG, and such a logo needs no help: the plugin reads the 
   file to tell the two apart, so a strip of transparent WebP logos is left alone
   and only a logo that really carries a box switches the blend on.

Under the hood:

 * New filter `qaiyo_content_slider_logo_blend`, to switch the blend on or off for
   a slider in code.

#### 1.3.2

New:

 * **Responsive slide images.** Every slide photo and every logo now comes with 
   a srcset, so a phone downloads a file sized for it instead of the full-size original.
   The sizes value is worked out for how the slider actually draws the photo: a 
   photo covers its slide, so on a tall slider a phone shows it wider than the screen—
   the plugin accounts for that, so the saving never costs sharpness. Logos on the
   logo wall, drawn a few dozen pixels tall, now load a small version of the file
   rather than the original upload. Photos pulled from posts, HappyFiles folders
   and the slide’s own image all qualify.

Fixes:

 * **A translated slider no longer opens empty.** With Polylang, adding a language
   version of a slider (the “+” next to the language, with or without content duplication)
   created a blank slider: no slides, no layout, no settings. Polylang copies only
   public custom fields to a new translation, and every slider field is stored privately.
   The new translation now starts as a full copy of the original — slides, layout
   and every setting — and from then on each language is edited on its own. View
   counts stay with the language they were counted in.
 * The WPML / Polylang configuration file (wpml-config.xml) still named the slider
   type and its fields as they were before 1.0.1, in a format neither plugin reads.
   It now lists every slider field under its current name, so WPML copies a slider
   into a new translation as well.
 * Duplicating a slider no longer carries over the original’s view counts, and it
   now also takes along the settings an add-on keeps for the slider (Pro’s layout,
   overlay and field-mapping options were left behind before).

Under the hood:

 * New filter `qaiyo_content_slider_image_sizes`, for a layout that draws its photos
   smaller than the full slide (a tile, a card) to describe them exactly.
 * New filter `qaiyo_content_slider_copyable_meta_keys`: the fields that travel 
   with a copy of a slider, for the Duplicate action and a new translation alike.

#### 1.3.1

Fixes:

 * **A white screen in the admin, on every screen that has no submenu of its own.**
   Two functions that keep the Content Sliders menu highlighted declared that they
   always return text, while WordPress calls them with nothing at all on most screens—
   and handing that nothing back was a fatal error. The Plugins screen was the usual
   place to meet it. They now pass back whatever WordPress gave them, unchanged.
 * Internal: the plugin’s own filters return their value through an explicit cast,
   so a third-party add-on that hands back the wrong kind of value can no longer
   turn into a fatal error on the visitor’s page either.

#### 1.3.0

Security and reliability:

 * **A password-protected post can no longer leak through a slider.** A slide that
   pulls in a post (or the “latest posts” source) fell back to trimming the post’s
   own body text when it had no excerpt — and that fallback did not ask whether 
   the post was protected, so the protected text was published to every visitor.
   Protected posts are now left out entirely.
 * **The view counter no longer stops counting behind a page cache.** It used a 
   security token printed into the page, which goes stale once the page is cached
   and silently ended the counting. Counting now runs through a small public endpoint
   that needs no token, and every request is still checked: only a published slider,
   and only a slide that slider actually has.
 * **The counter can no longer be inflated with made-up slides.** Anyone could previously
   send any slide name and have it stored, growing the slider’s stored counts without
   limit. Unknown slide names are now refused.
 * Simultaneous visitors no longer overwrite each other’s views: a count that loses
   the race is retried instead of dropped.
 * Your own visits while logged in as an editor of the slider are not counted, and
   no request is sent at all — so figures stay clean while you work on the page.
 * Known crawlers and monitoring bots are left out of the counts.

Fixes:

 * The Import screen’s file field now has a label, so a screen reader announces 
   what it is.
 * Resetting a slider’s view counts now verifies it really is a slider first.

Under the hood:

 * Unit tests (PHPUnit 9 + Brain Monkey) covering the slide allowlist, the settings
   sanitiser, the view counter and the source resolver, plus static analysis at 
   PHPStan level 5. Development tooling lives outside the plugin folder, so what
   ships is only what runs.

#### 1.2.0

Fixes:

 * Slide editor: the per-slide button colours are no longer offered on a layout 
   that draws no button (the Pro mosaic and bento grid make the whole tile the link).

#### 1.1.0

New:

 * Bulk remove in the slide editor: tick the slides you want gone (or “Select all”)
   and remove them in one step, instead of one at a time.
 * The “Add HappyFiles folder” dialog now asks what order the folder’s images should
   follow — newest or oldest first, by name A–Z or Z–A, Media Library order, random,
   or the order dragged into place in HappyFiles Pro.
 * The open/close arrow on a slide card is large enough to hit comfortably.

Fixes:

 * Uninstalling with “remove data” switched on now clears everything the plugin 
   stored: the database version marker, the “Slider link” field on images and the
   plugin-directory cache went untouched before. On a network every site is cleaned
   up, not only the one uninstalling — each site still decides for itself through
   its own setting.
 * Internal: dead `class_exists()` guards around the plugin’s own always-loaded 
   classes removed, and return types declared on the functions whose result is unambiguous(
   hook callbacks keep their open signature, since a filter has to pass back whatever
   it was given).

#### 1.0.1

Fixes:

 * Sliders no longer start their JavaScript inside a page builder’s editing canvas(
   Bricks, Elementor, Oxygen, Beaver, Brizy, WPBakery, Divi). A slider that autoplays
   and re-lays itself out kept the builder’s own DOM watcher busy, which could leave
   the editing canvas blank. The markup and the styling are unchanged there — the
   editor shows the slider’s no-JavaScript state, and the front end is unaffected.
 * Every piece of markup the plugin prints is now escaped where it is printed, including
   what an add-on returns through the slide filters, and the block renders through
   a render callback instead of echoing.
 * All stored names carry the longer `qaiyocs` prefix (post type, options, meta,
   form fields, script handles). Sliders saved by an earlier build are moved over
   automatically on the first load; shortcodes, block markup and CSS class names
   are unchanged.
 * The plugin header and the Pro links point at a page that exists.

New:

 * Separate heading and description colours, per slider and per slide — the font
   colour stays the base for both.
 * Corner radius per slider, with each layout’s own rounding as the default.
 * Transition duration in milliseconds, for the fade and the slide-in.
 * H1 as a heading tag: only the first slide’s heading becomes the H1, so a page
   keeps a single one.
 * Heading and description settings are grouped in the editor (Text box / Heading/
   Description), and so are the per-slide overrides.
 * Logo wall: optional multiply blend so JPEG logos lose their white box.

#### 1.0.0

First public release.

 * Custom post type for sliders, with an Overview admin screen as the default landing
   page.
 * Five layouts (Overlay, Side by side, Stacked, Carousel, Logo wall) chosen with
   a visual wireframe picker.
 * Logo wall: one or two rows, left/right and alternating directions, speed in pixels
   per second, faded edges, shared logo height and gap, linkable logos, an optional
   multiply blend for JPEG logos, Schema.org Organization list, pause on hover and
   focus, reduced-motion fallback.
 * “Add several images” in the slide editor: pick many images at once and each becomes
   its own slide.
 * HappyFiles integration: a “HappyFiles folder (live)” slide source that turns 
   every image in a folder into a slide at render time, an “Add HappyFiles folder”
   button that adds such a slide in one step, plus a “Slider link” field on images
   in the Media Library.
 * Slide repeater editor: static, single-post and CPT-query dynamic sources; duplicate
   a slide or a whole slider.
 * Ken Burns effect, optional per-slide video backgrounds, and an animated autoplay
   progress indicator.
 * Configurable box position, background color, font family/size/color, separate
   mobile height and an extra CSS class (global defaults + per-slide overrides).
 * Real `<img>` slides (never CSS background), eager-load first slide / lazy-load
   the rest, never a forced `h1`.
 * Accessible carousel markup: ARIA roles, `aria-controls`, a polite live region,
   keyboard navigation, touch swipe, prefers-reduced-motion support, pause/play 
   control.
 * Optional Schema.org `ItemList` JSON-LD.
 * Shortcode and a server-rendered Gutenberg block.
 * Bundled translations: English, Hungarian, German, French, Spanish, Japanese, 
   Portuguese, Italian, Russian, Turkish, Polish.
 * Polylang, WPML, TranslatePress and Loco Translate compatible.
 * The layout picker and the Overview screen preview the Pro-only layouts as locked
   tiles, so you can see what they look like before upgrading.
 * Stable hook/filter surface for a future Pro add-on (ACF/Meta Box field mapping,
   WooCommerce source, advanced query, scheduling, `before_slide_content` / `after_slide_content`).

## Meta

 *  Version **1.3.3**
 *  Last updated **4 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 *  Languages
 * [English (US)](https://wordpress.org/plugins/qaiyo-content-slider/), [Russian](https://ru.wordpress.org/plugins/qaiyo-content-slider/),
   and [Spanish (Spain)](https://es.wordpress.org/plugins/qaiyo-content-slider/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/qaiyo-content-slider)
 * Tags
 * [banner](https://vec.wordpress.org/plugins/tags/banner/)[carousel](https://vec.wordpress.org/plugins/tags/carousel/)
   [gallery](https://vec.wordpress.org/plugins/tags/gallery/)[hero](https://vec.wordpress.org/plugins/tags/hero/)
   [slider](https://vec.wordpress.org/plugins/tags/slider/)
 *  [Advanced View](https://vec.wordpress.org/plugins/qaiyo-content-slider/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/qaiyo-content-slider/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/qaiyo-content-slider/reviews/)

## Contributors

 *   [ qaiyo ](https://profiles.wordpress.org/qaiyo/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/qaiyo-content-slider/)