Custom-built homepage sliders often look great at launch, but they can quickly become difficult to manage if clients need to update content, buttons, or links. In this case, a WordPress site had a fully custom slider and button system that required developer intervention for even simple updates.
Freshy stepped in to convert this rigid setup into a flexible, user-friendly solution using Advanced Custom Fields, while also refining styling and improving functionality.
Issue Background
The homepage featured:
- A fully custom slider built with hardcoded HTML, CSS, and JavaScript
- Custom buttons tied to slide navigation
- Styling that needed to match a Figma design more precisely
- Limited flexibility for non-technical users
The client specifically needed:
- The ability to edit slider content and buttons without touching code
- Control over the number of buttons displayed
- Improved styling to match reference designs
- Better handling when more buttons were added
- Updated functionality so buttons could link to pages instead of only controlling slides
Diagnosis
Hardcoded structure limited usability
The slider and buttons were implemented using raw HTML. This meant:
- Content updates required developer access
- Adding or removing buttons required code changes
- No scalable system existed for future updates
Layout issues with dynamic content
When more than three buttons were added:
- Buttons overlapped important slider text
- The layout did not adapt to additional elements
- Mobile responsiveness needed refinement
Confusing UX behavior
Initially, buttons only controlled slide navigation. The client later requested:
- Buttons that link directly to pages
- Separate navigation controls for the slider itself
This required rethinking the interaction model to avoid confusing user behavior.
Resolution Steps
Replace hardcoded content with ACF fields
We implemented Advanced Custom Fields to make the slider editable directly in the WordPress admin.
Each slide included fields for:
- Title
- Description
- Button label
- Button link
- Optional additional buttons
This allowed the client to update content and manage buttons without editing code.
Create a flexible button system
We built a dynamic loop that outputs buttons based on ACF field data.
if( have_rows('slider_buttons') ):
while( have_rows('slider_buttons') ): the_row();
$label = get_sub_field('label');
$link = get_sub_field('link');
echo '<a class="slider-button" href="' . esc_url($link) . '">' . esc_html($label) . '</a>';
endwhile;
endif;
This ensures the number of buttons can change without breaking the layout.
Improve layout for multiple buttons
We updated the styling to support flexible layouts.
.slider-buttons {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.slider-button {
flex: 1 1 auto;
min-width: 120px;
text-align: center;
}
We also defined a practical limit of four buttons per row to maintain visual balance.
Separate navigation from linking behavior
We updated the UX so that:
- Buttons link directly to pages
- Slider navigation is handled by arrows
This creates a more intuitive experience for users.
Match styling to design references
We refined hover effects, transitions, and visual styling to match the provided Figma designs and reference examples.
Final Outcome
The homepage slider is now fully editable, responsive, and aligned with modern UX expectations. The client can manage content and buttons without developer assistance, and the layout adapts cleanly to different scenarios.
If your WordPress site relies on hardcoded components like sliders or custom buttons, converting them to flexible systems using Advanced Custom Fields can significantly improve maintainability.