I wanted to create a simple dynamic slider using Advanced Custom Fields, but Soliloquy does not have this option out of the box. After poking around the source of Soliloquy I found the filter soliloquy_custom_slider_data
which lets us add our own slider data. Here is the required code to dynamically generate a slider. (This code is not ACF-specific, you can use any data source.)
Your slider will be available using the shortcode:
[soliloquy type="frontpage"]
The code to generate this dynamic slider:
add_filter('soliloquy_custom_slider_data', function($data, $atts, $post) {
//Bail early if not our slider type
if(isset($atts['type']) && $atts['type'] !== 'frontpage') {
return $data;
}
$data_dynamic = [
'id' => 0,
'slider' => [
//This is where you enter all your dynamic slides!
//72 and 73 below are the IDs of the image attachments used in the slider.
72 => [
'status' => 'active',
'id' => 72,
'attachment_id' => 72,
'title' => 'Image title',
'link' => 'http://example.com',
'alt' => 'Alt text',
'caption' => 'Caption',
'type' => 'image',
'linktab' => 0
],
73 => [
'status' => 'active',
'id' => 73,
'attachment_id' => 73,
'title' => 'Image title',
'link' => 'http://example.com',
'alt' => 'Alt text',
'caption' => 'Caption',
'type' => 'image',
'linktab' => 0
]
],
'config' => [
//This is the general slider config
'type' => 'default',
'slider_theme' => 'base',
'slider_width' => 1080,
'slider_height' => 400,
'transition' => 'fade',
'duration' => 5000,
'speed' => 400,
'gutter' => 20,
'slider' => 1,
'aria_live' => 'polite',
'classes' => [
'frontpage-slider'
],
'title' => '',
'slug' => '',
'rtl' => 0
]
];
return $data_dynamic;
}, 11, 3);
I am using Soliloquy Lite, although I’m sure this works with the paid options as well. You can also easily create multiple dynamic sliders, each pulling data from different sources.