WordPress Documentation

Installation, galleries, presets and WooCommerce integration for the WordPress plugin.

Getting started

Filmstrip Photo & Video Slider turns photos and videos into a draggable filmstrip. Each frame represents a category. Clicking a frame can open its media, visit a link, or simply center the frame.

The plugin has three menu pages under FWD Filmstrip Photo & Video Slider: Presets Manager, Galleries Manager, and Support. Use the preset manager for appearance and behavior, and the gallery manager for your content.

Gallerycontains categoriesCategorycontains photos and videosItems

A preset and a gallery are separate. You can show the same content with different presets, or reuse one preset across several galleries.

Install and update

The plugin requires WordPress 6.5 or newer and PHP 8.0 or newer. Visitors need a browser with WebGL support. WooCommerce is optional and is only needed for product gallery integration.

  1. Open Plugins > Add New Plugin > Upload Plugin.
  2. Select filmstrip-photo-and-video-slider.zip, click Install Now, then activate the plugin.
  3. Open FWD Filmstrip Photo & Video Slider in the WordPress sidebar.

If your download is a complete marketplace package, extract it first and upload the installable plugin ZIP inside it.

Updating an existing installation

Back up your site and database first. Upload the new plugin ZIP through the same installer and use WordPress's replacement option. Clear your page cache and any asset or CDN cache after the update. You do not need to delete the plugin to replace its files.

The current development build resets presets and galleries when upgrading stored data older than schema 4. Do not rely on automatic import from the older plugin. Test that upgrade on a backup or staging site first. Current saved galleries use schema 5.

  1. Open Galleries Manager and click Add New Gallery. Enter a unique gallery name, for example My Filmstrip.
  2. Click Edit Categories on its card, then Add New Category.
  3. Enter a category name and choose Open category. Confirm with OK.
  4. Click Edit Items on the category card, then Add New Item.
  5. Enter an item name, use Choose media to select a file, and wait for its width and height to be detected. For video, also use Choose poster.
  6. Add optional captions, confirm the item, and repeat for your other media.
  7. Click Update Gallery to save the content to WordPress.
  8. Choose Preset 1 in the shortcode below and place it in a Shortcode block on a page.
[filmstrip_slider preset_name="Preset 1" gallery_name="My Filmstrip"]

Use the exact saved preset and gallery names in the shortcode. Publish or preview the page to see the filmstrip.

Save the gallery after editing. Confirming a dialog updates the manager's working content. Update Gallery or Update Galleries saves it to WordPress. Wait for the saved confirmation before leaving the page.

Manage galleries

The gallery grid lists your saved galleries. Add New Gallery creates a new container. The pencil edits its name and optional gallery image. Edit Categories opens its categories, and the delete icon removes the gallery after confirmation.

The optional gallery image is the manager card's artwork. It does not set a filmstrip frame's cover. Each category gets its cover from its own first item.

Drag cards to reorder them. Use Back To Galleries or the breadcrumb to return. Navigation and edit dialogs start at the top of the page. Deleting gallery content does not delete the original files from the Media Library.

Current WordPress Galleries Manager with gallery cards and Edit Categories buttons
The gallery manager in the current plugin. Shown at 1:1 scale. Scroll horizontally if needed, or click to open the image.

Categories and click actions

Each category becomes one frame in the filmstrip. Click Add New Category to create one, the pencil to change its settings, or Edit Items to manage its media. Drag category cards to change the frame order.

Category name and film title is printed on the film frame and shown in category navigation. Use a unique name within the gallery. Film code is optional short text printed on the frame, such as a year or collection code.

Click actionWhat happens
Open categoryCenters and expands the frame, then shows the photos and videos belonging to that category.
Open linkOpens the configured Link URL. Choose New tab or Current tab in Open link in.
No actionCenters the clicked frame without expanding it or opening a link. Dragging and hover effects remain available.

The click action belongs to the category, not to an individual photo or video. Category navigation includes categories that open their own items. Link-only and no-action frames are not destinations in that navigation.

The first item is the category's cover. To change the cover, open Edit Items and drag another item into first position. An empty category can be saved while you work, but it does not appear on the public filmstrip until it contains media.

Beauty category card with its complete cover, item count, click action and controls
The complete Beauty category card, including its Edit Items, edit and delete controls. Shown at 1:1 scale. Scroll horizontally if needed, or click to open the image.
Category settings dialog with film title, code and click action
The category settings dialog. Link fields appear when Open link is selected. Shown at 1:1 scale. Scroll horizontally if needed, or click to open the image.

Add photos and videos

Open a category's Edit Items view. Click Add New Item, or use the pencil on an existing item to edit it. Drag media cards to set their order. The Cover badge marks the first item.

FieldHow to use it
Item nameA unique name within this category for identifying the item in the manager. This is separate from its visible caption.
Photo or video URLUse Choose media to upload or select a file in the Media Library. This URL field is read-only.
Video poster URLUse Choose poster to select a still image for video. The URL field is disabled. Leave it empty for photos.
Media width / Media heightDetected automatically from the selected file. The disabled fields preserve the original aspect ratio. Wait for detection before confirming.
Caption titleOptional heading shown over the media inside an opened category.
Caption descriptionOptional smaller text below the heading. Keep it brief for smaller screens.
Alternative textA short description of the media for its generated markup.
Deep link IDOptional stable identifier for sharing a particular item. Use a different ID for each item in the category.

Landscape, portrait, square, and wide images can be mixed in the same category. Use browser-compatible image files such as JPEG, PNG, or WebP. Transparent PNG images are supported. The available upload types also depend on your WordPress installation.

Leave both caption fields empty for media without text. Caption fonts, colors, padding, spacing and smaller-screen sizes are controlled by the preset's Category settings.

Category item grid with a Cover badge and edit controls
The item grid shows the category media in display order. Shown at 1:1 scale. Scroll horizontally if needed, or click to open the image.
Add New Item dialog showing media selection, poster, dimensions and caption fields
Use the Media Library buttons to fill the media and poster fields. Shown at 1:1 scale. Scroll horizontally if needed, or click to open the image.

Video playback

Select your own browser-compatible video, such as an MP4 or WebM, and choose a matching poster. Videos can be category covers or items inside a category. Place a video first in the item list to make it the cover.

Visible videos autoplay muted and loop without controls. The poster remains visible until a decoded video frame is ready, or when playback cannot start. Hidden videos pause. Category arrow previews can play the destination cover video, while the category dropdown uses still thumbnails.

The plugin plays the supplied file at its full duration. It does not transcode, trim, or convert uploads into adaptive streams. File size, bitrate, device decoding support and your hosting speed affect loading. Use a resolution appropriate to the displayed size and avoid putting many large videos on screen together.

The initial loading sequence uses cover photos and video posters. Category media start loading as the category opens and populate their meshes as they become available.

Presets Manager

A new installation includes Preset 1 through Preset 9. All nine start with the same settings and can be edited independently.

  1. Choose a preset from Select your preset.
  2. Use the General, Filmstrip, Category, Category selector, Post-processing, and WooCommerce tabs to change its settings.
  3. Click Update Preset and wait for the saved confirmation.

Duplicate Preset creates a variation with a unique name. Reset Preset restores the selected preset's editor values to the defaults. Save to apply the reset. If you rename a preset, update shortcodes that use its old name.

On/off settings use checkboxes. All duration and delay fields use seconds, so 0.65 means 650 milliseconds. Validation shows a tooltip next to a field that needs attention.

Presets Manager showing the preset selector and grouped settings tabs
The preset editor uses the current plugin settings. Shown at 1:1 scale. Scroll horizontally if needed, or click to open the image.

Layout and category navigation

Display type controls sizing. responsive calculates the gallery height from Max height, Auto scale, and Auto scale start width, with a minimum height of 450px. afterparent follows its host container. The shortcode host starts at the preset's Max height.

Frame width and Frame height set the film frame ratio. Film strip gap adds space between film frames in scene units. Category image gap sets space between opened category media in CSS pixels and reduces on smaller screens.

Mouse wheel behavior is separate for the filmstrip, opened category slider, and category dropdown. Dragging remains available when a mouse wheel option is off.

In Category selector, enable Show cateogry navigation arrows for previous/next category controls, Show cateogry navigation select for the dropdown, or enable both. Turn both off to hide category navigation. These field labels retain the spelling used in the current editor.

Category navigation wraps through available categories. With two categories, both arrows point to the other category. The arrow preview shows its destination's media and title. Image navigation inside an opened category is separate from category navigation.

Infinite allows wrapping when there is enough media to fill the visible area. Short filmstrips and categories can use finite scrolling to avoid empty space or visible repetition.

Deep linking

Enable Deep linking in the preset's General tab and save the preset used by your shortcode. It is off by default. Enable it on only one gallery per page.

https://example.com/gallery/#category=Salt_Sea&item=An_Open_Blue

The category route comes from its name. Item routes use the item's Deep link ID, then its caption title, then an item-number fallback. Spaces and most punctuation become underscores. Duplicate keys receive a suffix such as ~2.

Open the category, move to the desired item, let the movement settle, and copy the browser URL. A shared URL opens that category and item after loading. Browser Back and Forward are supported. Closing the category removes the gallery route.

Use stable, unique deep link IDs when item captions may change. Renaming a category changes its generated route. An unknown category is ignored. A missing or unknown item opens the first item of a known category.

Place a gallery on a page

In the WordPress block editor, add a Shortcode block and paste:

[filmstrip_slider preset_name="Preset 1" gallery_name="My Filmstrip"]

Replace both values with the exact saved names. For a page builder, use its shortcode widget or shortcode element. Do not use a code-display block, which prints the shortcode instead of rendering it.

The Filmstrip Photo & Video Slider metabox on post and page editing screens generates the shortcode. Choose a preset and a gallery, then copy the generated text into your content. On WooCommerce products, the metabox saves the gallery assignment directly. See WooCommerce integration.

You can place multiple shortcodes on a page. Each gets its own host and API instance. Keep Deep linking enabled for at most one of them.

For a PHP template, render the shortcode with WordPress:

echo do_shortcode('[filmstrip_slider preset_name="Preset 1" gallery_name="My Filmstrip"]')

The older [fwdfs] alias is registered only if another plugin has not already claimed it. Use [filmstrip_slider] in new content.

WooCommerce integration

Use Filmstrip Photo & Video Slider in place of the product image gallery on classic WooCommerce product pages and in WooCommerce Product Gallery blocks. The integration was checked with WooCommerce 11.0.0. WooCommerce is optional for galleries on ordinary pages and posts.

Set up a product gallery

  1. Open Galleries Manager, create your categories, add their photos or videos, and click Update Gallery.
  2. Open Presets Manager and select the preset that this product will use.
  3. Open the WooCommerce tab, choose Filmstrip Position, then click Update Preset.
  4. Edit your WooCommerce product and find the Filmstrip Photo & Video Slider metabox in the editor sidebar.
  5. Turn on Enable Filmstrip, choose the Preset and Gallery, then click the product editor's Update or Publish button.
  6. View the product page. Its image area now uses the assigned gallery and the position saved in your preset.

No shortcode is needed in the product description. The assignment belongs to this product. Turn Enable Filmstrip off and update the product to restore the normal product images. Products with no assignment keep their usual images.

Filmstrip product metabox with Enable Filmstrip, Preset and Gallery controls.
Select the preset and gallery in the product sidebar, then save the product. Shown at 1:1 scale. Scroll horizontally if needed, or click to open the image.

The dropdowns list saved presets and galleries. Create your gallery in Galleries Manager first. If you rename or delete a selected preset or gallery, select an available entry again and update the product. Missing selections and galleries without media leave the normal product images in place.

Choose the filmstrip position

Filmstrip PositionProduct page layout
Replace Product ImageThe default. Uses the product image column beside the title, price and purchase controls. The theme determines the column width and its mobile stacking.
Replace Product Image Full WidthSpans the product content area and places the product details and purchase controls below. Full width means the product content width set by the theme, not the browser viewport.
WooCommerce tab in Presets Manager showing the Filmstrip Position setting and both product placement instructions.
The WooCommerce setting belongs to the selected preset. Click Update Preset to apply a change. Shown at 1:1 scale. Scroll horizontally if needed, or click to open the image.

Position is saved per preset. Products using the same preset share its position and appearance. Use separate presets when different products need different layouts. Existing presets use Replace Product Image until you change it.

Use the preset's General tab to adjust the slider height and responsive behavior. The WooCommerce tab changes placement only. Photos, videos, captions and category actions are still managed in Galleries Manager.

Single Product blocks on pages

Add a WooCommerce Single Product block and choose the product. Keep its Product Gallery or Product Image Gallery block inside the layout. The filmstrip reads the assignment from that product, not from the page containing the block. Open the chosen product in Products, enable its filmstrip, choose the preset and gallery, and update it.

On the public page, the filmstrip replaces the gallery block. The editor keeps WooCommerce's native preview. Replace Product Image stays inside the image column. Replace Product Image Full Width stacks the nearest enclosing Columns block so the filmstrip and product details each use the available width. Columns elsewhere on the page are unchanged.

A separate filmstrip shortcode on the page remains a separate slider. Remove it if you only want the gallery inside the product block.

Product templates and variations

Automatic replacement supports classic WooCommerce image hooks and the Product Gallery and Product Image Gallery blocks. This includes Single Product blocks embedded on ordinary pages and product templates using those gallery blocks. For a custom builder that uses neither, place a shortcode at the desired location and manage its surrounding layout in the builder. The position setting does not rearrange a manually placed shortcode.

The gallery displays the categories and media you assigned to it. Choosing a product variation does not automatically replace its images. Normal WooCommerce price, variation and add-to-cart controls remain part of the product details.

Existing shortcode products

Products configured with a shortcode in their full description continue to work until an assignment is saved. The metabox reads that existing selection for you. Save it with the product, then remove the old shortcode from the description. The saved metabox assignment takes priority, including when Enable Filmstrip is off.

If the usual product images still appear

Check that Enable Filmstrip is on in the product metabox, that a preset and gallery are selected, and that the gallery contains media. Update the product to save its assignment. Confirm that you saved the preset and that your product template uses the classic image hooks or a supported WooCommerce gallery block. If you use page caching, clear it after changing the preset.

Settings reference

Find a field by its editor label or setting key. Defaults below are the plugin defaults, not the values currently saved in your site.

General

View 15 settings

Display type

displayType | Default "responsive"

Use "afterparent" to follow the host width and height. Use "responsive" to let the gallery calculate its height from maxHeight, autoScale and autoScaleStartWidth.

Initialize when visible

initializeWhenVisible | Default false

Wait until the host enters the viewport before starting data and media loading.

Deep linking

deepLinking | Default false

Read and write the category and item in the URL hash. Defaults to false when omitted. Enable this on only one gallery per page.

Background color

backgroundColor | Default "#ffffff"

Canvas background color. Match the surrounding page when you want the gallery to blend into the layout.

Max width

maxWidth | Default 1920

Maximum canvas width in CSS pixels for responsive mode. In afterparent mode the host controls the width.

Max height

maxHeight | Default 750

Maximum canvas height in CSS pixels for responsive mode. Values below 450 use the minimum height of 450 pixels. In afterparent mode set a height on the host instead.

Auto scale

autoScale | Default true

In responsive mode, reduce the gallery height on narrower screens toward a minimum of 450 pixels. Has no sizing effect in afterparent mode.

Auto scale start width

autoScaleStartWidth | Default 1200

Container width in CSS pixels below which responsive height starts scaling. Used when autoScale is true.

Show preloader

showPreloader | Default true

Show the flat cover sequence before the filmstrip intro. Video covers use their posters in this sequence.

Preloader image delay

preloaderImageDelay | Default 0.05

Minimum time between cover previews in seconds. Values below 0.05 are clamped to 0.05.

Preloader color

preloaderColor | Default "#000000"

Color of the fallback SVG loader used without a film model. This does not recolor the photo sequence used by the current filmstrip.

Scroll speed strength

scrollSpeedStrength | Default 0.7

Movement sensitivity shared by filmstrip and category navigation. Larger values increase the response to input.

Use black and white

useBlackAndWhite | Default true

Blend side images toward black and white while keeping the active image in color. Applies to the filmstrip and opened category.

Opacity strength

opacityStrength | Default 1

Minimum opacity of filmstrip images away from the center, from 0 to 1. Use 1 to keep side frames fully visible.

Image sharpen strength

imageSharpenStrength | Default 1

Image sharpening amount from 0 to 1. Values above 1 are clamped to 1, including the current index value shown here.

Filmstrip

View 26 settings

Frame width

frameWidth | Default 6.8

Film frame width in scene units. The frameWidth / frameHeight ratio controls the filmstrip photo proportions and related frame previews.

Frame height

frameHeight | Default 5.1

Film frame height in scene units. Category images use their own authored width and height instead of this fixed ratio.

Film strip gap

filmStripGap | Default 0

Extra spacing between neighboring frames in the main horizontal filmstrip, measured in 3D scene units rather than pixels. Use 0 to keep the filmstrip connected. Increase this value to separate its frames. This does not change the spacing between images inside an opened category or the temporary intro spread.

Film strip name

filmStripName | Default "FILMSTRIP PHOTO & VIDEO SLIDER"

Fallback title printed on the film frame. A category name entered in Galleries Manager takes precedence.

Film strip color

filmStripColor | Default "#000000"

Base material color of the GLB holder. Lighting affects the rendered shade. Also used by the category frame previews.

Film strip text color

filmStripTextColor | Default "#d9d9d9"

Color of the labels drawn on the film rails.

Use ribbon mouse wheel

useRibbonMouseWheel | Default false

Enable mouse-wheel and trackpad navigation over the filmstrip. Dragging and touch swiping still work when false.

Infinite

infinite | Default true

Allow the filmstrip to wrap when there are enough frames to cover the view. The gallery falls back to finite navigation when repeating would leave a gap.

Snap

snap | Default false

Settle the filmstrip toward a centered frame after movement. Clicking a frame can center it regardless of this setting.

Use action only on center mesh

useActionOnlyOnCenterMesh | Default false

When true, clicking an off-center filmstrip frame only centers it. Click again once centered to open its category or link. When false, the first click centers the frame and performs its action.

Use film curve

useFilmCurve | Default true

Enable the filmstrip curve. Set false for a straight filmstrip. Category and selector bending have their own settings.

Center frame flatten strength

centerFrameFlattenStrength | Default 0

Flatten the center filmstrip frame, from 0 to 1. A larger value reduces its local bend.

Scroll bend strength

scrollBendStrength | Default 0.7

Extra filmstrip bending caused by movement. Use 0 to remove movement-driven bending while keeping the resting curve.

Scroll scale strength

scrollScaleStrength | Default 0

Scale the filmstrip group in response to movement speed. Use 0 to keep the group scale steady.

Film intro duration

filmIntroDuration | Default 0.9

Base intro fade duration in seconds. The center preview morph and side reveals share a coordinated schedule. Stagger and side delays can extend the full intro.

Film intro stagger delay

filmIntroStaggerDelay | Default 0.05

Additional reveal delay in seconds for each step away from the center frame.

Film intro side delay

filmIntroSideDelay | Default 0.1

Extra reveal delay in seconds for side frames, giving the center frame a head start.

Film intro spread

filmIntroSpread | Default 3.8

Extra spacing measured in frame widths. Used by the filmstrip intro and the category opening, switching and closing transitions. It is not a pixel distance.

X

x | Default 0

Horizontal position of the entire filmstrip group in scene units.

Y

y | Default 0.4

Vertical position of the entire filmstrip group in scene units.

Z

z | Default 0

Depth position of the entire filmstrip group in scene units.

Rotation x

rotationX | Default 0

Rotation of the entire filmstrip group around X, in radians.

Rotation y

rotationY | Default 0

Rotation of the entire filmstrip group around Y, in radians.

Rotation z

rotationZ | Default 0

Rotation of the entire filmstrip group around Z, in radians.

Camera position x

cameraPositionX | Default 0

Horizontal camera offset in scene units.

Camera position y

cameraPositionY | Default 0

Vertical camera offset in scene units.

Category

View 45 settings

Use category mouse wheel

useCategoryMouseWheel | Default false

Enable mouse-wheel and trackpad navigation over the opened category. Independent of filmstrip and dropdown wheel settings.

Category image gap

categoryImageGap | Default 40

Horizontal spacing between images inside an opened category, measured in CSS pixels. Galleries narrower than 600 pixels use half this value. Use filmStripGap to change spacing between the main filmstrip frames instead.

Category bend strength

categoryBendStrength | Default 0.14

Shared bending of category images while moving, clamped from 0 to 1. Use 0 for a flat category row.

Category image background color

categoryImageBackgroundColor | Default "#b8bcc2"

Placeholder color visible before a category image or video poster finishes loading and fading in.

Category switch duration

categorySwitchDuration | Default 0.65

Outgoing fade and incoming reveal timing in seconds when changing categories. Clamped from 0.1 to 2.

Category button color

categoryButtonColor | Default "#111111"

Base color of close and navigation button discs and hover outlines. Difference blending applies only where the controls overlap category photos.

Category button icon color

categoryButtonIconColor | Default "#ffffff"

Color of the symbols inside the category buttons.

Category text color

categoryTextColor | Default "#111111"

Base color of the opened category title, before image-only difference blending.

Category image counter color

categoryImageCounterColor | Default "#707070"

Color of the total image count and separator between the image navigation arrows.

Category current image number color

categoryCurrentImageNumberColor | Default "#000000"

Color of the current image number between the image navigation arrows.

Category caption enabled

categoryCaptionEnabled | Default true

Show captions authored on category images and videos. Items without caption text remain caption-free.

Category caption small viewport width

categoryCaptionSmallViewportWidth | Default 360

Gallery viewport width in CSS pixels at which the small caption values apply. Caption sizing follows the gallery viewport, not the image aspect ratio.

Category caption full size viewport width

categoryCaptionFullSizeViewportWidth | Default 1000

Gallery viewport width in CSS pixels at which the full caption values apply. Values interpolate between the two width thresholds.

Category caption title font family

categoryCaptionTitleFontFamily | Default "Roboto, sans-serif"

CSS font-family used for caption titles. Load the font before constructing the gallery.

Category caption description font family

categoryCaptionDescriptionFontFamily | Default "Roboto, sans-serif"

CSS font-family used for caption descriptions. Load the font before constructing the gallery.

Category caption title font size

categoryCaptionTitleFontSize | Default 23

Full-size caption title font size in CSS pixels, clamped from 1 to 200.

Category caption title font size small

categoryCaptionTitleFontSizeSmall | Default 16

Caption title font size at the small viewport threshold, in CSS pixels.

Category caption description font size

categoryCaptionDescriptionFontSize | Default 15

Full-size caption description font size in CSS pixels, clamped from 1 to 200.

Category caption description font size small

categoryCaptionDescriptionFontSizeSmall | Default 14

Caption description font size at the small viewport threshold, in CSS pixels.

Category caption title font weight

categoryCaptionTitleFontWeight | Default 600

Caption title font weight from 1 to 1000. The strings "normal" and "bold" also map to 400 and 700.

Category caption description font weight

categoryCaptionDescriptionFontWeight | Default 400

Caption description font weight from 1 to 1000. The strings "normal" and "bold" also map to 400 and 700.

Category caption title font style

categoryCaptionTitleFontStyle | Default "normal"

Caption title font style. Accepts "normal", "italic" or "oblique".

Category caption description font style

categoryCaptionDescriptionFontStyle | Default "normal"

Caption description font style. Accepts "normal", "italic" or "oblique".

Category caption title line height

categoryCaptionTitleLineHeight | Default 1.2

Unitless title line-height multiplier from 1 to 4. Applies within a wrapped title, not to the title-to-description gap.

Category caption description line height

categoryCaptionDescriptionLineHeight | Default 1.4

Unitless description line-height multiplier from 1 to 4.

Category caption title letter spacing

categoryCaptionTitleLetterSpacing | Default 0

Additional spacing between title characters in CSS pixels, from -10 to 30.

Category caption description letter spacing

categoryCaptionDescriptionLetterSpacing | Default 0

Additional spacing between description characters in CSS pixels, from -10 to 30.

Category caption title max lines

categoryCaptionTitleMaxLines | Default 2

Maximum title lines from 0 to 20. Use 0 to hide the title block. The caption height budget can reduce the visible text further.

Category caption description max lines

categoryCaptionDescriptionMaxLines | Default 2

Maximum description lines from 0 to 20. Use 0 to hide the description block. The caption height budget can reduce the visible text further.

Category caption title color

categoryCaptionTitleColor | Default "#ffffff"

Caption title text color.

Category caption description color

categoryCaptionDescriptionColor | Default "#d6d8dc"

Caption description text color.

Category caption align

categoryCaptionAlign | Default "left"

Caption text alignment. Accepts "left", "center" or "right".

Category caption padding x

categoryCaptionPaddingX | Default 28

Full-size horizontal inset of the caption from the image edge, in CSS pixels.

Category caption padding xsmall

categoryCaptionPaddingXSmall | Default 12

Horizontal caption inset at the small viewport threshold, in CSS pixels.

Category caption padding y

categoryCaptionPaddingY | Default 26

Full-size inset between the caption and the bottom image edge, in CSS pixels. This is not a browser-edge margin.

Category caption padding ysmall

categoryCaptionPaddingYSmall | Default 14

Bottom caption inset at the small viewport threshold, in CSS pixels.

Category caption gap

categoryCaptionGap | Default 6

Full-size visible gap between the title and description, in CSS pixels. Measured from the drawn text bounds so descenders do not add extra spacing.

Category caption gap small

categoryCaptionGapSmall | Default 2

Title-to-description gap at the small viewport threshold, in CSS pixels.

Category caption max height

categoryCaptionMaxHeight | Default 0.5

Maximum fraction of image height available to the caption, from 0 to 1. Text may be shortened to fit this budget.

Category caption gradient color

categoryCaptionGradientColor | Default "#000000"

Color behind the lower caption area.

Category caption gradient opacity

categoryCaptionGradientOpacity | Default 0.64

Maximum caption gradient opacity from 0 to 1.

Category caption gradient height

categoryCaptionGradientHeight | Default 32

Extra gradient coverage above the full-size caption area, in CSS pixels.

Category caption gradient height small

categoryCaptionGradientHeightSmall | Default 24

Extra gradient coverage at the small viewport threshold, in CSS pixels.

Category caption fade in start

categoryCaptionFadeInStart | Default 0.5

Opening progress at which captions start fading in, from 0 to 0.99. This is a progress fraction, not seconds.

Category caption fade out duration

categoryCaptionFadeOutDuration | Default 0.2

Caption fade-out duration in seconds.

Category selector

View 42 settings

Show category navigation arrows

showCateogryNavigationArrows | Default true

Show previous and next category arrows beside the close button. Keep this exact property spelling, including "Cateogry".

Show category navigation select

showCateogryNavigationSelect | Default true

Show the category dropdown trigger. Independent of the category arrows. Keep this exact property spelling, including "Cateogry".

Category selector text color

categorySelectorTextColor | Default "#707070"

Color of the category navigation label and total category count.

Category selector current number color

categorySelectorCurrentNumberColor | Default "#000000"

Color of the bold current category number beside the category arrows.

Category selector preview width

categorySelectorPreviewWidth | Default 300

Preferred hover preview width in CSS pixels, clamped from 160 to 480. The preview can shrink to fit the gallery.

Category selector preview font family

categorySelectorPreviewFontFamily | Default "Roboto, sans-serif"

CSS font-family used in the category arrow hover preview.

Category selector preview label font size

categorySelectorPreviewLabelFontSize | Default 13

Font size of the previous/next category label and count in the hover preview, in CSS pixels from 8 to 24.

Category selector preview title font size

categorySelectorPreviewTitleFontSize | Default 18

Font size of the destination category title in the hover preview, in CSS pixels from 10 to 32.

Category selector preview label font weight

categorySelectorPreviewLabelFontWeight | Default 400

Hover preview label weight from 100 to 900.

Category selector preview title font weight

categorySelectorPreviewTitleFontWeight | Default 700

Hover preview title weight from 100 to 900.

Category selector preview text gap

categorySelectorPreviewTextGap | Default 8

Gap between the hover preview metadata and category title, in CSS pixels from 0 to 80.

Category selector preview padding top

categorySelectorPreviewPaddingTop | Default 16

Top padding of the text area below the preview frame, in CSS pixels from 0 to 80.

Category selector preview padding x

categorySelectorPreviewPaddingX | Default 18

Horizontal padding of the preview text area, in CSS pixels from 0 to 80.

Category selector preview padding bottom

categorySelectorPreviewPaddingBottom | Default 18

Bottom padding of the preview text area, in CSS pixels from 0 to 80.

Category selector preview label color

categorySelectorPreviewLabelColor | Default "#d9d9d9"

Color of the previous/next category label in the hover preview.

Category selector preview title color

categorySelectorPreviewTitleColor | Default "#ffffff"

Color of the destination category title in the hover preview.

Category selector preview counter color

categorySelectorPreviewCounterColor | Default "#d9d9d9"

Color of the total category count and separator in the hover preview.

Category selector preview current number color

categorySelectorPreviewCurrentNumberColor | Default "#ffffff"

Color of the bold destination category number in the hover preview.

Category selector labels

categorySelectorLabels | Default labels

{
  "heading": "Categories",
  "counter": "{current} / {total}",
  "navigation": "Category navigation",
  "previous": "Previous category: {title}",
  "next": "Next category: {title}",
  "previewPrevious": "Previous category",
  "previewNext": "Next category"
}

Text and accessible labels for category arrows and hover previews. See the label table below for every key and placeholder.

Use category picker mouse wheel

useCategoryPickerMouseWheel | Default false

Enable mouse-wheel and trackpad scrolling inside the vertical category dropdown. Does not change wheel input on the main filmstrip or category images.

Category picker labels

categoryPickerLabels | Default labels

{
  "heading": "COLLECTIONS",
  "mediaCountOne": "{count} item",
  "mediaCountMany": "{count} items",
  "photoCountOne": "{count} photo",
  "photoCountMany": "{count} photos",
  "current": "Currently viewing",
  "open": "Open collection",
  "details": "{photos} · {status}",
  "counter": "{current} / {total}",
  "dialog": "Choose a collection",
  "close": "Close collection picker",
  "scroll": "Scroll collections",
  "option": "{title}, {photos}",
  "chooseCategory": "{title}: choose collection",
  "openCategory": "Open {title}",
  "returnToCategory": "Return to {title}"
}

Text and accessible labels for the category dropdown. See the label table below for every key and placeholder.

Category picker width

categoryPickerWidth | Default 300

Preferred dropdown width in CSS pixels from 220 to 480. It shrinks to fit narrow galleries.

Category picker height

categoryPickerHeight | Default 560

Preferred dropdown height in CSS pixels from 260 to 900. Available gallery space can reduce the actual height.

Category picker frame height

categoryPickerFrameHeight | Default 210

Category thumbnail frame height in CSS pixels from 100 to 400. Frame proportions follow frameWidth and frameHeight.

Category picker bend strength

categoryPickerBendStrength | Default 0.6

Bend strength of the vertical category filmstrip, from 0 to 1. Use 0 for straight thumbnails.

Category picker background color

categoryPickerBackgroundColor | Default "#ffffff"

Background color of the category dropdown.

Category picker text color

categoryPickerTextColor | Default "#111111"

Main dropdown text color and fallback for several more specific colors.

Category picker font family

categoryPickerFontFamily | Default "Roboto, sans-serif"

CSS font-family used throughout the category dropdown.

Category picker header color

categoryPickerHeaderColor | Default "#ffffff"

Background color of the dropdown header area.

Category picker secondary text color

categoryPickerSecondaryTextColor | Default "#707070"

Color of secondary dropdown text, including media count wording and selection status.

Category picker photo count color

categoryPickerPhotoCountColor | Default "#000000"

Color of the bold media count number in the dropdown.

Category picker counter color

categoryPickerCounterColor | Default "#707070"

Color of the total category count and separator in the dropdown.

Category picker current number color

categoryPickerCurrentNumberColor | Default "#000000"

Color of the bold selected category number in the dropdown.

Category picker title color

categoryPickerTitleColor | Default "#111111"

Color of the category title in the dropdown.

Category picker border color

categoryPickerBorderColor | Default "#dddddd"

Color used for the dropdown border.

Category picker shadow color

categoryPickerShadowColor | Default "rgba(0, 0, 0, 0.10)"

CSS color, including rgba(), used by the dropdown shadow.

Category picker focus color

categoryPickerFocusColor | Default "#111111"

Keyboard focus indicator color in the dropdown.

Category picker selection color

categoryPickerSelectionColor | Default "#111111"

Color of the marker beside the selected category. The marker stays on the selected category while other thumbnails are hovered.

Category picker scrollbar track color

categoryPickerScrollbarTrackColor | Default "#dddddd"

Custom scrollbar track color.

Category picker scrollbar thumb color

categoryPickerScrollbarThumbColor | Default "#111111"

Custom scrollbar handle color.

Category picker close button color

categoryPickerCloseButtonColor | Default "#111111"

Dropdown close button disc and outline color.

Category picker close button icon color

categoryPickerCloseButtonIconColor | Default "#ffffff"

Dropdown close button icon color.

Post-processing

View 16 settings

Antialias

antialias | Default true

Smooth geometry edges. The renderer uses multisampling where supported and an FXAA fallback otherwise.

Wave frequency

waveFrequency | Default 0.1

Spatial frequency of the wave distortion. Higher values place more waves across the image. This does not control animation speed.

Wave amplitude

waveAmplitude | Default 0

Wave distortion strength. Use 0 to disable it. The Waves demo uses 0.06 with a frequency of 0.12.

Use flowmap

useFlowmap | Default false

Enable pointer-driven flowmap distortion on the filmstrip and opened category.

Flowmap strength

flowmapStrength | Default 3

Flowmap displacement strength from 0 to 5.

Use noise

useNoise | Default false

Enable noise, blur and edge fading on the shared filmstrip/category rendering.

Noise size

noiseSize | Default 0.4

Controls noise coverage. Smaller values leave a larger clear center. Use 0.12 as a restrained starting point.

Noise fade size

noiseFadeSize | Default 0.2

Width of the edge fade relative to the canvas width. Smaller values narrow the faded region.

Noise blur strength

noiseBlurStrength | Default 0.3

Blur strength in the noise region. The Noise demo uses 0.12.

Noise fade color

noiseFadeColor | Default "#000000"

Color of the outer fade. Use "#ffffff" on a white page.

Grid

grid | Default false

Enable pointer-driven grid displacement. This is an image distortion effect, not a tiled gallery layout.

Grid add rgbdistortion

gridAddRGBDistortion | Default false

Add color-channel separation to the grid effect. The current Grid demo keeps this false.

Grid size

gridSize | Default 24

Number of grid columns. Rows follow the canvas proportions. Use a positive integer. The parser caps the value at 400, so the current index value of 1600 is treated as 400. The Grid demo uses 24.

Grid mouse radius factor

gridMouseRadiusFactor | Default 0.4

Radius of the affected grid area relative to the grid size. Larger values affect more cells. Values above 2 are capped at 2.

Grid mouse strength factor

gridMouseStrengthFactor | Default 0.48

Pointer displacement strength. Values above 2 are capped at 2. The Grid demo uses 0.9.

Grid mouse relaxation

gridMouseRelaxation | Default 0.9

Amount of displacement retained each update. Use a value from 0 to 1. Values nearer 1 take longer to settle.

WooCommerce

View 1 settings

Filmstrip Position

woocommercePosition | Default "replaceProductImage"

In the WooCommerce tab, choose Replace Product Image (replaceProductImage) for the image column beside the product details, or Replace Product Image Full Width (replaceProductImageFullWidth) for a filmstrip across the product content area with the details below. Enable Filmstrip and select the preset and gallery in the product metabox. This setting applies to classic WooCommerce templates and supported WooCommerce gallery blocks.

JavaScript API

For custom integration, each shortcode host exposes its gallery instance through host.filmstrip. You can also use FWDFPAVS.get(hostId). The first host on a page is usually fwdfpavs-gallery-0. Inspect the rendered shortcode host when more than one gallery is present.

This example handles both an existing instance and one that is created later. Add it through your theme or a custom script. The WordPress wrapper emits filmstrip:created on the host and bubbles it to the document.

(() => {
    const hostId = 'fwdfpavs-gallery-0'
    const connected = new WeakSet()

    function connect(gallery) {
        if (connected.has(gallery)) return
        connected.add(gallery)

        gallery.on('categoryOpened', event => {
            console.log('Opened category', event.category)
        })

        if (gallery.isReady) console.log(gallery.getState())
        else gallery.once('ready', () => console.log(gallery.getState()))
    }

    document.addEventListener('filmstrip:created', event => {
        if (event.detail.host.id === hostId) connect(event.detail.gallery)
    })

    const gallery = window.FWDFPAVS?.get(hostId)
    if (gallery) connect(gallery)
})()

Wait for ready before the first navigation call. Methods that request navigation can return false when the target is unavailable or the current transition cannot accept the request.

MethodPurpose
getState()Read the current view, readiness, selection and transition state.
getCategories()Read category metadata and authored media after data is available.
openCategory(id)Open a category by zero-based filmstrip index, exact title, or category ID.
closeCategory()Return to the filmstrip with the reverse transition.
nextCategory() / previousCategory()Switch categories while one is open.
nextItem() / previousItem()Navigate media inside the open category.
goToCategoryItem(id)Center an item by index, deep link ID, generated key, or exact caption title.
goToItem(index)Center a minimized filmstrip frame.
pause() / play()Pause or resume rendering and visible video playback.
resize()Measure the host again after a custom layout change.
destroy()Release the instance, listeners, video playback and GPU resources. Safe during loading and transitions.
on() / off() / once()Subscribe, unsubscribe, or listen for one occurrence of an event.

The wrapper destroys instances when their shortcode hosts are removed from the DOM. FWDFPAVS.refresh() checks for inserted hosts when the runtime is already loaded. It does not fetch the runtime for a page that never loaded a gallery.

See the complete method reference and state reference for arguments, return values, and transition behavior.

Events

Use gallery.on(eventName, callback) to listen to runtime events. Each runtime event includes its type and gallery target. Register listeners before the action you want to observe.

EventsWhen they are useful
dataReady, loadProgress, readyTrack cover loading and gallery readiness. Progress does not count every item in every category.
introStart, introCompleteTrack the filmstrip entrance.
itemUpdateReact when the centered filmstrip frame changes.
categoryChange, categoryOpening, categoryOpenedTrack category selection and entrance.
categoryClosing, categoryClosedTrack return to the filmstrip or the outgoing category during a switch.
categoryItemChangeReact when the nearest category item changes while dragging or navigating.
mediaLoad, mediaError, errorTrack category media loading and reported errors.
deepLinkChange, destroyObserve URL updates or instance cleanup.

Category switching can overlap outgoing and incoming events. Check the event's category and reason rather than assuming every event refers to the newly selected category. The complete event reference includes video, picker, interaction and playback events with their payload fields.

The WordPress wrapper also emits the DOM events filmstrip:created and filmstrip:error. The latter reports initialization failures through event.detail.error.

Troubleshooting

The shortcode shows no gallery

Check that the plugin is active, the preset and gallery names match exactly, and the gallery has a category with at least one saved item. Use a Shortcode block, then preview the published page.

Changes do not appear

Confirm with Update Gallery, Update Galleries, or Update Preset. Check that the shortcode uses the preset you edited. Clear page, optimization and CDN caches. Avoid loading an older copy of the standalone slider alongside the plugin.

A video stays on its poster

Check that the video URL loads, the format and codec are supported by the browser, and the file has a valid poster. Browser autoplay or power-saving restrictions can prevent playback. Test with a known working MP4. Media on another domain must permit cross-origin requests.

Dimensions are empty or invalid

Select the file again with Choose media and wait for detection. The file must be reachable so the browser can read its metadata when attachment dimensions are missing.

Deep links do not open the expected item

Enable Deep linking on the preset actually used by the shortcode. Use unique item IDs and test the URL copied after navigation settles. Only one gallery on a page should own deep linking.

The gallery is slow

Reduce oversized media and video bitrates. Try disabling optional post-processing effects and avoid many simultaneous visible video galleries. Check the browser console and network requests for failed or repeatedly downloaded files.

The product gallery does not change

Enable Filmstrip in the product metabox, select a saved preset and gallery containing media, and update the product. For a Single Product block, configure the product selected in the block. Custom templates need a supported WooCommerce gallery block, classic image hooks, or a manually placed shortcode.

Data and uninstall

Presets and galleries are stored in the WordPress option fwdfpavs_data. Deactivating the plugin keeps the data.

Deleting the plugin also keeps its saved galleries and presets. There is no uninstall cleanup routine or data-deletion option. Uploaded Media Library files are retained.

Keep a database backup before upgrades or uninstalling. See Install and update for the current older-schema reset behavior.

Source files

The plugin includes readable PHP, admin JavaScript and styles, plus the unbundled slider source in source. Runtime changes can be rebuilt with Node.js 22.12 or newer:

cd source
npm ci
npm run build

The build refreshes js/FWDFPAVS.js in the plugin. The Three.js Draco decoder is embedded in the runtime. Third-party licenses are included in the licenses folder.

Plugin runtime assets and Roboto fonts are local. The plugin does not add analytics or telemetry. Media files are fetched by visitors' browsers from their configured URLs.

Support

Open FWD Filmstrip Photo & Video Slider > Support in WordPress, or contact us directly:

Include the page URL, plugin version, browser, and a short description of the steps that reproduce the issue. A screenshot and any browser console error help us identify the problem.

Support page with both email addresses and the contact form button
The Support page is available from the plugin submenu. Shown at 1:1 scale. Scroll horizontally if needed, or click to open the image.